diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 7b9b54a19bb..dc2968add81 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -72,6 +72,7 @@ go.sum @ajm188 @deepthi @harshit-gangal @mattlord @rohit-nayak-ps @systay @froui /go/vt/vttablet/tabletmanager/rpc_throttler.go @shlomi-noach @mattlord @timvaillancourt /go/vt/vttablet/tabletserver/throttle @shlomi-noach @mattlord @timvaillancourt /go/vt/vttablet/tabletmanager/vreplication @rohit-nayak-ps @mattlord +/go/vt/vttablet/tabletmanager/vdiff @rohit-nayak-ps @mattlord /go/vt/vttablet/tabletmanager/vstreamer @rohit-nayak-ps @mattlord /go/vt/vttablet/tabletserver* @harshit-gangal @systay @shlomi-noach @rohit-nayak-ps @timvaillancourt /go/vt/vttablet/tabletserver/messager @mattlord @rohit-nayak-ps @derekperkins diff --git a/.github/workflows/check_make_vtadmin_web_proto.yml b/.github/workflows/check_make_vtadmin_web_proto.yml index 4df27f4d826..ae7751163e2 100644 --- a/.github/workflows/check_make_vtadmin_web_proto.yml +++ b/.github/workflows/check_make_vtadmin_web_proto.yml @@ -61,7 +61,7 @@ jobs: uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b # v4.0.3 with: # node-version should match package.json - node-version: '20.12.2' + node-version: '22.13.1' - name: Install npm dependencies if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.proto_changes == 'true' diff --git a/.github/workflows/codecov.yml b/.github/workflows/codecov.yml index 35517c4f6c5..c8d4d5704e1 100644 --- a/.github/workflows/codecov.yml +++ b/.github/workflows/codecov.yml @@ -80,8 +80,8 @@ jobs: sudo apparmor_parser -R /etc/apparmor.d/usr.sbin.mysqld || echo "could not remove mysqld profile" mkdir -p dist bin - curl -L https://github.com/coreos/etcd/releases/download/v3.3.10/etcd-v3.3.10-linux-amd64.tar.gz | tar -zxC dist - mv dist/etcd-v3.3.10-linux-amd64/{etcd,etcdctl} bin/ + curl -s -L https://github.com/coreos/etcd/releases/download/v3.5.17/etcd-v3.5.17-linux-amd64.tar.gz | tar -zxC dist + mv dist/etcd-v3.5.17-linux-amd64/{etcd,etcdctl} bin/ go mod download go install golang.org/x/tools/cmd/goimports@latest diff --git a/.github/workflows/static_checks_etc.yml b/.github/workflows/static_checks_etc.yml index 2773d602ec9..b7f14688b95 100644 --- a/.github/workflows/static_checks_etc.yml +++ b/.github/workflows/static_checks_etc.yml @@ -230,7 +230,7 @@ jobs: uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b # v4.0.3 with: # make proto requires newer node than the pre-installed one - node-version: '20.12.2' + node-version: '22.13.1' - name: check_make_proto if: steps.skip-workflow.outputs.skip-workflow == 'false' && steps.changes.outputs.proto_changes == 'true' diff --git a/.github/workflows/unit_race.yml b/.github/workflows/unit_race.yml index 77f47a6c083..3e89b3739fd 100644 --- a/.github/workflows/unit_race.yml +++ b/.github/workflows/unit_race.yml @@ -99,8 +99,8 @@ jobs: sudo apparmor_parser -R /etc/apparmor.d/usr.sbin.mysqld || echo "could not remove mysqld profile" mkdir -p dist bin - curl -s -L https://github.com/coreos/etcd/releases/download/v3.3.10/etcd-v3.3.10-linux-amd64.tar.gz | tar -zxC dist - mv dist/etcd-v3.3.10-linux-amd64/{etcd,etcdctl} bin/ + curl -s -L https://github.com/coreos/etcd/releases/download/v3.5.17/etcd-v3.5.17-linux-amd64.tar.gz | tar -zxC dist + mv dist/etcd-v3.5.17-linux-amd64/{etcd,etcdctl} bin/ go mod download go install golang.org/x/tools/cmd/goimports@latest diff --git a/.github/workflows/unit_race_evalengine.yml b/.github/workflows/unit_race_evalengine.yml index 9654209f2a9..a08c33d5fbe 100644 --- a/.github/workflows/unit_race_evalengine.yml +++ b/.github/workflows/unit_race_evalengine.yml @@ -99,8 +99,8 @@ jobs: sudo apparmor_parser -R /etc/apparmor.d/usr.sbin.mysqld || echo "could not remove mysqld profile" mkdir -p dist bin - curl -s -L https://github.com/coreos/etcd/releases/download/v3.3.10/etcd-v3.3.10-linux-amd64.tar.gz | tar -zxC dist - mv dist/etcd-v3.3.10-linux-amd64/{etcd,etcdctl} bin/ + curl -s -L https://github.com/coreos/etcd/releases/download/v3.5.17/etcd-v3.5.17-linux-amd64.tar.gz | tar -zxC dist + mv dist/etcd-v3.5.17-linux-amd64/{etcd,etcdctl} bin/ go mod download go install golang.org/x/tools/cmd/goimports@latest diff --git a/.github/workflows/unit_test_evalengine_mysql57.yml b/.github/workflows/unit_test_evalengine_mysql57.yml index eea3a5aad57..2edcfa58955 100644 --- a/.github/workflows/unit_test_evalengine_mysql57.yml +++ b/.github/workflows/unit_test_evalengine_mysql57.yml @@ -129,8 +129,8 @@ jobs: sudo apparmor_parser -R /etc/apparmor.d/usr.sbin.mysqld || echo "could not remove mysqld profile" mkdir -p dist bin - curl -s -L https://github.com/coreos/etcd/releases/download/v3.3.10/etcd-v3.3.10-linux-amd64.tar.gz | tar -zxC dist - mv dist/etcd-v3.3.10-linux-amd64/{etcd,etcdctl} bin/ + curl -s -L https://github.com/coreos/etcd/releases/download/v3.5.17/etcd-v3.5.17-linux-amd64.tar.gz | tar -zxC dist + mv dist/etcd-v3.5.17-linux-amd64/{etcd,etcdctl} bin/ go mod download go install golang.org/x/tools/cmd/goimports@latest diff --git a/.github/workflows/unit_test_evalengine_mysql80.yml b/.github/workflows/unit_test_evalengine_mysql80.yml index f48e224808d..be389de1452 100644 --- a/.github/workflows/unit_test_evalengine_mysql80.yml +++ b/.github/workflows/unit_test_evalengine_mysql80.yml @@ -119,8 +119,8 @@ jobs: sudo apparmor_parser -R /etc/apparmor.d/usr.sbin.mysqld || echo "could not remove mysqld profile" mkdir -p dist bin - curl -s -L https://github.com/coreos/etcd/releases/download/v3.3.10/etcd-v3.3.10-linux-amd64.tar.gz | tar -zxC dist - mv dist/etcd-v3.3.10-linux-amd64/{etcd,etcdctl} bin/ + curl -s -L https://github.com/coreos/etcd/releases/download/v3.5.17/etcd-v3.5.17-linux-amd64.tar.gz | tar -zxC dist + mv dist/etcd-v3.5.17-linux-amd64/{etcd,etcdctl} bin/ go mod download go install golang.org/x/tools/cmd/goimports@latest diff --git a/.github/workflows/unit_test_evalengine_mysql84.yml b/.github/workflows/unit_test_evalengine_mysql84.yml index 6b373d96812..d96e68a857d 100644 --- a/.github/workflows/unit_test_evalengine_mysql84.yml +++ b/.github/workflows/unit_test_evalengine_mysql84.yml @@ -119,8 +119,8 @@ jobs: sudo apparmor_parser -R /etc/apparmor.d/usr.sbin.mysqld || echo "could not remove mysqld profile" mkdir -p dist bin - curl -s -L https://github.com/coreos/etcd/releases/download/v3.3.10/etcd-v3.3.10-linux-amd64.tar.gz | tar -zxC dist - mv dist/etcd-v3.3.10-linux-amd64/{etcd,etcdctl} bin/ + curl -s -L https://github.com/coreos/etcd/releases/download/v3.5.17/etcd-v3.5.17-linux-amd64.tar.gz | tar -zxC dist + mv dist/etcd-v3.5.17-linux-amd64/{etcd,etcdctl} bin/ go mod download go install golang.org/x/tools/cmd/goimports@latest diff --git a/.github/workflows/unit_test_mysql57.yml b/.github/workflows/unit_test_mysql57.yml index 3644170ebdc..41727bfc53c 100644 --- a/.github/workflows/unit_test_mysql57.yml +++ b/.github/workflows/unit_test_mysql57.yml @@ -129,8 +129,8 @@ jobs: sudo apparmor_parser -R /etc/apparmor.d/usr.sbin.mysqld || echo "could not remove mysqld profile" mkdir -p dist bin - curl -s -L https://github.com/coreos/etcd/releases/download/v3.3.10/etcd-v3.3.10-linux-amd64.tar.gz | tar -zxC dist - mv dist/etcd-v3.3.10-linux-amd64/{etcd,etcdctl} bin/ + curl -s -L https://github.com/coreos/etcd/releases/download/v3.5.17/etcd-v3.5.17-linux-amd64.tar.gz | tar -zxC dist + mv dist/etcd-v3.5.17-linux-amd64/{etcd,etcdctl} bin/ go mod download go install golang.org/x/tools/cmd/goimports@latest diff --git a/.github/workflows/unit_test_mysql80.yml b/.github/workflows/unit_test_mysql80.yml index 18bfa546124..0ac43a1da01 100644 --- a/.github/workflows/unit_test_mysql80.yml +++ b/.github/workflows/unit_test_mysql80.yml @@ -119,8 +119,8 @@ jobs: sudo apparmor_parser -R /etc/apparmor.d/usr.sbin.mysqld || echo "could not remove mysqld profile" mkdir -p dist bin - curl -s -L https://github.com/coreos/etcd/releases/download/v3.3.10/etcd-v3.3.10-linux-amd64.tar.gz | tar -zxC dist - mv dist/etcd-v3.3.10-linux-amd64/{etcd,etcdctl} bin/ + curl -s -L https://github.com/coreos/etcd/releases/download/v3.5.17/etcd-v3.5.17-linux-amd64.tar.gz | tar -zxC dist + mv dist/etcd-v3.5.17-linux-amd64/{etcd,etcdctl} bin/ go mod download go install golang.org/x/tools/cmd/goimports@latest diff --git a/.github/workflows/unit_test_mysql84.yml b/.github/workflows/unit_test_mysql84.yml index 10b3c2b8a6c..8371bf13826 100644 --- a/.github/workflows/unit_test_mysql84.yml +++ b/.github/workflows/unit_test_mysql84.yml @@ -119,8 +119,8 @@ jobs: sudo apparmor_parser -R /etc/apparmor.d/usr.sbin.mysqld || echo "could not remove mysqld profile" mkdir -p dist bin - curl -s -L https://github.com/coreos/etcd/releases/download/v3.3.10/etcd-v3.3.10-linux-amd64.tar.gz | tar -zxC dist - mv dist/etcd-v3.3.10-linux-amd64/{etcd,etcdctl} bin/ + curl -s -L https://github.com/coreos/etcd/releases/download/v3.5.17/etcd-v3.5.17-linux-amd64.tar.gz | tar -zxC dist + mv dist/etcd-v3.5.17-linux-amd64/{etcd,etcdctl} bin/ go mod download go install golang.org/x/tools/cmd/goimports@latest diff --git a/.github/workflows/update_golang_dependencies.yml b/.github/workflows/update_golang_dependencies.yml index e2a3e7bd847..3bf7f71b832 100644 --- a/.github/workflows/update_golang_dependencies.yml +++ b/.github/workflows/update_golang_dependencies.yml @@ -16,17 +16,17 @@ jobs: name: Update Golang Dependencies runs-on: ubuntu-24.04 steps: - - name: Set up Go - uses: actions/setup-go@0a12ed9d6a96ab950c8f026ed9f722fe0da7ef32 # v5.0.2 - with: - go-version-file: go.mod - - name: Check out code uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 with: ref: main persist-credentials: 'false' + - name: Set up Go + uses: actions/setup-go@0a12ed9d6a96ab950c8f026ed9f722fe0da7ef32 # v5.0.2 + with: + go-version-file: go.mod + - name: Upgrade the Golang Dependencies id: detect-and-update run: | diff --git a/.github/workflows/vtadmin_web_build.yml b/.github/workflows/vtadmin_web_build.yml index 582f8b57647..1c3f4a93175 100644 --- a/.github/workflows/vtadmin_web_build.yml +++ b/.github/workflows/vtadmin_web_build.yml @@ -44,7 +44,7 @@ jobs: if: steps.skip-workflow.outputs.skip-workflow == 'false' with: # node-version should match package.json - node-version: '20.12.2' + node-version: '22.13.1' - name: Install dependencies if: steps.skip-workflow.outputs.skip-workflow == 'false' diff --git a/.github/workflows/vtadmin_web_lint.yml b/.github/workflows/vtadmin_web_lint.yml index 570867f821a..403b978dd98 100644 --- a/.github/workflows/vtadmin_web_lint.yml +++ b/.github/workflows/vtadmin_web_lint.yml @@ -44,7 +44,7 @@ jobs: if: steps.skip-workflow.outputs.skip-workflow == 'false' with: # node-version should match package.json - node-version: '20.12.2' + node-version: '22.13.1' - name: Install dependencies if: steps.skip-workflow.outputs.skip-workflow == 'false' diff --git a/.github/workflows/vtadmin_web_unit_tests.yml b/.github/workflows/vtadmin_web_unit_tests.yml index 0138f06b2b7..6665936175f 100644 --- a/.github/workflows/vtadmin_web_unit_tests.yml +++ b/.github/workflows/vtadmin_web_unit_tests.yml @@ -44,7 +44,7 @@ jobs: if: steps.skip-workflow.outputs.skip-workflow == 'false' with: # node-version should match package.json - node-version: '20.12.2' + node-version: '22.13.1' - name: Install dependencies if: steps.skip-workflow.outputs.skip-workflow == 'false' diff --git a/build.env b/build.env index 12431842b6e..6818975103f 100755 --- a/build.env +++ b/build.env @@ -29,7 +29,7 @@ export VTDATAROOT="${VTDATAROOT:-${VTROOT}/vtdataroot}" export PATH="$PWD/bin:$PATH" export PROTOC_VER=21.3 export ZK_VER=${ZK_VERSION:-3.8.0} -export ETCD_VER=v3.5.6 +export ETCD_VER=v3.5.17 export CONSUL_VER=1.11.4 export TOXIPROXY_VER=v2.7.0 diff --git a/changelog/22.0/22.0.0/summary.md b/changelog/22.0/22.0.0/summary.md index cbb1f37889c..f773df2b10c 100644 --- a/changelog/22.0/22.0.0/summary.md +++ b/changelog/22.0/22.0.0/summary.md @@ -15,10 +15,13 @@ - **[Stalled Disk Recovery in VTOrc](#stall-disk-recovery)** - **[Update default MySQL version to 8.0.40](#mysql-8-0-40)** - **[Update lite images to Debian Bookworm](#debian-bookworm)** + - **[KeyRanges in `--clusters_to_watch` in VTOrc](#key-range-vtorc)** - **[Support for Filtering Query logs on Error](#query-logs)** - **[Minor Changes](#minor-changes)** - **[VTTablet Flags](#flags-vttablet)** - **[Topology read concurrency behaviour changes](#topo-read-concurrency-changes)** + - **[VTAdmin](#vtadmin)** + - [Updated to node v22.13.1](#updated-node) ## Major Changes @@ -133,6 +136,11 @@ This is the last time this will be needed in the `8.0.x` series, as starting wit The base system now uses Debian Bookworm instead of Debian Bullseye for the `vitess/lite` images. This change was brought by [Pull Request #17552]. +### KeyRanges in `--clusters_to_watch` in VTOrc +VTOrc now supports specifying keyranges in the `--clusters_to_watch` flag. This means that there is no need to restart a VTOrc instance with a different flag value when you reshard a keyspace. +For example, if a VTOrc is configured to watch `ks/-80`, then it would watch all the shards that fall under the keyrange `-80`. If a reshard is performed and `-80` is split into new shards `-40` and `40-80`, the VTOrc instance will automatically start watching the new shards without needing a restart. In the previous logic, specifying `ks/-80` for the flag would mean that VTOrc would watch only 1 (or no) shard. In the new system, since we interpret `-80` as a key range, it can watch multiple shards as described in the example. +Users can continue to specify exact keyranges. The new feature is backward compatible. + ### Support for Filtering Query logs on Error The `querylog-mode` setting can be configured to `error` to log only queries that result in errors. This option is supported in both VTGate and VTTablet. @@ -145,8 +153,17 @@ The `querylog-mode` setting can be configured to `error` to log only queries tha While the flag will continue to accept float values (interpreted as seconds) for backward compatibility, **float inputs are deprecated** and will be removed in a future release. +- `--consolidator-query-waiter-cap` flag to set the maximum number of clients allowed to wait on the consolidator. The default value is set to 0 for unlimited wait. Users can adjust this value based on the performance of VTTablet to avoid excessive memory usage and the risk of being OOMKilled, particularly in Kubernetes deployments. + ### `--topo_read_concurrency` behaviour changes The `--topo_read_concurrency` flag was added to all components that access the topology and the provided limit is now applied separately for each global or local cell _(default `32`)_. All topology read calls _(`Get`, `GetVersion`, `List` and `ListDir`)_ now respect this per-cell limit. Previous to this version a single limit was applied to all cell calls and it was not respected by many topology calls. + +### VTAdmin + +#### vtadmin-web updated to node v22.13.1 (LTS) + +Building `vtadmin-web` now requires node >= v22.13.0 (LTS). Breaking changes from v20 to v22 can be found at https://nodejs.org/en/blog/release/v22.13.0 -- with no known issues that apply to VTAdmin. +Full details on the node v20.12.2 release can be found at https://nodejs.org/en/blog/release/v22.13.1. diff --git a/doc/internal/release/how-to-release.md b/doc/internal/release/how-to-release.md index 08411f9c0ac..97e58a074d7 100644 --- a/doc/internal/release/how-to-release.md +++ b/doc/internal/release/how-to-release.md @@ -364,7 +364,8 @@ You will need administrator privileges on the vitess repository to be able to ma ```bash cd ./java/ - mvn clean deploy -P release -DskipTests + # For <= v21.0, we must use -DskipTests in the mvn command below + mvn clean deploy -P release cd .. ``` diff --git a/docker/binaries/vtadmin/Dockerfile b/docker/binaries/vtadmin/Dockerfile index b700f8ab74b..c51527c1f39 100644 --- a/docker/binaries/vtadmin/Dockerfile +++ b/docker/binaries/vtadmin/Dockerfile @@ -17,7 +17,7 @@ ARG DEBIAN_VER=bookworm-slim FROM vitess/lite:${VT_BASE_VER} AS lite -FROM node:20-${DEBIAN_VER} as node +FROM node:22-${DEBIAN_VER} as node # Prepare directory structure. RUN mkdir -p /vt/web diff --git a/docker/mini/install_mini_dependencies.sh b/docker/mini/install_mini_dependencies.sh index 03a97cc0962..754249b7d49 100755 --- a/docker/mini/install_mini_dependencies.sh +++ b/docker/mini/install_mini_dependencies.sh @@ -8,7 +8,7 @@ set -euo pipefail # Install etcd -ETCD_VER=v3.4.9 +ETCD_VER=v3.5.17 DOWNLOAD_URL=https://storage.googleapis.com/etcd curl -k -L ${DOWNLOAD_URL}/${ETCD_VER}/etcd-${ETCD_VER}-linux-amd64.tar.gz -o /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz diff --git a/go.mod b/go.mod index 81f6fcb141f..d4e98fda37a 100644 --- a/go.mod +++ b/go.mod @@ -3,7 +3,7 @@ module vitess.io/vitess go 1.23.5 require ( - cloud.google.com/go/storage v1.46.0 + cloud.google.com/go/storage v1.50.0 github.com/AdaLogics/go-fuzz-headers v0.0.0-20240806141605-e8a1dd7889d6 github.com/Azure/azure-pipeline-go v0.2.3 github.com/Azure/azure-storage-blob-go v0.15.0 @@ -14,7 +14,7 @@ require ( github.com/cespare/xxhash/v2 v2.3.0 github.com/corpix/uarand v0.1.1 // indirect github.com/dave/jennifer v1.7.1 - github.com/evanphx/json-patch v5.9.0+incompatible + github.com/evanphx/json-patch v5.9.11+incompatible github.com/fsnotify/fsnotify v1.8.0 github.com/go-sql-driver/mysql v1.7.1 github.com/golang/glog v1.2.4 @@ -27,18 +27,18 @@ require ( github.com/gorilla/mux v1.8.1 github.com/grpc-ecosystem/go-grpc-middleware v1.4.0 github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 - github.com/hashicorp/consul/api v1.30.0 + github.com/hashicorp/consul/api v1.31.0 github.com/hashicorp/go-immutable-radix v1.3.1 // indirect - github.com/hashicorp/serf v0.10.1 // indirect + github.com/hashicorp/serf v0.10.2 // indirect github.com/icrowley/fake v0.0.0-20180203215853-4178557ae428 github.com/klauspost/compress v1.17.11 github.com/klauspost/pgzip v1.2.6 github.com/krishicks/yaml-patch v0.0.10 - github.com/magiconair/properties v1.8.7 // indirect + github.com/magiconair/properties v1.8.9 // indirect github.com/minio/minio-go v0.0.0-20190131015406-c8a261de75c1 github.com/montanaflynn/stats v0.7.1 github.com/olekukonko/tablewriter v0.0.5 - github.com/opentracing-contrib/go-grpc v0.1.0 + github.com/opentracing-contrib/go-grpc v0.1.1 github.com/opentracing/opentracing-go v1.2.0 github.com/patrickmn/go-cache v2.1.0+incompatible github.com/philhofer/fwd v1.1.3-0.20240916144458-20a13a1f6b7c // indirect @@ -46,41 +46,41 @@ require ( github.com/pires/go-proxyproto v0.8.0 github.com/pkg/errors v0.9.1 github.com/planetscale/pargzip v0.0.0-20201116224723-90c7fc03ea8a - github.com/planetscale/vtprotobuf v0.6.1-0.20241011083415-71c992bc3c87 + github.com/planetscale/vtprotobuf v0.6.1-0.20241121165744-79df5c4772f2 github.com/prometheus/client_golang v1.20.5 - github.com/prometheus/common v0.60.1 + github.com/prometheus/common v0.62.0 github.com/sjmudd/stopwatch v0.1.1 github.com/soheilhy/cmux v0.1.5 github.com/spf13/cobra v1.8.1 - github.com/spf13/pflag v1.0.5 + github.com/spf13/pflag v1.0.6 github.com/spf13/viper v1.19.0 - github.com/stretchr/testify v1.9.0 + github.com/stretchr/testify v1.10.0 github.com/tchap/go-patricia v2.3.0+incompatible github.com/tidwall/gjson v1.18.0 - github.com/tinylib/msgp v1.2.4 // indirect + github.com/tinylib/msgp v1.2.5 // indirect github.com/uber/jaeger-client-go v2.30.0+incompatible github.com/uber/jaeger-lib v2.4.1+incompatible // indirect github.com/yudai/golcs v0.0.0-20170316035057-ecda9a501e82 github.com/z-division/go-zookeeper v1.0.0 - go.etcd.io/etcd/api/v3 v3.5.17 - go.etcd.io/etcd/client/pkg/v3 v3.5.17 - go.etcd.io/etcd/client/v3 v3.5.17 - go.uber.org/mock v0.2.0 - golang.org/x/crypto v0.31.0 // indirect - golang.org/x/mod v0.22.0 // indirect - golang.org/x/net v0.33.0 - golang.org/x/oauth2 v0.24.0 - golang.org/x/sys v0.28.0 - golang.org/x/term v0.27.0 - golang.org/x/text v0.21.0 // indirect - golang.org/x/time v0.8.0 - golang.org/x/tools v0.27.0 - google.golang.org/api v0.205.0 - google.golang.org/genproto v0.0.0-20241113202542-65e8d215514f // indirect - google.golang.org/grpc v1.68.0 - google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.3.0 - google.golang.org/grpc/examples v0.0.0-20210430044426-28078834f35b - google.golang.org/protobuf v1.35.1 + go.etcd.io/etcd/api/v3 v3.5.18 + go.etcd.io/etcd/client/pkg/v3 v3.5.18 + go.etcd.io/etcd/client/v3 v3.5.18 + go.uber.org/mock v0.5.0 + golang.org/x/crypto v0.32.0 // indirect + golang.org/x/mod v0.23.0 // indirect + golang.org/x/net v0.34.0 + golang.org/x/oauth2 v0.26.0 + golang.org/x/sys v0.30.0 + golang.org/x/term v0.29.0 + golang.org/x/text v0.22.0 // indirect + golang.org/x/time v0.10.0 + golang.org/x/tools v0.29.0 + google.golang.org/api v0.219.0 + google.golang.org/genproto v0.0.0-20250204164813-702378808489 // indirect + google.golang.org/grpc v1.70.0 + google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.5.1 + google.golang.org/grpc/examples v0.0.0-20250204041003-947e2a4be2ba + google.golang.org/protobuf v1.36.4 gopkg.in/DataDog/dd-trace-go.v1 v1.69.1 gopkg.in/asn1-ber.v1 v1.0.0-20181015200546-f715ec2f112d // indirect gopkg.in/ldap.v2 v2.5.1 @@ -88,98 +88,96 @@ require ( ) require ( - github.com/DataDog/datadog-go/v5 v5.5.0 + github.com/DataDog/datadog-go/v5 v5.6.0 github.com/Shopify/toxiproxy/v2 v2.11.0 - github.com/aws/aws-sdk-go-v2 v1.32.4 - github.com/aws/aws-sdk-go-v2/config v1.28.3 - github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.17.37 - github.com/aws/aws-sdk-go-v2/service/s3 v1.66.3 - github.com/aws/smithy-go v1.22.0 + github.com/aws/aws-sdk-go-v2 v1.36.0 + github.com/aws/aws-sdk-go-v2/config v1.29.4 + github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.17.57 + github.com/aws/aws-sdk-go-v2/service/s3 v1.75.2 + github.com/aws/smithy-go v1.22.2 github.com/bndr/gotabulate v1.1.2 github.com/dustin/go-humanize v1.0.1 - github.com/gammazero/deque v0.2.1 + github.com/gammazero/deque v1.0.0 github.com/google/safehtml v0.1.0 github.com/hashicorp/go-version v1.7.0 github.com/kr/pretty v0.3.1 github.com/kr/text v0.2.0 - github.com/mitchellh/mapstructure v1.5.0 + github.com/mitchellh/mapstructure v1.5.1-0.20231216201459-8508981c8b6c github.com/nsf/jsondiff v0.0.0-20210926074059-1e845ec5d249 - github.com/spf13/afero v1.11.0 + github.com/spf13/afero v1.12.0 github.com/spf13/jwalterweatherman v1.1.0 github.com/xlab/treeprint v1.2.0 go.uber.org/goleak v1.3.0 - golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f - golang.org/x/sync v0.10.0 - gonum.org/v1/gonum v0.14.0 - modernc.org/sqlite v1.33.1 + golang.org/x/exp v0.0.0-20250128182459-e0ece0dbea4c + golang.org/x/sync v0.11.0 + gonum.org/v1/gonum v0.15.1 + modernc.org/sqlite v1.34.5 ) require ( - cel.dev/expr v0.18.0 // indirect - cloud.google.com/go v0.116.0 // indirect - cloud.google.com/go/auth v0.10.2 // indirect - cloud.google.com/go/auth/oauth2adapt v0.2.5 // indirect - cloud.google.com/go/compute/metadata v0.5.2 // indirect - cloud.google.com/go/iam v1.2.2 // indirect - cloud.google.com/go/monitoring v1.21.2 // indirect - github.com/DataDog/appsec-internal-go v1.9.0 // indirect - github.com/DataDog/datadog-agent/pkg/obfuscate v0.59.0 // indirect - github.com/DataDog/datadog-agent/pkg/remoteconfig/state v0.59.0 // indirect + cel.dev/expr v0.19.2 // indirect + cloud.google.com/go v0.118.1 // indirect + cloud.google.com/go/auth v0.14.1 // indirect + cloud.google.com/go/auth/oauth2adapt v0.2.7 // indirect + cloud.google.com/go/compute/metadata v0.6.0 // indirect + cloud.google.com/go/iam v1.3.1 // indirect + cloud.google.com/go/monitoring v1.23.0 // indirect + github.com/DataDog/appsec-internal-go v1.10.0 // indirect + github.com/DataDog/datadog-agent/pkg/obfuscate v0.62.1 // indirect + github.com/DataDog/datadog-agent/pkg/remoteconfig/state v0.62.1 // indirect github.com/DataDog/go-libddwaf/v3 v3.5.1 // indirect - github.com/DataDog/go-sqllexer v0.0.17 // indirect + github.com/DataDog/go-sqllexer v0.0.20 // indirect github.com/DataDog/go-tuf v1.1.0-0.5.2 // indirect github.com/DataDog/sketches-go v1.4.6 // indirect - github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.25.0 // indirect - github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.49.0 // indirect - github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.49.0 // indirect + github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.26.0 // indirect + github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.50.0 // indirect + github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.50.0 // indirect github.com/Microsoft/go-winio v0.6.2 // indirect - github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.6 // indirect - github.com/aws/aws-sdk-go-v2/credentials v1.17.44 // indirect - github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.19 // indirect - github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.23 // indirect - github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.23 // indirect - github.com/aws/aws-sdk-go-v2/internal/ini v1.8.1 // indirect - github.com/aws/aws-sdk-go-v2/internal/v4a v1.3.23 // indirect - github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.0 // indirect - github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.4.4 // indirect - github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.4 // indirect - github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.18.4 // indirect - github.com/aws/aws-sdk-go-v2/service/sso v1.24.5 // indirect - github.com/aws/aws-sdk-go-v2/service/ssooidc v1.28.4 // indirect - github.com/aws/aws-sdk-go-v2/service/sts v1.32.4 // indirect + github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.8 // indirect + github.com/aws/aws-sdk-go-v2/credentials v1.17.57 // indirect + github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.27 // indirect + github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.31 // indirect + github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.31 // indirect + github.com/aws/aws-sdk-go-v2/internal/ini v1.8.2 // indirect + github.com/aws/aws-sdk-go-v2/internal/v4a v1.3.31 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.2 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.5.5 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.12 // indirect + github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.18.12 // indirect + github.com/aws/aws-sdk-go-v2/service/sso v1.24.14 // indirect + github.com/aws/aws-sdk-go-v2/service/ssooidc v1.28.13 // indirect + github.com/aws/aws-sdk-go-v2/service/sts v1.33.12 // indirect github.com/beorn7/perks v1.0.1 // indirect - github.com/census-instrumentation/opencensus-proto v0.4.1 // indirect - github.com/cncf/xds/go v0.0.0-20240905190251-b4127c9b8d78 // indirect + github.com/cncf/xds/go v0.0.0-20250121191232-2f005788dc42 // indirect github.com/coreos/go-semver v0.3.1 // indirect github.com/coreos/go-systemd/v22 v22.5.0 // indirect - github.com/cpuguy83/go-md2man/v2 v2.0.5 // indirect + github.com/cpuguy83/go-md2man/v2 v2.0.6 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/eapache/queue/v2 v2.0.0-20230407133247-75960ed334e4 // indirect - github.com/ebitengine/purego v0.8.1 // indirect - github.com/envoyproxy/go-control-plane v0.13.1 // indirect - github.com/envoyproxy/protoc-gen-validate v1.1.0 // indirect + github.com/ebitengine/purego v0.8.2 // indirect + github.com/envoyproxy/go-control-plane/envoy v1.32.4 // indirect + github.com/envoyproxy/protoc-gen-validate v1.2.1 // indirect github.com/fatih/color v1.18.0 // indirect github.com/felixge/httpsnoop v1.0.4 // indirect github.com/go-logr/logr v1.4.2 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/gogo/protobuf v1.3.2 // indirect - github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect - github.com/google/s2a-go v0.1.8 // indirect + github.com/google/s2a-go v0.1.9 // indirect github.com/googleapis/enterprise-certificate-proxy v0.3.4 // indirect - github.com/googleapis/gax-go/v2 v2.14.0 // indirect + github.com/googleapis/gax-go/v2 v2.14.1 // indirect github.com/hashicorp/errwrap v1.1.0 // indirect github.com/hashicorp/go-cleanhttp v0.5.2 // indirect github.com/hashicorp/go-hclog v1.6.3 // indirect + github.com/hashicorp/go-metrics v0.5.4 // indirect github.com/hashicorp/go-multierror v1.1.1 // indirect github.com/hashicorp/go-rootcerts v1.0.2 // indirect - github.com/hashicorp/go-secure-stdlib/parseutil v0.1.8 // indirect + github.com/hashicorp/go-secure-stdlib/parseutil v0.1.9 // indirect github.com/hashicorp/go-secure-stdlib/strutil v0.1.2 // indirect github.com/hashicorp/go-sockaddr v1.0.7 // indirect github.com/hashicorp/golang-lru v1.0.2 // indirect - github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect github.com/hashicorp/hcl v1.0.1-vault-7 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect - github.com/mattn/go-colorable v0.1.13 // indirect + github.com/mattn/go-colorable v0.1.14 // indirect github.com/mattn/go-ieproxy v0.0.12 // indirect github.com/mattn/go-isatty v0.0.20 // indirect github.com/mattn/go-runewidth v0.0.16 // indirect @@ -198,37 +196,33 @@ require ( github.com/rogpeppe/go-internal v1.13.1 // indirect github.com/russross/blackfriday/v2 v2.1.0 // indirect github.com/ryanuber/go-glob v1.0.0 // indirect - github.com/sagikazarmark/locafero v0.6.0 // indirect + github.com/sagikazarmark/locafero v0.7.0 // indirect github.com/sagikazarmark/slog-shim v0.1.0 // indirect - github.com/secure-systems-lab/go-securesystemslib v0.8.0 // indirect + github.com/secure-systems-lab/go-securesystemslib v0.9.0 // indirect github.com/sourcegraph/conc v0.3.0 // indirect - github.com/spf13/cast v1.7.0 // indirect + github.com/spf13/cast v1.7.1 // indirect github.com/subosito/gotenv v1.6.0 // indirect github.com/tidwall/match v1.1.1 // indirect github.com/tidwall/pretty v1.2.1 // indirect - go.opencensus.io v0.24.0 // indirect - go.opentelemetry.io/contrib/detectors/gcp v1.32.0 // indirect - go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.57.0 // indirect - go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.57.0 // indirect - go.opentelemetry.io/otel v1.32.0 // indirect - go.opentelemetry.io/otel/metric v1.32.0 // indirect - go.opentelemetry.io/otel/sdk v1.32.0 // indirect - go.opentelemetry.io/otel/sdk/metric v1.32.0 // indirect - go.opentelemetry.io/otel/trace v1.32.0 // indirect + go.opentelemetry.io/auto/sdk v1.1.0 // indirect + go.opentelemetry.io/contrib/detectors/gcp v1.34.0 // indirect + go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.59.0 // indirect + go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.59.0 // indirect + go.opentelemetry.io/otel v1.34.0 // indirect + go.opentelemetry.io/otel/metric v1.34.0 // indirect + go.opentelemetry.io/otel/sdk v1.34.0 // indirect + go.opentelemetry.io/otel/sdk/metric v1.34.0 // indirect + go.opentelemetry.io/otel/trace v1.34.0 // indirect go.uber.org/atomic v1.11.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.uber.org/zap v1.27.0 // indirect golang.org/x/xerrors v0.0.0-20240903120638-7835f813f4da // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20241113202542-65e8d215514f // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20241113202542-65e8d215514f // indirect - google.golang.org/grpc/stats/opentelemetry v0.0.0-20241028142157-ada6787961b3 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20250204164813-702378808489 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20250204164813-702378808489 // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect - modernc.org/gc/v3 v3.0.0-20241004144649-1aea3fae8852 // indirect - modernc.org/libc v1.61.0 // indirect - modernc.org/mathutil v1.6.0 // indirect - modernc.org/memory v1.8.0 // indirect - modernc.org/strutil v1.2.0 // indirect - modernc.org/token v1.1.0 // indirect + modernc.org/libc v1.61.11 // indirect + modernc.org/mathutil v1.7.1 // indirect + modernc.org/memory v1.8.2 // indirect ) diff --git a/go.sum b/go.sum index 4d25efb17fa..b4d8092871b 100644 --- a/go.sum +++ b/go.sum @@ -1,27 +1,27 @@ -cel.dev/expr v0.18.0 h1:CJ6drgk+Hf96lkLikr4rFf19WrU0BOWEihyZnI2TAzo= -cel.dev/expr v0.18.0/go.mod h1:MrpN08Q+lEBs+bGYdLxxHkZoUSsCp0nSKTs0nTymJgw= +cel.dev/expr v0.19.2 h1:V354PbqIXr9IQdwy4SYA4xa0HXaWq1BUPAGzugBY5V4= +cel.dev/expr v0.19.2/go.mod h1:MrpN08Q+lEBs+bGYdLxxHkZoUSsCp0nSKTs0nTymJgw= cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -cloud.google.com/go v0.116.0 h1:B3fRrSDkLRt5qSHWe40ERJvhvnQwdZiHu0bJOpldweE= -cloud.google.com/go v0.116.0/go.mod h1:cEPSRWPzZEswwdr9BxE6ChEn01dWlTaF05LiC2Xs70U= -cloud.google.com/go/auth v0.10.2 h1:oKF7rgBfSHdp/kuhXtqU/tNDr0mZqhYbEh+6SiqzkKo= -cloud.google.com/go/auth v0.10.2/go.mod h1:xxA5AqpDrvS+Gkmo9RqrGGRh6WSNKKOXhY3zNOr38tI= -cloud.google.com/go/auth/oauth2adapt v0.2.5 h1:2p29+dePqsCHPP1bqDJcKj4qxRyYCcbzKpFyKGt3MTk= -cloud.google.com/go/auth/oauth2adapt v0.2.5/go.mod h1:AlmsELtlEBnaNTL7jCj8VQFLy6mbZv0s4Q7NGBeQ5E8= -cloud.google.com/go/compute/metadata v0.5.2 h1:UxK4uu/Tn+I3p2dYWTfiX4wva7aYlKixAHn3fyqngqo= -cloud.google.com/go/compute/metadata v0.5.2/go.mod h1:C66sj2AluDcIqakBq/M8lw8/ybHgOZqin2obFxa/E5k= -cloud.google.com/go/iam v1.2.2 h1:ozUSofHUGf/F4tCNy/mu9tHLTaxZFLOUiKzjcgWHGIA= -cloud.google.com/go/iam v1.2.2/go.mod h1:0Ys8ccaZHdI1dEUilwzqng/6ps2YB6vRsjIe00/+6JY= -cloud.google.com/go/logging v1.12.0 h1:ex1igYcGFd4S/RZWOCU51StlIEuey5bjqwH9ZYjHibk= -cloud.google.com/go/logging v1.12.0/go.mod h1:wwYBt5HlYP1InnrtYI0wtwttpVU1rifnMT7RejksUAM= -cloud.google.com/go/longrunning v0.6.2 h1:xjDfh1pQcWPEvnfjZmwjKQEcHnpz6lHjfy7Fo0MK+hc= -cloud.google.com/go/longrunning v0.6.2/go.mod h1:k/vIs83RN4bE3YCswdXC5PFfWVILjm3hpEUlSko4PiI= -cloud.google.com/go/monitoring v1.21.2 h1:FChwVtClH19E7pJ+e0xUhJPGksctZNVOk2UhMmblmdU= -cloud.google.com/go/monitoring v1.21.2/go.mod h1:hS3pXvaG8KgWTSz+dAdyzPrGUYmi2Q+WFX8g2hqVEZU= -cloud.google.com/go/storage v1.46.0 h1:OTXISBpFd8KaA2ClT3K3oRk8UGOcTHtrZ1bW88xKiic= -cloud.google.com/go/storage v1.46.0/go.mod h1:lM+gMAW91EfXIeMTBmixRsKL/XCxysytoAgduVikjMk= -cloud.google.com/go/trace v1.11.2 h1:4ZmaBdL8Ng/ajrgKqY5jfvzqMXbrDcBsUGXOT9aqTtI= -cloud.google.com/go/trace v1.11.2/go.mod h1:bn7OwXd4pd5rFuAnTrzBuoZ4ax2XQeG3qNgYmfCy0Io= +cloud.google.com/go v0.118.1 h1:b8RATMcrK9A4BH0rj8yQupPXp+aP+cJ0l6H7V9osV1E= +cloud.google.com/go v0.118.1/go.mod h1:CFO4UPEPi8oV21xoezZCrd3d81K4fFkDTEJu4R8K+9M= +cloud.google.com/go/auth v0.14.1 h1:AwoJbzUdxA/whv1qj3TLKwh3XX5sikny2fc40wUl+h0= +cloud.google.com/go/auth v0.14.1/go.mod h1:4JHUxlGXisL0AW8kXPtUF6ztuOksyfUQNFjfsOCXkPM= +cloud.google.com/go/auth/oauth2adapt v0.2.7 h1:/Lc7xODdqcEw8IrZ9SvwnlLX6j9FHQM74z6cBk9Rw6M= +cloud.google.com/go/auth/oauth2adapt v0.2.7/go.mod h1:NTbTTzfvPl1Y3V1nPpOgl2w6d/FjO7NNUQaWSox6ZMc= +cloud.google.com/go/compute/metadata v0.6.0 h1:A6hENjEsCDtC1k8byVsgwvVcioamEHvZ4j01OwKxG9I= +cloud.google.com/go/compute/metadata v0.6.0/go.mod h1:FjyFAW1MW0C203CEOMDTu3Dk1FlqW3Rga40jzHL4hfg= +cloud.google.com/go/iam v1.3.1 h1:KFf8SaT71yYq+sQtRISn90Gyhyf4X8RGgeAVC8XGf3E= +cloud.google.com/go/iam v1.3.1/go.mod h1:3wMtuyT4NcbnYNPLMBzYRFiEfjKfJlLVLrisE7bwm34= +cloud.google.com/go/logging v1.13.0 h1:7j0HgAp0B94o1YRDqiqm26w4q1rDMH7XNRU34lJXHYc= +cloud.google.com/go/logging v1.13.0/go.mod h1:36CoKh6KA/M0PbhPKMq6/qety2DCAErbhXT62TuXALA= +cloud.google.com/go/longrunning v0.6.4 h1:3tyw9rO3E2XVXzSApn1gyEEnH2K9SynNQjMlBi3uHLg= +cloud.google.com/go/longrunning v0.6.4/go.mod h1:ttZpLCe6e7EXvn9OxpBRx7kZEB0efv8yBO6YnVMfhJs= +cloud.google.com/go/monitoring v1.23.0 h1:M3nXww2gn9oZ/qWN2bZ35CjolnVHM3qnSbu6srCPgjk= +cloud.google.com/go/monitoring v1.23.0/go.mod h1:034NnlQPDzrQ64G2Gavhl0LUHZs9H3rRmhtnp7jiJgg= +cloud.google.com/go/storage v1.50.0 h1:3TbVkzTooBvnZsk7WaAQfOsNrdoM8QHusXA1cpk6QJs= +cloud.google.com/go/storage v1.50.0/go.mod h1:l7XeiD//vx5lfqE3RavfmU9yvk5Pp0Zhcv482poyafY= +cloud.google.com/go/trace v1.11.3 h1:c+I4YFjxRQjvAhRmSsmjpASUKq88chOX854ied0K/pE= +cloud.google.com/go/trace v1.11.3/go.mod h1:pt7zCYiDSQjC9Y2oqCsh9jF4GStB/hmjrYLsxRR27q8= github.com/AdaLogics/go-fuzz-headers v0.0.0-20240806141605-e8a1dd7889d6 h1:He8afgbRMd7mFxO99hRNu+6tazq8nFF9lIwo9JFroBk= github.com/AdaLogics/go-fuzz-headers v0.0.0-20240806141605-e8a1dd7889d6/go.mod h1:8o94RPi1/7XTJvwPpRSzSUedZrtlirdB3r9Z20bi2f8= github.com/Azure/azure-pipeline-go v0.2.3 h1:7U9HBg1JFK3jHl5qmo4CTZKFTVgMwdFHMVtCdfBE21U= @@ -40,33 +40,33 @@ github.com/Azure/go-autorest/logger v0.2.1/go.mod h1:T9E3cAhj2VqvPOtCYAvby9aBXkZ github.com/Azure/go-autorest/tracing v0.6.0 h1:TYi4+3m5t6K48TGI9AUdb+IzbnSxvnvUMfuitfgcfuo= github.com/Azure/go-autorest/tracing v0.6.0/go.mod h1:+vhtPC754Xsa23ID7GlGsrdKBpUA79WCAKPPZVC2DeU= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= -github.com/DataDog/appsec-internal-go v1.9.0 h1:cGOneFsg0JTRzWl5U2+og5dbtyW3N8XaYwc5nXe39Vw= -github.com/DataDog/appsec-internal-go v1.9.0/go.mod h1:wW0cRfWBo4C044jHGwYiyh5moQV2x0AhnwqMuiX7O/g= -github.com/DataDog/datadog-agent/pkg/obfuscate v0.59.0 h1:uX6/XoKMS7KYXe+R+vwgw+eRdmn16xfa9PDF5dxgumE= -github.com/DataDog/datadog-agent/pkg/obfuscate v0.59.0/go.mod h1:ATVw8kr3U1Eqz3qBz9kS6WFDKji9XyoAsHKSlj3hPTM= -github.com/DataDog/datadog-agent/pkg/remoteconfig/state v0.59.0 h1:9C8TVNz0IiNoD6tuEKPY/vMIUjB7kN0OaLyImhatWjg= -github.com/DataDog/datadog-agent/pkg/remoteconfig/state v0.59.0/go.mod h1:c4th0IFaP0Q1ofRa0GcPB9hJWN+cmUoEfOI1Ub0O50A= +github.com/DataDog/appsec-internal-go v1.10.0 h1:RlY1FXYeaDCHs5fbhcs5x/MxZYUwg53LOy+iSj0iHsU= +github.com/DataDog/appsec-internal-go v1.10.0/go.mod h1:9eYpAdKZF4Pz49qOmNL+OSVFHjhkZrBdBBjmAwBeN5c= +github.com/DataDog/datadog-agent/pkg/obfuscate v0.62.1 h1:Zw5TNfv9863OlFn5ZUtLi/Ghc9xAzIw0zrcbsgtiM+Y= +github.com/DataDog/datadog-agent/pkg/obfuscate v0.62.1/go.mod h1:ZMCwrRdccdTW9hERhTQfTXEXeYr/NYNl86E5KxRMcSk= +github.com/DataDog/datadog-agent/pkg/remoteconfig/state v0.62.1 h1:SC291g9TsblQBlJhF0DWgtRJ8aNB15Xfa5JQ4GWKE1I= +github.com/DataDog/datadog-agent/pkg/remoteconfig/state v0.62.1/go.mod h1:yhdpD1VkSNoJ3MwsEUIe5UiPiZaaD1SnHLV/QasRfoo= github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= -github.com/DataDog/datadog-go/v5 v5.5.0 h1:G5KHeB8pWBNXT4Jtw0zAkhdxEAWSpWH00geHI6LDrKU= -github.com/DataDog/datadog-go/v5 v5.5.0/go.mod h1:K9kcYBlxkcPP8tvvjZZKs/m1edNAUFzBbdpTUKfCsuw= +github.com/DataDog/datadog-go/v5 v5.6.0 h1:2oCLxjF/4htd55piM75baflj/KoE6VYS7alEUqFvRDw= +github.com/DataDog/datadog-go/v5 v5.6.0/go.mod h1:K9kcYBlxkcPP8tvvjZZKs/m1edNAUFzBbdpTUKfCsuw= github.com/DataDog/go-libddwaf/v3 v3.5.1 h1:GWA4ln4DlLxiXm+X7HA/oj0ZLcdCwOS81KQitegRTyY= github.com/DataDog/go-libddwaf/v3 v3.5.1/go.mod h1:n98d9nZ1gzenRSk53wz8l6d34ikxS+hs62A31Fqmyi4= -github.com/DataDog/go-sqllexer v0.0.17 h1:u47fJAVg/+5DA74ZW3w0Qu+3qXHd3GtnA8ZBYixdPrM= -github.com/DataDog/go-sqllexer v0.0.17/go.mod h1:KwkYhpFEVIq+BfobkTC1vfqm4gTi65skV/DpDBXtexc= +github.com/DataDog/go-sqllexer v0.0.20 h1:0fBknHo42yuhawZS3GtuQSdqcwaiojWjYNT6OdsZRfI= +github.com/DataDog/go-sqllexer v0.0.20/go.mod h1:KwkYhpFEVIq+BfobkTC1vfqm4gTi65skV/DpDBXtexc= github.com/DataDog/go-tuf v1.1.0-0.5.2 h1:4CagiIekonLSfL8GMHRHcHudo1fQnxELS9g4tiAupQ4= github.com/DataDog/go-tuf v1.1.0-0.5.2/go.mod h1:zBcq6f654iVqmkk8n2Cx81E1JnNTMOAx1UEO/wZR+P0= github.com/DataDog/gostackparse v0.7.0 h1:i7dLkXHvYzHV308hnkvVGDL3BR4FWl7IsXNPz/IGQh4= github.com/DataDog/gostackparse v0.7.0/go.mod h1:lTfqcJKqS9KnXQGnyQMCugq3u1FP6UZMfWR0aitKFMM= github.com/DataDog/sketches-go v1.4.6 h1:acd5fb+QdUzGrosfNLwrIhqyrbMORpvBy7mE+vHlT3I= github.com/DataDog/sketches-go v1.4.6/go.mod h1:7Y8GN8Jf66DLyDhc94zuWA3uHEt/7ttt8jHOBWWrSOg= -github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.25.0 h1:3c8yed4lgqTt+oTQ+JNMDo+F4xprBf+O/il4ZC0nRLw= -github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.25.0/go.mod h1:obipzmGjfSjam60XLwGfqUkJsfiheAl+TUjG+4yzyPM= -github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.49.0 h1:o90wcURuxekmXrtxmYWTyNla0+ZEHhud6DI1ZTxd1vI= -github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.49.0/go.mod h1:6fTWu4m3jocfUZLYF5KsZC1TUfRvEjs7lM4crme/irw= -github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/cloudmock v0.49.0 h1:jJKWl98inONJAr/IZrdFQUWcwUO95DLY1XMD1ZIut+g= -github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/cloudmock v0.49.0/go.mod h1:l2fIqmwB+FKSfvn3bAD/0i+AXAxhIZjTK2svT/mgUXs= -github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.49.0 h1:GYUJLfvd++4DMuMhCFLgLXvFwofIxh/qOwoGuS/LTew= -github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.49.0/go.mod h1:wRbFgBQUVm1YXrvWKofAEmq9HNJTDphbAaJSSX01KUI= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.26.0 h1:f2Qw/Ehhimh5uO1fayV0QIW7DShEQqhtUfhYc+cBPlw= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.26.0/go.mod h1:2bIszWvQRlJVmJLiuLhukLImRjKPcYdzzsx6darK02A= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.50.0 h1:5IT7xOdq17MtcdtL/vtl6mGfzhaq4m4vpollPRmlsBQ= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.50.0/go.mod h1:ZV4VOm0/eHR06JLrXWe09068dHpr3TRpY9Uo7T+anuA= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/cloudmock v0.50.0 h1:nNMpRpnkWDAaqcpxMJvxa/Ud98gjbYwayJY4/9bdjiU= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/cloudmock v0.50.0/go.mod h1:SZiPHWGOOk3bl8tkevxkoiwPgsIl6CwrWcbwjfHZpdM= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.50.0 h1:ig/FpDD2JofP/NExKQUbn7uOSZzJAQqogfqluZK4ed4= +github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapping v0.50.0/go.mod h1:otE2jQekW/PqXk1Awf5lmfokJx4uwuqcj1ab5SpGeW0= github.com/HdrHistogram/hdrhistogram-go v0.9.0 h1:dpujRju0R4M/QZzcnR1LH1qm+TVG3UzkWdp5tH1WMcg= github.com/HdrHistogram/hdrhistogram-go v0.9.0/go.mod h1:nxrse8/Tzg2tg3DZcZjm6qEclQKK70g0KxO61gFFZD4= github.com/Masterminds/glide v0.13.2/go.mod h1:STyF5vcenH/rUqTEv+/hBXlSTo7KYwg2oc2f4tzPWic= @@ -81,65 +81,59 @@ github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuy github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= +github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho= github.com/aquarapid/vaultlib v0.5.1 h1:vuLWR6bZzLHybjJBSUYPgZlIp6KZ+SXeHLRRYTuk6d4= github.com/aquarapid/vaultlib v0.5.1/go.mod h1:yT7AlEXtuabkxylOc/+Ulyp18tff1+QjgNLTnFWTlOs= -github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= -github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= github.com/armon/go-metrics v0.4.1 h1:hR91U9KYmb6bLBYLQjyM+3j+rcd/UhE+G78SFnF8gJA= github.com/armon/go-metrics v0.4.1/go.mod h1:E6amYzXo6aW1tqzoZGT755KkbgrJsSdpwZ+3JqfkOG4= -github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= -github.com/armon/go-radix v1.0.0/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= -github.com/aws/aws-sdk-go-v2 v1.32.4 h1:S13INUiTxgrPueTmrm5DZ+MiAo99zYzHEFh1UNkOxNE= -github.com/aws/aws-sdk-go-v2 v1.32.4/go.mod h1:2SK5n0a2karNTv5tbP1SjsX0uhttou00v/HpXKM1ZUo= -github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.6 h1:pT3hpW0cOHRJx8Y0DfJUEQuqPild8jRGmSFmBgvydr0= -github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.6/go.mod h1:j/I2++U0xX+cr44QjHay4Cvxj6FUbnxrgmqN3H1jTZA= -github.com/aws/aws-sdk-go-v2/config v1.28.3 h1:kL5uAptPcPKaJ4q0sDUjUIdueO18Q7JDzl64GpVwdOM= -github.com/aws/aws-sdk-go-v2/config v1.28.3/go.mod h1:SPEn1KA8YbgQnwiJ/OISU4fz7+F6Fe309Jf0QTsRCl4= -github.com/aws/aws-sdk-go-v2/credentials v1.17.44 h1:qqfs5kulLUHUEXlHEZXLJkgGoF3kkUeFUTVA585cFpU= -github.com/aws/aws-sdk-go-v2/credentials v1.17.44/go.mod h1:0Lm2YJ8etJdEdw23s+q/9wTpOeo2HhNE97XcRa7T8MA= -github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.19 h1:woXadbf0c7enQ2UGCi8gW/WuKmE0xIzxBF/eD94jMKQ= -github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.19/go.mod h1:zminj5ucw7w0r65bP6nhyOd3xL6veAUMc3ElGMoLVb4= -github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.17.37 h1:jHKR76E81sZvz1+x1vYYrHMxphG5LFBJPhSqEr4CLlE= -github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.17.37/go.mod h1:iMkyPkmoJWQKzSOtaX+8oEJxAuqr7s8laxcqGDSHeII= -github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.23 h1:A2w6m6Tmr+BNXjDsr7M90zkWjsu4JXHwrzPg235STs4= -github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.23/go.mod h1:35EVp9wyeANdujZruvHiQUAo9E3vbhnIO1mTCAxMlY0= -github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.23 h1:pgYW9FCabt2M25MoHYCfMrVY2ghiiBKYWUVXfwZs+sU= -github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.23/go.mod h1:c48kLgzO19wAu3CPkDWC28JbaJ+hfQlsdl7I2+oqIbk= -github.com/aws/aws-sdk-go-v2/internal/ini v1.8.1 h1:VaRN3TlFdd6KxX1x3ILT5ynH6HvKgqdiXoTxAF4HQcQ= -github.com/aws/aws-sdk-go-v2/internal/ini v1.8.1/go.mod h1:FbtygfRFze9usAadmnGJNc8KsP346kEe+y2/oyhGAGc= -github.com/aws/aws-sdk-go-v2/internal/v4a v1.3.23 h1:1SZBDiRzzs3sNhOMVApyWPduWYGAX0imGy06XiBnCAM= -github.com/aws/aws-sdk-go-v2/internal/v4a v1.3.23/go.mod h1:i9TkxgbZmHVh2S0La6CAXtnyFhlCX/pJ0JsOvBAS6Mk= -github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.0 h1:TToQNkvGguu209puTojY/ozlqy2d/SFNcoLIqTFi42g= -github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.0/go.mod h1:0jp+ltwkf+SwG2fm/PKo8t4y8pJSgOCO4D8Lz3k0aHQ= -github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.4.4 h1:aaPpoG15S2qHkWm4KlEyF01zovK1nW4BBbyXuHNSE90= -github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.4.4/go.mod h1:eD9gS2EARTKgGr/W5xwgY/ik9z/zqpW+m/xOQbVxrMk= -github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.4 h1:tHxQi/XHPK0ctd/wdOw0t7Xrc2OxcRCnVzv8lwWPu0c= -github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.4/go.mod h1:4GQbF1vJzG60poZqWatZlhP31y8PGCCVTvIGPdaaYJ0= -github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.18.4 h1:E5ZAVOmI2apR8ADb72Q63KqwwwdW1XcMeXIlrZ1Psjg= -github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.18.4/go.mod h1:wezzqVUOVVdk+2Z/JzQT4NxAU0NbhRe5W8pIE72jsWI= -github.com/aws/aws-sdk-go-v2/service/s3 v1.66.3 h1:neNOYJl72bHrz9ikAEED4VqWyND/Po0DnEx64RW6YM4= -github.com/aws/aws-sdk-go-v2/service/s3 v1.66.3/go.mod h1:TMhLIyRIyoGVlaEMAt+ITMbwskSTpcGsCPDq91/ihY0= -github.com/aws/aws-sdk-go-v2/service/sso v1.24.5 h1:HJwZwRt2Z2Tdec+m+fPjvdmkq2s9Ra+VR0hjF7V2o40= -github.com/aws/aws-sdk-go-v2/service/sso v1.24.5/go.mod h1:wrMCEwjFPms+V86TCQQeOxQF/If4vT44FGIOFiMC2ck= -github.com/aws/aws-sdk-go-v2/service/ssooidc v1.28.4 h1:zcx9LiGWZ6i6pjdcoE9oXAB6mUdeyC36Ia/QEiIvYdg= -github.com/aws/aws-sdk-go-v2/service/ssooidc v1.28.4/go.mod h1:Tp/ly1cTjRLGBBmNccFumbZ8oqpZlpdhFf80SrRh4is= -github.com/aws/aws-sdk-go-v2/service/sts v1.32.4 h1:yDxvkz3/uOKfxnv8YhzOi9m+2OGIxF+on3KOISbK5IU= -github.com/aws/aws-sdk-go-v2/service/sts v1.32.4/go.mod h1:9XEUty5v5UAsMiFOBJrNibZgwCeOma73jgGwwhgffa8= -github.com/aws/smithy-go v1.22.0 h1:uunKnWlcoL3zO7q+gG2Pk53joueEOsnNB28QdMsmiMM= -github.com/aws/smithy-go v1.22.0/go.mod h1:irrKGvNn1InZwb2d7fkIRNucdfwR8R+Ts3wxYa/cJHg= +github.com/aws/aws-sdk-go-v2 v1.36.0 h1:b1wM5CcE65Ujwn565qcwgtOTT1aT4ADOHHgglKjG7fk= +github.com/aws/aws-sdk-go-v2 v1.36.0/go.mod h1:5PMILGVKiW32oDzjj6RU52yrNrDPUHcbZQYr1sM7qmM= +github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.8 h1:zAxi9p3wsZMIaVCdoiQp2uZ9k1LsZvmAnoTBeZPXom0= +github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.8/go.mod h1:3XkePX5dSaxveLAYY7nsbsZZrKxCyEuE5pM4ziFxyGg= +github.com/aws/aws-sdk-go-v2/config v1.29.4 h1:ObNqKsDYFGr2WxnoXKOhCvTlf3HhwtoGgc+KmZ4H5yg= +github.com/aws/aws-sdk-go-v2/config v1.29.4/go.mod h1:j2/AF7j/qxVmsNIChw1tWfsVKOayJoGRDjg1Tgq7NPk= +github.com/aws/aws-sdk-go-v2/credentials v1.17.57 h1:kFQDsbdBAR3GZsB8xA+51ptEnq9TIj3tS4MuP5b+TcQ= +github.com/aws/aws-sdk-go-v2/credentials v1.17.57/go.mod h1:2kerxPUUbTagAr/kkaHiqvj/bcYHzi2qiJS/ZinllU0= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.27 h1:7lOW8NUwE9UZekS1DYoiPdVAqZ6A+LheHWb+mHbNOq8= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.27/go.mod h1:w1BASFIPOPUae7AgaH4SbjNbfdkxuggLyGfNFTn8ITY= +github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.17.57 h1:4hFrvTb32jty/LpKdIwWhMgqITPxNo9l1X1hjUyVCZ4= +github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.17.57/go.mod h1:n6n8rfggAVPgDVldL1zk9QUzIWImRb6OWI8t9CfDImM= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.31 h1:lWm9ucLSRFiI4dQQafLrEOmEDGry3Swrz0BIRdiHJqQ= +github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.31/go.mod h1:Huu6GG0YTfbPphQkDSo4dEGmQRTKb9k9G7RdtyQWxuI= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.31 h1:ACxDklUKKXb48+eg5ROZXi1vDgfMyfIA/WyvqHcHI0o= +github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.31/go.mod h1:yadnfsDwqXeVaohbGc/RaD287PuyRw2wugkh5ZL2J6k= +github.com/aws/aws-sdk-go-v2/internal/ini v1.8.2 h1:Pg9URiobXy85kgFev3og2CuOZ8JZUBENF+dcgWBaYNk= +github.com/aws/aws-sdk-go-v2/internal/ini v1.8.2/go.mod h1:FbtygfRFze9usAadmnGJNc8KsP346kEe+y2/oyhGAGc= +github.com/aws/aws-sdk-go-v2/internal/v4a v1.3.31 h1:8IwBjuLdqIO1dGB+dZ9zJEl8wzY3bVYxcs0Xyu/Lsc0= +github.com/aws/aws-sdk-go-v2/internal/v4a v1.3.31/go.mod h1:8tMBcuVjL4kP/ECEIWTCWtwV2kj6+ouEKl4cqR4iWLw= +github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.2 h1:D4oz8/CzT9bAEYtVhSBmFj2dNOtaHOtMKc2vHBwYizA= +github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.2/go.mod h1:Za3IHqTQ+yNcRHxu1OFucBh0ACZT4j4VQFF0BqpZcLY= +github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.5.5 h1:siiQ+jummya9OLPDEyHVb2dLW4aOMe22FGDd0sAfuSw= +github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.5.5/go.mod h1:iHVx2J9pWzITdP5MJY6qWfG34TfD9EA+Qi3eV6qQCXw= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.12 h1:O+8vD2rGjfihBewr5bT+QUfYUHIxCVgG61LHoT59shM= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.12/go.mod h1:usVdWJaosa66NMvmCrr08NcWDBRv4E6+YFG2pUdw1Lk= +github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.18.12 h1:tkVNm99nkJnFo1H9IIQb5QkCiPcvCDn3Pos+IeTbGRA= +github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.18.12/go.mod h1:dIVlquSPUMqEJtx2/W17SM2SuESRaVEhEV9alcMqxjw= +github.com/aws/aws-sdk-go-v2/service/s3 v1.75.2 h1:dyC+iA2+Yc7iDMDh0R4eT6fi8TgBduc+BOWCy6Br0/o= +github.com/aws/aws-sdk-go-v2/service/s3 v1.75.2/go.mod h1:FHSHmyEUkzRbaFFqqm6bkLAOQHgqhsLmfCahvCBMiyA= +github.com/aws/aws-sdk-go-v2/service/sso v1.24.14 h1:c5WJ3iHz7rLIgArznb3JCSQT3uUMiz9DLZhIX+1G8ok= +github.com/aws/aws-sdk-go-v2/service/sso v1.24.14/go.mod h1:+JJQTxB6N4niArC14YNtxcQtwEqzS3o9Z32n7q33Rfs= +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.28.13 h1:f1L/JtUkVODD+k1+IiSJUUv8A++2qVr+Xvb3xWXETMU= +github.com/aws/aws-sdk-go-v2/service/ssooidc v1.28.13/go.mod h1:tvqlFoja8/s0o+UruA1Nrezo/df0PzdunMDDurUfg6U= +github.com/aws/aws-sdk-go-v2/service/sts v1.33.12 h1:fqg6c1KVrc3SYWma/egWue5rKI4G2+M4wMQN2JosNAA= +github.com/aws/aws-sdk-go-v2/service/sts v1.33.12/go.mod h1:7Yn+p66q/jt38qMoVfNvjbm3D89mGBnkwDcijgtih8w= +github.com/aws/smithy-go v1.22.2 h1:6D9hW43xKFrRx/tXXfAlIZc4JI+yQe6snnWcQyxSyLQ= +github.com/aws/smithy-go v1.22.2/go.mod h1:irrKGvNn1InZwb2d7fkIRNucdfwR8R+Ts3wxYa/cJHg= github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= -github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= github.com/bndr/gotabulate v1.1.2 h1:yC9izuZEphojb9r+KYL4W9IJKO/ceIO8HDwxMA24U4c= github.com/bndr/gotabulate v1.1.2/go.mod h1:0+8yUgaPTtLRTjf49E8oju7ojpU11YmXyvq1LbPAb3U= github.com/buger/jsonparser v1.1.1 h1:2PnMjfWD7wBILjqQbt530v576A/cAbQvEW9gGIpYMUs= github.com/buger/jsonparser v1.1.1/go.mod h1:6RYKKt7H4d4+iWqouImQ9R2FZql3VbhNgx27UK13J/0= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= -github.com/census-instrumentation/opencensus-proto v0.4.1 h1:iKLQ0xPNFxR/2hzXZMrBo8f1j86j5WHzznCCQxV/b8g= -github.com/census-instrumentation/opencensus-proto v0.4.1/go.mod h1:4T9NM4+4Vw91VeyqjLS6ao50K5bOcLKN6Q42XnYaRYw= github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= @@ -147,8 +141,8 @@ github.com/circonus-labs/circonus-gometrics v2.3.1+incompatible/go.mod h1:nmEj6D github.com/circonus-labs/circonusllhist v0.1.3/go.mod h1:kMXHVDlOchFAehlya5ePtbp5jckzBHf4XRpQvBOLI+I= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= -github.com/cncf/xds/go v0.0.0-20240905190251-b4127c9b8d78 h1:QVw89YDxXxEe+l8gU8ETbOasdwEV+avkR75ZzsVV9WI= -github.com/cncf/xds/go v0.0.0-20240905190251-b4127c9b8d78/go.mod h1:W+zGtBO5Y1IgJhy4+A9GOqVhqLpfZi+vwmdNXUehLA8= +github.com/cncf/xds/go v0.0.0-20250121191232-2f005788dc42 h1:Om6kYQYDUk5wWbT0t0q6pvyM49i9XZAv9dDrkDA7gjk= +github.com/cncf/xds/go v0.0.0-20250121191232-2f005788dc42/go.mod h1:W+zGtBO5Y1IgJhy4+A9GOqVhqLpfZi+vwmdNXUehLA8= github.com/codegangsta/cli v1.20.0/go.mod h1:/qJNoX69yVSKu5o4jLyXAENLRyk1uhi7zkbQ3slBdOA= github.com/coreos/go-semver v0.3.1 h1:yi21YpKnrx1gt5R+la8n5WgS0kCrsPp33dmEyHReZr4= github.com/coreos/go-semver v0.3.1/go.mod h1:irMmmIw/7yzSRPWryHsK7EYSg09caPQL03VsM8rvUec= @@ -157,8 +151,8 @@ github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSV github.com/corpix/uarand v0.1.1 h1:RMr1TWc9F4n5jiPDzFHtmaUXLKLNUFK0SgCLo4BhX/U= github.com/corpix/uarand v0.1.1/go.mod h1:SFKZvkcRoLqVRFZ4u25xPmp6m9ktANfbpXZ7SJ0/FNU= github.com/cpuguy83/go-md2man/v2 v2.0.4/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= -github.com/cpuguy83/go-md2man/v2 v2.0.5 h1:ZtcqGrnekaHpVLArFSe4HK5DoKx1T0rq2DwVB0alcyc= -github.com/cpuguy83/go-md2man/v2 v2.0.5/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= +github.com/cpuguy83/go-md2man/v2 v2.0.6 h1:XJtiaUW6dEEqVuZiMTn1ldk455QWwEIsMIJlo5vtkx0= +github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/dave/jennifer v1.7.1 h1:B4jJJDHelWcDhlRQxWeo0Npa/pYKBLrirAQoTN45txo= github.com/dave/jennifer v1.7.1/go.mod h1:nXbxhEmQfOZhWml3D1cDK5M1FLnMSozpbFN/m3RmGZc= @@ -166,27 +160,30 @@ github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSs github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2 h1:tdlZCpZ/P9DhczCTSixgIKmwPv6+wP5DGjqLYw5SUiA= github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= +github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13 h1:fAjc9m62+UWV/WAFKLNi6ZS0675eEUC9y3AlwSbQu1Y= +github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw= github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY= github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto= github.com/eapache/queue/v2 v2.0.0-20230407133247-75960ed334e4 h1:8EXxF+tCLqaVk8AOC29zl2mnhQjwyLxxOTuhUazWRsg= github.com/eapache/queue/v2 v2.0.0-20230407133247-75960ed334e4/go.mod h1:I5sHm0Y0T1u5YjlyqC5GVArM7aNZRUYtTjmJ8mPJFds= -github.com/ebitengine/purego v0.8.1 h1:sdRKd6plj7KYW33EH5As6YKfe8m9zbN9JMrOjNVF/BE= -github.com/ebitengine/purego v0.8.1/go.mod h1:iIjxzd6CiRiOG0UyXP+V1+jWqUXVjPKLAI0mRfJZTmQ= +github.com/ebitengine/purego v0.8.2 h1:jPPGWs2sZ1UgOSgD2bClL0MJIqu58nOmIcBuXr62z1I= +github.com/ebitengine/purego v0.8.2/go.mod h1:iIjxzd6CiRiOG0UyXP+V1+jWqUXVjPKLAI0mRfJZTmQ= github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= -github.com/envoyproxy/go-control-plane v0.13.1 h1:vPfJZCkob6yTMEgS+0TwfTUfbHjfy/6vOJ8hUWX/uXE= -github.com/envoyproxy/go-control-plane v0.13.1/go.mod h1:X45hY0mufo6Fd0KW3rqsGvQMw58jvjymeCzBU3mWyHw= +github.com/envoyproxy/go-control-plane v0.13.4 h1:zEqyPVyku6IvWCFwux4x9RxkLOMUL+1vC9xUFv5l2/M= +github.com/envoyproxy/go-control-plane v0.13.4/go.mod h1:kDfuBlDVsSj2MjrLEtRWtHlsWIFcGyB2RMO44Dc5GZA= +github.com/envoyproxy/go-control-plane/envoy v1.32.4 h1:jb83lalDRZSpPWW2Z7Mck/8kXZ5CQAFYVjQcdVIr83A= +github.com/envoyproxy/go-control-plane/envoy v1.32.4/go.mod h1:Gzjc5k8JcJswLjAx1Zm+wSYE20UrLtt7JZMWiWQXQEw= +github.com/envoyproxy/go-control-plane/ratelimit v0.1.0 h1:/G9QYbddjL25KvtKTv3an9lx6VBE2cnb8wp1vEGNYGI= +github.com/envoyproxy/go-control-plane/ratelimit v0.1.0/go.mod h1:Wk+tMFAFbCXaJPzVVHnPgRKdUdwW/KdbRt94AzgRee4= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/envoyproxy/protoc-gen-validate v1.1.0 h1:tntQDh69XqOCOZsDz0lVJQez/2L6Uu2PdjCQwWCJ3bM= -github.com/envoyproxy/protoc-gen-validate v1.1.0/go.mod h1:sXRDRVmzEbkM7CVcM06s9shE/m23dg3wzjl0UWqJ2q4= -github.com/evanphx/json-patch v5.9.0+incompatible h1:fBXyNpNMuTTDdquAq/uisOr2lShz4oaXpDTX2bLe7ls= -github.com/evanphx/json-patch v5.9.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= -github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= -github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU= +github.com/envoyproxy/protoc-gen-validate v1.2.1 h1:DEo3O99U8j4hBFwbJfrz9VtgcDfUKS7KJ7spH3d86P8= +github.com/envoyproxy/protoc-gen-validate v1.2.1/go.mod h1:d/C80l/jxXLdfEIhX1W2TmLfsJ31lvEjwamM4DxlWXU= +github.com/evanphx/json-patch v5.9.11+incompatible h1:ixHHqfcGvxhWkniF1tWxBHA0yb4Z+d1UQi45df52xW8= +github.com/evanphx/json-patch v5.9.11+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= github.com/fatih/color v1.18.0 h1:S8gINlzdQ840/4pfAwic/ZE0djQEH3wM94VfqLTZcOM= github.com/fatih/color v1.18.0/go.mod h1:4FelSpRwEGDpQ12mAdzqdOukCy4u8WUtOY6lkT/6HfU= @@ -200,8 +197,8 @@ github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMo github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= github.com/fsnotify/fsnotify v1.8.0 h1:dAwr6QBTBZIkG8roQaJjGof0pp0EeF+tNV7YBP3F/8M= github.com/fsnotify/fsnotify v1.8.0/go.mod h1:8jBTzvmWwFyi3Pb8djgCCO5IBqzKJ/Jwo8TRcHyHii0= -github.com/gammazero/deque v0.2.1 h1:qSdsbG6pgp6nL7A0+K/B7s12mcCY/5l5SIUpMOl+dC0= -github.com/gammazero/deque v0.2.1/go.mod h1:LFroj8x4cMYCukHJDbxFCkT+r9AndaJnFMuZDV34tuU= +github.com/gammazero/deque v1.0.0 h1:LTmimT8H7bXkkCy6gZX7zNLtkbz4NdS2z8LZuor3j34= +github.com/gammazero/deque v1.0.0/go.mod h1:iflpYvtGfM3U8S8j+sZEKIak3SAKYpA5/SQewgfXDKo= github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY= @@ -224,9 +221,6 @@ github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69 github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= github.com/golang/glog v1.2.4 h1:CNNw5U8lSiiBk7druxtSHHTsRWcxKoac6kZKm2peBBc= github.com/golang/glog v1.2.4/go.mod h1:6AhwSGph0fcJtXVM/PEHPqZlFeoLxhs7/t5UDAwmO+w= -github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= -github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE= -github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= @@ -238,22 +232,20 @@ github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:x github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= -github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM= github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= -github.com/google/btree v1.0.1 h1:gK4Kx5IaGY9CD5sPJ36FHiBJ6ZXl0kilRiiCj+jdYp4= -github.com/google/btree v1.0.1/go.mod h1:xXMiIv4Fb/0kKde4SpL7qlzvu5cMJDRkFDxJfI9uaxA= +github.com/google/btree v1.1.2 h1:xf4v41cLI2Z6FxbKm+8Bu+m8ifhj15JuZ9sa0jZCMUU= +github.com/google/btree v1.1.2/go.mod h1:qOPhT0dTNdNzV6Z/lhRX0YXUafgPLFUh+gZMl761Gm4= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= @@ -264,20 +256,19 @@ github.com/google/martian/v3 v3.3.3 h1:DIhPTQrbPkgs2yJYdXU/eNACCG5DVQjySNRNlflZ9 github.com/google/martian/v3 v3.3.3/go.mod h1:iEPrYcgCF7jA9OtScMFQyAlZZ4YXTKEtJ1E6RWzmBA0= github.com/google/pprof v0.0.0-20240409012703-83162a5b38cd h1:gbpYu9NMq8jhDVbvlGkMFWCjLFlqqEZjEmObmhUy6Vo= github.com/google/pprof v0.0.0-20240409012703-83162a5b38cd/go.mod h1:kf6iHlnVGwgKolg33glAes7Yg/8iWP8ukqeldJSO7jw= -github.com/google/s2a-go v0.1.8 h1:zZDs9gcbt9ZPLV0ndSyQk6Kacx2g/X+SKYovpnz3SMM= -github.com/google/s2a-go v0.1.8/go.mod h1:6iNWHTpQ+nfNRN5E00MSdfDwVesa8hhS32PhPO8deJA= +github.com/google/s2a-go v0.1.9 h1:LGD7gtMgezd8a/Xak7mEWL0PjoTQFvpRudN895yqKW0= +github.com/google/s2a-go v0.1.9/go.mod h1:YA0Ei2ZQL3acow2O62kdp9UlnvMmU7kA6Eutn0dXayM= github.com/google/safehtml v0.1.0 h1:EwLKo8qawTKfsi0orxcQAZzu07cICaBeFMegAU9eaT8= github.com/google/safehtml v0.1.0/go.mod h1:L4KWwDsUJdECRAEpZoBn3O64bQaywRscowZjJAzjHnU= github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 h1:El6M4kTTCOh6aBiKaUGG7oYTSPP8MxqL4YI3kZKwcP4= github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510/go.mod h1:pupxD2MaaD3pAXIBCelhxNneeOaAeabZDe5s4K6zSpQ= -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.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/googleapis/enterprise-certificate-proxy v0.3.4 h1:XYIDZApgAnrN1c855gTgghdIA6Stxb52D5RnLI1SLyw= github.com/googleapis/enterprise-certificate-proxy v0.3.4/go.mod h1:YKe7cfqYXjKGpGvmSg28/fFvhNzinZQm8DGnaburhGA= -github.com/googleapis/gax-go/v2 v2.14.0 h1:f+jMrjBPl+DL9nI4IQzLUxMq7XrAqFYB7hBPqMNIe8o= -github.com/googleapis/gax-go/v2 v2.14.0/go.mod h1:lhBCnjdLrWRaPvLWhmc8IS24m9mr07qSYnHncrgo+zk= +github.com/googleapis/gax-go/v2 v2.14.1 h1:hb0FFeiPaQskmvakKu5EbCbpntQn48jyHuvrkurSS/Q= +github.com/googleapis/gax-go/v2 v2.14.1/go.mod h1:Hb/NubMaVM88SrNkvl8X/o8XWwDJEPqouaLeN2IUxoA= github.com/gopherjs/gopherjs v0.0.0-20181103185306-d547d1d9531e/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= github.com/gorilla/handlers v1.5.2 h1:cLTUSsNkgcwhgRqvCNmdbRWG0A3N4F+M2nWKdScwyEE= github.com/gorilla/handlers v1.5.2/go.mod h1:dX+xVpaxdSw+q0Qek8SSsl3dfMk3jNddUkMzo0GtH0w= @@ -287,8 +278,8 @@ github.com/grpc-ecosystem/go-grpc-middleware v1.4.0 h1:UH//fgunKIs4JdUbpDl1VZCDa github.com/grpc-ecosystem/go-grpc-middleware v1.4.0/go.mod h1:g5qyo/la0ALbONm6Vbp88Yd8NsDy6rZz+RcrMPxvld8= github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 h1:Ovs26xHkKqVztRpIrF/92BcuyuQ/YW4NSIpoGtfXNho= github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= -github.com/hashicorp/consul/api v1.30.0 h1:ArHVMMILb1nQv8vZSGIwwQd2gtc+oSQZ6CalyiyH2XQ= -github.com/hashicorp/consul/api v1.30.0/go.mod h1:B2uGchvaXVW2JhFoS8nqTxMD5PBykr4ebY4JWHTTeLM= +github.com/hashicorp/consul/api v1.31.0 h1:32BUNLembeSRek0G/ZAM6WNfdEwYdYo8oQ4+JoqGkNQ= +github.com/hashicorp/consul/api v1.31.0/go.mod h1:2ZGIiXM3A610NmDULmCHd/aqBJj8CkMfOhswhOafxRg= github.com/hashicorp/consul/sdk v0.16.1 h1:V8TxTnImoPD5cj0U9Spl0TUxcytjcbbJeADFF07KdHg= github.com/hashicorp/consul/sdk v0.16.1/go.mod h1:fSXvwxB2hmh1FMZCNl6PwX0Q/1wdWtHJcZ7Ea5tns0s= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= @@ -302,26 +293,23 @@ github.com/hashicorp/go-hclog v1.6.3/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVH github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= github.com/hashicorp/go-immutable-radix v1.3.1 h1:DKHmCUm2hRBK510BaiZlwvpD40f8bJFeZnpfm2KLowc= github.com/hashicorp/go-immutable-radix v1.3.1/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= -github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= +github.com/hashicorp/go-metrics v0.5.4 h1:8mmPiIJkTPPEbAiV97IxdAGNdRdaWwVap1BU6elejKY= +github.com/hashicorp/go-metrics v0.5.4/go.mod h1:CG5yz4NZ/AI/aQt9Ucm/vdBnbh7fvmv4lxZ350i+QQI= github.com/hashicorp/go-msgpack v0.5.5 h1:i9R9JSrqIz0QVLz3sz+i3YJdT7TTSLcfLLzJi9aZTuI= -github.com/hashicorp/go-msgpack v0.5.5/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.0/go.mod h1:spPvp8C1qA32ftKqdAHm4hHTbPw+vmowP0z+KUhOZdA= +github.com/hashicorp/go-msgpack/v2 v2.1.2 h1:4Ee8FTp834e+ewB71RDrQ0VKpyFdrKOjvYtnQ/ltVj0= +github.com/hashicorp/go-msgpack/v2 v2.1.2/go.mod h1:upybraOAblm4S7rx0+jeNy+CWWhzywQsSRV5033mMu4= github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo= github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM= github.com/hashicorp/go-retryablehttp v0.5.3/go.mod h1:9B5zBasrRhHXnJnui7y6sL7es7NDiJgTc6Er0maI1Xs= github.com/hashicorp/go-rootcerts v1.0.2 h1:jzhAVGtqPKbwpyCPELlgNWhE1znq+qwJtW5Oi2viEzc= github.com/hashicorp/go-rootcerts v1.0.2/go.mod h1:pqUvnprVnM5bf7AOirdbb01K4ccR319Vf4pU3K5EGc8= -github.com/hashicorp/go-secure-stdlib/parseutil v0.1.8 h1:iBt4Ew4XEGLfh6/bPk4rSYmuZJGizr6/x/AEizP0CQc= -github.com/hashicorp/go-secure-stdlib/parseutil v0.1.8/go.mod h1:aiJI+PIApBRQG7FZTEBx5GiiX+HbOHilUdNxUZi4eV0= +github.com/hashicorp/go-secure-stdlib/parseutil v0.1.9 h1:FW0YttEnUNDJ2WL9XcrrfteS1xW8u+sh4ggM8pN5isQ= +github.com/hashicorp/go-secure-stdlib/parseutil v0.1.9/go.mod h1:Ll013mhdmsVDuoIXVfBtvgGJsXDYkTw1kooNcoCXuE0= github.com/hashicorp/go-secure-stdlib/strutil v0.1.2 h1:kes8mmyCpxJsI7FTwtzRqEy9CdjCtrXrXGuOpxEA7Ts= github.com/hashicorp/go-secure-stdlib/strutil v0.1.2/go.mod h1:Gou2R9+il93BqX25LAKCLuM+y9U2T4hlwvT1yprcna4= -github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU= github.com/hashicorp/go-sockaddr v1.0.7 h1:G+pTkSO01HpR5qCxg7lxfsFEZaG+C0VssTy/9dbT+Fw= github.com/hashicorp/go-sockaddr v1.0.7/go.mod h1:FZQbEYa1pxkQ7WLpyXJ6cbjpT8q0YgQaK/JakXqGyWw= -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.3 h1:2gKiV6YVmrJ1i2CKKa9obLvRieoRGviZFL26PcT/Co8= github.com/hashicorp/go-uuid v1.0.3/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= github.com/hashicorp/go-version v1.7.0 h1:5tqGy27NaOTB8yJKUZELlFAS/LTKJkrmONwQKeRZfjY= @@ -329,25 +317,25 @@ github.com/hashicorp/go-version v1.7.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09 github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v1.0.2 h1:dV3g9Z/unq5DpblPpw+Oqcv4dU/1omnb4Ok8iPY6p1c= github.com/hashicorp/golang-lru v1.0.2/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= -github.com/hashicorp/golang-lru/v2 v2.0.7 h1:a+bsQ5rvGLjzHuww6tVxozPZFVghXaHOwFs4luLUK2k= -github.com/hashicorp/golang-lru/v2 v2.0.7/go.mod h1:QeFd9opnmA6QUJc5vARoKUSoFhyfM2/ZepoAG6RGpeM= github.com/hashicorp/hcl v1.0.1-vault-7 h1:ag5OxFVy3QYTFTJODRzTKVZ6xvdfLLCA1cy/Y6xGI0I= github.com/hashicorp/hcl v1.0.1-vault-7/go.mod h1:XYhtn6ijBSAj6n4YqAaf7RBPS4I06AItNorpy+MoQNM= -github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= -github.com/hashicorp/mdns v1.0.4/go.mod h1:mtBihi+LeNXGtG8L9dX59gAEa12BDtBQSp4v/YAJqrc= -github.com/hashicorp/memberlist v0.5.0 h1:EtYPN8DpAURiapus508I4n9CzHs2W+8NZGbmmR/prTM= -github.com/hashicorp/memberlist v0.5.0/go.mod h1:yvyXLpo0QaGE59Y7hDTsTzDD25JYBZ4mHgHUZ8lrOI0= -github.com/hashicorp/serf v0.10.1 h1:Z1H2J60yRKvfDYAOZLd2MU0ND4AH/WDz7xYHDWQsIPY= -github.com/hashicorp/serf v0.10.1/go.mod h1:yL2t6BqATOLGc5HF7qbFkTfXoPIY0WZdWHfEvMqbG+4= +github.com/hashicorp/memberlist v0.5.2 h1:rJoNPWZ0juJBgqn48gjy59K5H4rNgvUoM1kUD7bXiuI= +github.com/hashicorp/memberlist v0.5.2/go.mod h1:Ri9p/tRShbjYnpNf4FFPXG7wxEGY4Nrcn6E7jrVa//4= +github.com/hashicorp/serf v0.10.2 h1:m5IORhuNSjaxeljg5DeQVDlQyVkhRIjJDimbkCa8aAc= +github.com/hashicorp/serf v0.10.2/go.mod h1:T1CmSGfSeGfnfNy/w0odXQUR1rfECGd2Qdsp84DjOiY= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= github.com/icrowley/fake v0.0.0-20180203215853-4178557ae428 h1:Mo9W14pwbO9VfRe+ygqZ8dFbPpoIK1HFrG/zjTuQ+nc= github.com/icrowley/fake v0.0.0-20180203215853-4178557ae428/go.mod h1:uhpZMVGznybq1itEKXj6RYw9I71qK4kH+OGMjRC4KEo= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= +github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4= github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/jtolds/gls v4.2.1+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= +github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/klauspost/compress v1.17.11 h1:In6xLpyWOi1+C7tXUUWv2ot1QvBjxevKAaI6IXrJmUc= @@ -355,6 +343,7 @@ github.com/klauspost/compress v1.17.11/go.mod h1:pMDklpSncoRMuLFrf1W9Ss9KT+0rH90 github.com/klauspost/pgzip v1.2.6 h1:8RXeL5crjEUFnR2/Sn6GJNWtSQ3Dk8pq4CL3jvdDyjU= github.com/klauspost/pgzip v1.2.6/go.mod h1:Ch1tH69qFZu15pkjo5kYi6mth2Zzwzt50oCQKQE9RUs= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= @@ -368,42 +357,31 @@ github.com/krishicks/yaml-patch v0.0.10 h1:H4FcHpnNwVmw8u0MjPRjWyIXtco6zM2F78t+5 github.com/krishicks/yaml-patch v0.0.10/go.mod h1:Sm5TchwZS6sm7RJoyg87tzxm2ZcKzdRE4Q7TjNhPrME= github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= -github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY= -github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= -github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= -github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= -github.com/mattn/go-colorable v0.1.6/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= +github.com/magiconair/properties v1.8.9 h1:nWcCbLq1N2v/cpNsy5WvQ37Fb+YElfq20WJ/a8RkpQM= +github.com/magiconair/properties v1.8.9/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= github.com/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= -github.com/mattn/go-colorable v0.1.13 h1:fFA4WZxdEF4tXPZVKMLwD8oUnCTTo08duU7wxecdEvA= -github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovkB8vQcUbaXHg= +github.com/mattn/go-colorable v0.1.14 h1:9A9LHSqF/7dyVVX6g0U9cwm9pG3kP9gSzcuIPHPsaIE= +github.com/mattn/go-colorable v0.1.14/go.mod h1:6LmQG8QLFO4G5z1gPvYEzlUgJ2wF+stgPZH1UqBm1s8= github.com/mattn/go-ieproxy v0.0.1/go.mod h1:pYabZ6IHcRpFh7vIaLfK7rdcWgFEb3SFJ6/gNWuh88E= github.com/mattn/go-ieproxy v0.0.12 h1:OZkUFJC3ESNZPQ+6LzC3VJIFSnreeFLQyqvBWtvfL2M= github.com/mattn/go-ieproxy v0.0.12/go.mod h1:Vn+N61199DAnVeTgaF8eoB9PvLO8P3OBnG95ENh7B7c= -github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= -github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= -github.com/mattn/go-isatty v0.0.11/go.mod h1:PhnuNfih5lzO57/f3n+odYbM4JtupLOxQOAqxQCu2WE= 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.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= github.com/mattn/go-runewidth v0.0.16 h1:E5ScNMtiwvlvB5paMFdw9p4kSQzbXFikJ5SQO6TULQc= github.com/mattn/go-runewidth v0.0.16/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= -github.com/miekg/dns v1.1.26/go.mod h1:bPDLeHnStXmXAq1m/Ch/hvfNHr14JKNPMBo3VZKjuso= -github.com/miekg/dns v1.1.41/go.mod h1:p6aan82bvRIyn+zDIv9xYNUpwa73JcSh9BKwknJysuI= -github.com/miekg/dns v1.1.55 h1:GoQ4hpsj0nFLYe+bWiCToyrBEJXkQfOOIvFGFy0lEgo= -github.com/miekg/dns v1.1.55/go.mod h1:uInx36IzPl7FYnDcMeVWxj9byh7DutNykX4G9Sj60FY= +github.com/miekg/dns v1.1.56 h1:5imZaSeoRNvpM9SzWNhEcP9QliKiz20/dA2QabIGVnE= +github.com/miekg/dns v1.1.56/go.mod h1:cRm6Oo2C8TY9ZS/TqsSrseAcncm74lfK5G+ikN2SWWY= github.com/minio/minio-go v0.0.0-20190131015406-c8a261de75c1 h1:jw16EimP5oAEM/2wt+SiEUov/YDyTCTDuPtIKgQIvk0= github.com/minio/minio-go v0.0.0-20190131015406-c8a261de75c1/go.mod h1:vuvdOZLJuf5HmJAJrKV64MmozrSsk+or0PB5dzdfspg= -github.com/mitchellh/cli v1.1.0/go.mod h1:xcISNoH86gajksDmfB23e/pu+B+GeFRMYmoHXxx3xhI= github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= -github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= -github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= -github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= +github.com/mitchellh/mapstructure v1.5.1-0.20231216201459-8508981c8b6c h1:cqn374mizHuIWj+OSJCajGr/phAmuMug9qIX3l9CflE= +github.com/mitchellh/mapstructure v1.5.1-0.20231216201459-8508981c8b6c/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= 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= @@ -413,6 +391,7 @@ github.com/montanaflynn/stats v0.7.1/go.mod h1:etXPPgVO6n31NxCd9KQUMvCM+ve0ruNzt github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= +github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/ncruces/go-strftime v0.1.9 h1:bY0MQC28UADQmHmaF5dgpLmImcShSi2kHU9XLdhx/f4= github.com/ncruces/go-strftime v0.1.9/go.mod h1:Fwc5htZGVVkseilnfgOVb9mKy6w1naJmn9CehxcKcls= github.com/ngdinhtoan/glide-cleanup v0.2.0/go.mod h1:UQzsmiDOb8YV3nOsCxK/c9zPpCZVNoHScRE3EO9pVMM= @@ -431,14 +410,13 @@ github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7J github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= github.com/onsi/gomega v1.23.0 h1:/oxKu9c2HVap+F3PfKort2Hw5DEU+HGlW8n+tguWsys= github.com/onsi/gomega v1.23.0/go.mod h1:Z/NWtiqwBrwUt4/2loMmHL63EDLnYHmVbuBpDr2vQAg= -github.com/opentracing-contrib/go-grpc v0.1.0 h1:9JHDtQXv6UL0tFF8KJB/4ApJgeOcaHp1h07d0PJjESc= -github.com/opentracing-contrib/go-grpc v0.1.0/go.mod h1:i3/jx/TvJZ/HKidtT4XGIi/NosUEpzS9xjVJctbKZzI= +github.com/opentracing-contrib/go-grpc v0.1.1 h1:Ws7IN1zyiL1DFqKQPhRXuKe5pLYzMfdxnC1qtajE2PE= +github.com/opentracing-contrib/go-grpc v0.1.1/go.mod h1:Nu6sz+4zzgxXu8rvKfnwjBEmHsuhTigxRwV2RhELrS8= github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= github.com/opentracing/opentracing-go v1.2.0 h1:uEJPy/1a5RIPAJ0Ov+OIO8OxWu77jEv+1B0VhjKrZUs= github.com/opentracing/opentracing-go v1.2.0/go.mod h1:GxEUsuufX4nBwe+T+Wl9TAgYrxe9dPLANfrWvHYVTgc= github.com/outcaste-io/ristretto v0.2.3 h1:AK4zt/fJ76kjlYObOeNwh4T3asEuaCmp26pOvUOL9w0= github.com/outcaste-io/ristretto v0.2.3/go.mod h1:W8HywhmtlopSB1jeMg3JtdIhf+DYkLAr0VN/s4+MHac= -github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/pascaldekloe/goe v0.1.0 h1:cBOtyMzM9HTpWjXfbbunk26uA6nG3a8n06Wieeh0MwY= github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/patrickmn/go-cache v2.1.0+incompatible h1:HRMgzkcYKYpi3C8ajMPV8OFXaaRUnok+kx1WdO15EQc= @@ -458,16 +436,16 @@ github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/planetscale/pargzip v0.0.0-20201116224723-90c7fc03ea8a h1:y0OpQ4+5tKxeh9+H+2cVgASl9yMZYV9CILinKOiKafA= github.com/planetscale/pargzip v0.0.0-20201116224723-90c7fc03ea8a/go.mod h1:GJFUzQuXIoB2Kjn1ZfDhJr/42D5nWOqRcIQVgCxTuIE= -github.com/planetscale/vtprotobuf v0.6.1-0.20241011083415-71c992bc3c87 h1:ejBLlgnQdFWS/QGVdGYBRKsorfWl8rOysCC6aUOlCZc= -github.com/planetscale/vtprotobuf v0.6.1-0.20241011083415-71c992bc3c87/go.mod h1:t/avpk3KcrXxUnYOhZhMXJlSEyie6gQbtLq5NM3loB8= +github.com/planetscale/vtprotobuf v0.6.1-0.20241121165744-79df5c4772f2 h1:1sLMdKq4gNANTj0dUibycTLzpIEKVnLnbaEkxws78nw= +github.com/planetscale/vtprotobuf v0.6.1-0.20241121165744-79df5c4772f2/go.mod h1:t/avpk3KcrXxUnYOhZhMXJlSEyie6gQbtLq5NM3loB8= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= -github.com/posener/complete v1.2.3/go.mod h1:WZIdtGGp+qx0sLrYKtIRAruyNpv6hFCicSgv7Sy7s/s= github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= github.com/prometheus/client_golang v1.4.0/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU= +github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= +github.com/prometheus/client_golang v1.11.1/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0= github.com/prometheus/client_golang v1.20.5 h1:cxppBPuYhUnsO6yo/aoRol4L7q7UFfdm+bR9r+8l63Y= github.com/prometheus/client_golang v1.20.5/go.mod h1:PIEt8X02hGcP8JWbeHyeZ53Y/jReSnHgO035n//V5WE= github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= @@ -478,11 +456,15 @@ github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= -github.com/prometheus/common v0.60.1 h1:FUas6GcOw66yB/73KC+BOZoFJmbo/1pojoILArPAaSc= -github.com/prometheus/common v0.60.1/go.mod h1:h0LYf1R1deLSKtD4Vdg8gy4RuOvENW2J/h19V5NADQw= +github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= +github.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9VFqTh1DIvc= +github.com/prometheus/common v0.62.0 h1:xasJaQlnWAeyHdUBeGjXmutelfJHWMRr+Fg4QszZ2Io= +github.com/prometheus/common v0.62.0/go.mod h1:vyBcEuLSvWos9B1+CyL7JZ2up+uFzXhkqml0W5zIY1I= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= +github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= +github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc= github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk= github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec h1:W09IVJc94icq4NjY3clb7Lk8O1qJ8BdBEF8z0ibU0rE= @@ -497,19 +479,19 @@ github.com/rogpeppe/go-internal v1.13.1 h1:KvO1DLK/DRN07sQ1LQKScxyZJuNnedQ5/wKSR github.com/rogpeppe/go-internal v1.13.1/go.mod h1:uMEvuHeurkdAXX61udpOXGD/AzZDWNMNyH2VO9fmH0o= github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= github.com/ryanuber/go-glob v1.0.0 h1:iQh3xXAumdQ+4Ufa5b25cRpC5TYKlno6hsv6Cb3pkBk= github.com/ryanuber/go-glob v1.0.0/go.mod h1:807d1WSdnB0XRJzKNil9Om6lcp/3a0v4qIHxIXzX/Yc= -github.com/sagikazarmark/locafero v0.6.0 h1:ON7AQg37yzcRPU69mt7gwhFEBwxI6P9T4Qu3N51bwOk= -github.com/sagikazarmark/locafero v0.6.0/go.mod h1:77OmuIc6VTraTXKXIs/uvUxKGUXjE1GbemJYHqdNjX0= +github.com/sagikazarmark/locafero v0.7.0 h1:5MqpDsTGNDhY8sGp0Aowyf0qKsPrhewaLSsFaodPcyo= +github.com/sagikazarmark/locafero v0.7.0/go.mod h1:2za3Cg5rMaTMoG/2Ulr9AwtFaIppKXTRYnozin4aB5k= github.com/sagikazarmark/slog-shim v0.1.0 h1:diDBnUNK9N/354PgrxMywXnAwEr1QZcOr6gto+ugjYE= github.com/sagikazarmark/slog-shim v0.1.0/go.mod h1:SrcSrq8aKtyuqEI1uvTDTK1arOWRIczQRv+GVI1AkeQ= github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529 h1:nn5Wsu0esKSJiIVhscUtVbo7ada43DJhG55ua/hjS5I= github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= -github.com/secure-systems-lab/go-securesystemslib v0.8.0 h1:mr5An6X45Kb2nddcFlbmfHkLguCE9laoZCUzEEpIZXA= -github.com/secure-systems-lab/go-securesystemslib v0.8.0/go.mod h1:UH2VZVuJfCYR8WgMlCU1uFsOUU+KeyrTWcSS73NBOzU= +github.com/secure-systems-lab/go-securesystemslib v0.9.0 h1:rf1HIbL64nUpEIZnjLZ3mcNEL9NBPB0iuVjyxvq3LZc= +github.com/secure-systems-lab/go-securesystemslib v0.9.0/go.mod h1:DVHKMcZ+V4/woA/peqr+L0joiRXbPpQ042GgJckkFgw= github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= +github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88= github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= github.com/sjmudd/stopwatch v0.1.1 h1:x45OvxFB5OtCkjvYtzRF5fWB857Jzjjk84Oyd5C5ebw= github.com/sjmudd/stopwatch v0.1.1/go.mod h1:BLw0oIQJ1YLXBO/q9ufK/SgnKBVIkC2qrm6uy78Zw6U= @@ -521,16 +503,17 @@ github.com/sourcegraph/conc v0.3.0 h1:OQTbbt6P72L20UqAkXXuLOj79LfEanQ+YQFNpLA9yS github.com/sourcegraph/conc v0.3.0/go.mod h1:Sdozi7LEKbFPqYX2/J+iBAM6HpqSLTASQIKqDmF7Mt0= github.com/spaolacci/murmur3 v1.1.0 h1:7c1g84S4BPRrfL5Xrdp6fOJ206sU9y293DDHaoy0bLI= github.com/spaolacci/murmur3 v1.1.0/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= -github.com/spf13/afero v1.11.0 h1:WJQKhtpdm3v2IzqG8VMqrr6Rf3UYpEF239Jy9wNepM8= -github.com/spf13/afero v1.11.0/go.mod h1:GH9Y3pIexgf1MTIWtNGyogA5MwRIDXGUr+hbWNoBjkY= -github.com/spf13/cast v1.7.0 h1:ntdiHjuueXFgm5nzDRdOS4yfT43P5Fnud6DH50rz/7w= -github.com/spf13/cast v1.7.0/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo= +github.com/spf13/afero v1.12.0 h1:UcOPyRBYczmFn6yvphxkn9ZEOY65cpwGKb5mL36mrqs= +github.com/spf13/afero v1.12.0/go.mod h1:ZTlWwG4/ahT8W7T0WQ5uYmjI9duaLQGy3Q2OAl4sk/4= +github.com/spf13/cast v1.7.1 h1:cuNEagBQEHWN1FnbGEjCXL2szYEXqfJPbP2HNUaca9Y= +github.com/spf13/cast v1.7.1/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo= github.com/spf13/cobra v1.8.1 h1:e5/vxKd/rZsfSJMUX1agtjeTDf+qv1/JdBF8gg5k9ZM= github.com/spf13/cobra v1.8.1/go.mod h1:wHxEcudfqmLYa8iTfL+OuZPbBZkmvliBWKIezN3kD9Y= github.com/spf13/jwalterweatherman v1.1.0 h1:ue6voC5bR5F8YxI5S67j9i582FU4Qvo2bmqnqMYADFk= github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo= -github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/spf13/pflag v1.0.6 h1:jFzHGLGAlb3ruxLB8MhbI6A8+AQX/2eW4qeyNZXNp2o= +github.com/spf13/pflag v1.0.6/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/viper v1.19.0 h1:RWq5SEjt8o25SROyN3z2OrDB9l7RPd3lwTWU8EcEdcI= github.com/spf13/viper v1.19.0/go.mod h1:GQUN9bilAbhU/jgc1bKs99f/suXKeUMct8Adx5+Ntkg= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= @@ -548,8 +531,8 @@ github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/ github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals= 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.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= -github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= +github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/subosito/gotenv v1.6.0 h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8= github.com/subosito/gotenv v1.6.0/go.mod h1:Dk4QP5c2W3ibzajGcXpNraDfq2IrhjMIvMSWPKKo0FU= github.com/tchap/go-patricia v2.3.0+incompatible h1:GkY4dP3cEfEASBPPkWd+AmjYxhmDkqO9/zg7R0lSQRs= @@ -561,8 +544,8 @@ github.com/tidwall/match v1.1.1/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JT github.com/tidwall/pretty v1.2.0/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= github.com/tidwall/pretty v1.2.1 h1:qjsOFOWWQl+N3RsoF5/ssm1pHmJJwhjlSbZ51I6wMl4= github.com/tidwall/pretty v1.2.1/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= -github.com/tinylib/msgp v1.2.4 h1:yLFeUGostXXSGW5vxfT5dXG/qzkn4schv2I7at5+hVU= -github.com/tinylib/msgp v1.2.4/go.mod h1:ykjzy2wzgrlvpDCRc4LA8UXy6D8bzMSuAF3WD57Gok0= +github.com/tinylib/msgp v1.2.5 h1:WeQg1whrXRFiZusidTQqzETkRpGjFjcIhW6uqWH09po= +github.com/tinylib/msgp v1.2.5/go.mod h1:ykjzy2wzgrlvpDCRc4LA8UXy6D8bzMSuAF3WD57Gok0= github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqriFuLhtthL60Sar/7RFoluCcXsuvEwTV5KM= github.com/uber/jaeger-client-go v2.30.0+incompatible h1:D6wyKGCecFaSRUpo8lCVbaOOb6ThwMmTEbhRwtKR97o= github.com/uber/jaeger-client-go v2.30.0+incompatible/go.mod h1:WVhlPFC8FDjOFMMWRy2pZqQJSXxYSwNYOkTr/Z6d3Kk= @@ -577,30 +560,32 @@ github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9dec github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= github.com/z-division/go-zookeeper v1.0.0 h1:ULsCj0nP6+U1liDFWe+2oEF6o4amixoDcDlwEUghVUY= github.com/z-division/go-zookeeper v1.0.0/go.mod h1:6X4UioQXpvyezJJl4J9NHAJKsoffCwy5wCaaTktXjOA= -go.etcd.io/etcd/api/v3 v3.5.17 h1:cQB8eb8bxwuxOilBpMJAEo8fAONyrdXTHUNcMd8yT1w= -go.etcd.io/etcd/api/v3 v3.5.17/go.mod h1:d1hvkRuXkts6PmaYk2Vrgqbv7H4ADfAKhyJqHNLJCB4= -go.etcd.io/etcd/client/pkg/v3 v3.5.17 h1:XxnDXAWq2pnxqx76ljWwiQ9jylbpC4rvkAeRVOUKKVw= -go.etcd.io/etcd/client/pkg/v3 v3.5.17/go.mod h1:4DqK1TKacp/86nJk4FLQqo6Mn2vvQFBmruW3pP14H/w= -go.etcd.io/etcd/client/v3 v3.5.17 h1:o48sINNeWz5+pjy/Z0+HKpj/xSnBkuVhVvXkjEXbqZY= -go.etcd.io/etcd/client/v3 v3.5.17/go.mod h1:j2d4eXTHWkT2ClBgnnEPm/Wuu7jsqku41v9DZ3OtjQo= -go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= -go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= -go.opentelemetry.io/contrib/detectors/gcp v1.32.0 h1:P78qWqkLSShicHmAzfECaTgvslqHxblNE9j62Ws1NK8= -go.opentelemetry.io/contrib/detectors/gcp v1.32.0/go.mod h1:TVqo0Sda4Cv8gCIixd7LuLwW4EylumVWfhjZJjDD4DU= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.57.0 h1:qtFISDHKolvIxzSs0gIaiPUPR0Cucb0F2coHC7ZLdps= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.57.0/go.mod h1:Y+Pop1Q6hCOnETWTW4NROK/q1hv50hM7yDaUTjG8lp8= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.57.0 h1:DheMAlT6POBP+gh8RUH19EOTnQIor5QE0uSRPtzCpSw= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.57.0/go.mod h1:wZcGmeVO9nzP67aYSLDqXNWK87EZWhi7JWj1v7ZXf94= -go.opentelemetry.io/otel v1.32.0 h1:WnBN+Xjcteh0zdk01SVqV55d/m62NJLJdIyb4y/WO5U= -go.opentelemetry.io/otel v1.32.0/go.mod h1:00DCVSB0RQcnzlwyTfqtxSm+DRr9hpYrHjNGiBHVQIg= -go.opentelemetry.io/otel/metric v1.32.0 h1:xV2umtmNcThh2/a/aCP+h64Xx5wsj8qqnkYZktzNa0M= -go.opentelemetry.io/otel/metric v1.32.0/go.mod h1:jH7CIbbK6SH2V2wE16W05BHCtIDzauciCRLoc/SyMv8= -go.opentelemetry.io/otel/sdk v1.32.0 h1:RNxepc9vK59A8XsgZQouW8ue8Gkb4jpWtJm9ge5lEG4= -go.opentelemetry.io/otel/sdk v1.32.0/go.mod h1:LqgegDBjKMmb2GC6/PrTnteJG39I8/vJCAP9LlJXEjU= -go.opentelemetry.io/otel/sdk/metric v1.32.0 h1:rZvFnvmvawYb0alrYkjraqJq0Z4ZUJAiyYCU9snn1CU= -go.opentelemetry.io/otel/sdk/metric v1.32.0/go.mod h1:PWeZlq0zt9YkYAp3gjKZ0eicRYvOh1Gd+X99x6GHpCQ= -go.opentelemetry.io/otel/trace v1.32.0 h1:WIC9mYrXf8TmY/EXuULKc8hR17vE+Hjv2cssQDe03fM= -go.opentelemetry.io/otel/trace v1.32.0/go.mod h1:+i4rkvCraA+tG6AzwloGaCtkx53Fa+L+V8e9a7YvhT8= +go.etcd.io/etcd/api/v3 v3.5.18 h1:Q4oDAKnmwqTo5lafvB+afbgCDF7E35E4EYV2g+FNGhs= +go.etcd.io/etcd/api/v3 v3.5.18/go.mod h1:uY03Ob2H50077J7Qq0DeehjM/A9S8PhVfbQ1mSaMopU= +go.etcd.io/etcd/client/pkg/v3 v3.5.18 h1:mZPOYw4h8rTk7TeJ5+3udUkfVGBqc+GCjOJYd68QgNM= +go.etcd.io/etcd/client/pkg/v3 v3.5.18/go.mod h1:BxVf2o5wXG9ZJV+/Cu7QNUiJYk4A29sAhoI5tIRsCu4= +go.etcd.io/etcd/client/v3 v3.5.18 h1:nvvYmNHGumkDjZhTHgVU36A9pykGa2K4lAJ0yY7hcXA= +go.etcd.io/etcd/client/v3 v3.5.18/go.mod h1:kmemwOsPU9broExyhYsBxX4spCTDX3yLgPMWtpBXG6E= +go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= +go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= +go.opentelemetry.io/contrib/detectors/gcp v1.34.0 h1:JRxssobiPg23otYU5SbWtQC//snGVIM3Tx6QRzlQBao= +go.opentelemetry.io/contrib/detectors/gcp v1.34.0/go.mod h1:cV4BMFcscUR/ckqLkbfQmF0PRsq8w/lMGzdbCSveBHo= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.59.0 h1:rgMkmiGfix9vFJDcDi1PK8WEQP4FLQwLDfhp5ZLpFeE= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.59.0/go.mod h1:ijPqXp5P6IRRByFVVg9DY8P5HkxkHE5ARIa+86aXPf4= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.59.0 h1:CV7UdSGJt/Ao6Gp4CXckLxVRRsRgDHoI8XjbL3PDl8s= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.59.0/go.mod h1:FRmFuRJfag1IZ2dPkHnEoSFVgTVPUd2qf5Vi69hLb8I= +go.opentelemetry.io/otel v1.34.0 h1:zRLXxLCgL1WyKsPVrgbSdMN4c0FMkDAskSTQP+0hdUY= +go.opentelemetry.io/otel v1.34.0/go.mod h1:OWFPOQ+h4G8xpyjgqo4SxJYdDQ/qmRH+wivy7zzx9oI= +go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.29.0 h1:WDdP9acbMYjbKIyJUhTvtzj601sVJOqgWdUxSdR/Ysc= +go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.29.0/go.mod h1:BLbf7zbNIONBLPwvFnwNHGj4zge8uTCM/UPIVW1Mq2I= +go.opentelemetry.io/otel/metric v1.34.0 h1:+eTR3U0MyfWjRDhmFMxe2SsW64QrZ84AOhvqS7Y+PoQ= +go.opentelemetry.io/otel/metric v1.34.0/go.mod h1:CEDrp0fy2D0MvkXE+dPV7cMi8tWZwX3dmaIhwPOaqHE= +go.opentelemetry.io/otel/sdk v1.34.0 h1:95zS4k/2GOy069d321O8jWgYsW3MzVV+KuSPKp7Wr1A= +go.opentelemetry.io/otel/sdk v1.34.0/go.mod h1:0e/pNiaMAqaykJGKbi+tSjWfNNHMTxoC9qANsCzbyxU= +go.opentelemetry.io/otel/sdk/metric v1.34.0 h1:5CeK9ujjbFVL5c1PhLuStg1wxA7vQv7ce1EK0Gyvahk= +go.opentelemetry.io/otel/sdk/metric v1.34.0/go.mod h1:jQ/r8Ze28zRKoNRdkjCZxfs6YvBTG1+YIqyFVFYec5w= +go.opentelemetry.io/otel/trace v1.34.0 h1:+ouXS2V8Rd4hp4580a8q23bg0azF2nI8cqLYnC8mh/k= +go.opentelemetry.io/otel/trace v1.34.0/go.mod h1:Svm7lSjQD7kG7KJ/MUHPVXSDGz2OX4h0M2jHBhmSfRE= go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= go.uber.org/atomic v1.9.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= go.uber.org/atomic v1.11.0 h1:ZvwS0R+56ePWxUNi+Atn9dWONBPp/AUETXlHW0DxSjE= @@ -608,8 +593,8 @@ go.uber.org/atomic v1.11.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0 go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A= go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= -go.uber.org/mock v0.2.0 h1:TaP3xedm7JaAgScZO7tlvlKrqT0p7I6OsdGB5YNSMDU= -go.uber.org/mock v0.2.0/go.mod h1:J0y0rp9L3xiff1+ZBfKxlC1fz2+aO16tw0tsDOixfuM= +go.uber.org/mock v0.5.0 h1:KAMbZvZPyBPWgD14IrIQ38QCyjwpvVVV6K/bHl1IwQU= +go.uber.org/mock v0.5.0/go.mod h1:ge71pBPLYDk7QIi1LupWxdAykm7KIEFchiOqd6z7qMM= go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= @@ -619,16 +604,15 @@ go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190128193316-c7b33c32a30b/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20190923035154-9ee001bba392/go.mod h1:/lpIB1dKB+9EgE3H3cr1v9wB50oz8l4C4h62xy7jSTY= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20201002170205-7f63de1d35b0/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20201016220609-9e8e0b390897/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.31.0 h1:ihbySMvVjLAeSH1IbfcRTkD/iNscyz8rGzjF/E5hV6U= -golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= +golang.org/x/crypto v0.32.0 h1:euUpcYgM8WcP71gNpTqQCn6rC2t6ULUPiOzfWaXVVfc= +golang.org/x/crypto v0.32.0/go.mod h1:ZnnJkOaASj8g0AjIduWNlq2NRxL0PlBrbKVyZ6V/Ugc= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f h1:XdNn9LlyWAhLVp6P/i8QYBW+hlyhrhei9uErw2B5GJo= -golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f/go.mod h1:D5SMRVC3C2/4+F/DB1wZsLRnSNimn2Sp/NPsCrsv8ak= +golang.org/x/exp v0.0.0-20250128182459-e0ece0dbea4c h1:KL/ZBHXgKGVmuZBZ01Lt57yE5ws8ZPSkkihmEyq7FXc= +golang.org/x/exp v0.0.0-20250128182459-e0ece0dbea4c/go.mod h1:tujkw807nyEEAamNbDrEGzRav+ilXA7PCRAd6xsmwiU= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= @@ -636,8 +620,8 @@ golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHl golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.22.0 h1:D4nJWe9zXqHOmWqj4VMOJhvzj7bEZg4wEYa759z1pH4= -golang.org/x/mod v0.22.0/go.mod h1:6SkKJ3Xj0I0BrPOZoBy3bdMptDDU9oJrpohJ3eWZ1fY= +golang.org/x/mod v0.23.0 h1:Zb7khfcRGKk+kqfxFaP5tZqCnDZMjC5VtUBs87Hr6QM= +golang.org/x/mod v0.23.0/go.mod h1:6SkKJ3Xj0I0BrPOZoBy3bdMptDDU9oJrpohJ3eWZ1fY= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -649,146 +633,131 @@ golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190923162816-aa69164e4478/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20191112182307-2180aed22343/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= -golang.org/x/net v0.0.0-20210410081132-afb366fc7cd1/go.mod h1:9tjilg8BloeKEkVJvy7fQ90B1CfIiPueXVOjqfkSzI8= golang.org/x/net v0.0.0-20210610132358-84b48f89b13b/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.33.0 h1:74SYHlV8BIgHIFC/LrYkOGIwL19eTYXQ5wc6TBuO36I= -golang.org/x/net v0.33.0/go.mod h1:HXLR5J+9DxmrqMwG9qjGCxZ+zKXxBru04zlTvWlWuN4= +golang.org/x/net v0.34.0 h1:Mb7Mrk043xzHgnRM88suvJFwzVrRfHEHJEl5/71CKw0= +golang.org/x/net v0.34.0/go.mod h1:di0qlW3YNM5oh6GqDGQr92MyTozJPmybPK4Ev/Gm31k= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= -golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.24.0 h1:KTBBxWqUa0ykRPLtV69rRto9TLXcqYkeswu48x/gvNE= -golang.org/x/oauth2 v0.24.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= +golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.26.0 h1:afQXWNNaeC4nvZ0Ed9XvCCzXM6UHJG7iCg0W4fPqSBE= +golang.org/x/oauth2 v0.26.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= 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= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ= -golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= -golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sync v0.11.0 h1:GGz8+XQP4FvTTrjZPzNKTMFtSXH80RAzG+5ghFPgK9w= +golang.org/x/sync v0.11.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= 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= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190124100055-b90733256f2e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190922100055-0a153f010e69/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190924154521-2837fb4f24fe/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191112214154-59a1497f0cea/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210112080510-489259a85091/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210303074136-134d130e1a04/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/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-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211025201205-69cdffdb9359/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220627191245-f75cf1eec38b/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-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA= -golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.30.0 h1:QjkSwP/36a20jFYWkSue1YwXzLmsV5Gfq7Eiy72C1uc= +golang.org/x/sys v0.30.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= -golang.org/x/term v0.27.0 h1:WP60Sv1nlK1T6SupCHbXzSaN0b9wUmsPoRS9b61A23Q= -golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM= +golang.org/x/term v0.29.0 h1:L6pJp37ocefwRRtYPKSWOWzOtWSxVajvz2ldH/xi3iU= +golang.org/x/term v0.29.0/go.mod h1:6bl4lRlvVuDgSf3179VpIxBF0o10JUpXWOnI7nErv7s= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= -golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= -golang.org/x/time v0.8.0 h1:9i3RxcPv3PZnitoVGMPDKZSq1xW1gK1Xy3ArNOGZfEg= -golang.org/x/time v0.8.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= +golang.org/x/text v0.22.0 h1:bofq7m3/HAFvbF51jz3Q9wLg3jkvSPuiZu/pD1XwgtM= +golang.org/x/text v0.22.0/go.mod h1:YRoo4H8PVmsu+E3Ou7cqLVH8oXWIHVoX0jqUWALQhfY= +golang.org/x/time v0.10.0 h1:3usCWA8tQn0L8+hFJQNgzpWbd89begxN66o1Ojdn5L4= +golang.org/x/time v0.10.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/tools v0.0.0-20190907020128-2ca718005c18/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191108193012-7d206e10da11/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.27.0 h1:qEKojBykQkQ4EynWy4S8Weg69NumxKdn40Fce3uc/8o= -golang.org/x/tools v0.27.0/go.mod h1:sUi0ZgbwW9ZPAq26Ekut+weQPR5eIM6GQLQ1Yjm1H0Q= +golang.org/x/tools v0.29.0 h1:Xx0h3TtM9rzQpQuR4dKLrdglAmCEN5Oi+P74JdhdzXE= +golang.org/x/tools v0.29.0/go.mod h1:KMQVMRsVxU6nHCFXrBPhDB8XncLNLM0lIy/F14RP588= 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= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20240903120638-7835f813f4da h1:noIWHXmPHxILtqtCOPIhSt0ABwskkZKjD3bXGnZGpNY= golang.org/x/xerrors v0.0.0-20240903120638-7835f813f4da/go.mod h1:NDW/Ps6MPRej6fsCIbMTohpP40sJ/P/vI1MoTEGwX90= -gonum.org/v1/gonum v0.14.0 h1:2NiG67LD1tEH0D7kM+ps2V+fXmsAnpUeec7n8tcr4S0= -gonum.org/v1/gonum v0.14.0/go.mod h1:AoWeoz0becf9QMWtE8iWXNXc27fK4fNeHNf/oMejGfU= -google.golang.org/api v0.205.0 h1:LFaxkAIpDb/GsrWV20dMMo5MR0h8UARTbn24LmD+0Pg= -google.golang.org/api v0.205.0/go.mod h1:NrK1EMqO8Xk6l6QwRAmrXXg2v6dzukhlOyvkYtnvUuc= +gonum.org/v1/gonum v0.15.1 h1:FNy7N6OUZVUaWG9pTiD+jlhdQ3lMP+/LcTpJ6+a8sQ0= +gonum.org/v1/gonum v0.15.1/go.mod h1:eZTZuRFrzu5pcyjN5wJhcIhnUdNijYxX1T2IcrOGY0o= +google.golang.org/api v0.219.0 h1:nnKIvxKs/06jWawp2liznTBnMRQBEPpGo7I+oEypTX0= +google.golang.org/api v0.219.0/go.mod h1:K6OmjGm+NtLrIkHxv1U3a0qIf/0JOvAHd5O/6AoyKYE= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20200423170343-7949de9c1215/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= -google.golang.org/genproto v0.0.0-20200806141610-86f49bd18e98/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20241113202542-65e8d215514f h1:zDoHYmMzMacIdjNe+P2XiTmPsLawi/pCbSPfxt6lTfw= -google.golang.org/genproto v0.0.0-20241113202542-65e8d215514f/go.mod h1:Q5m6g8b5KaFFzsQFIGdJkSJDGeJiybVenoYFMMa3ohI= -google.golang.org/genproto/googleapis/api v0.0.0-20241113202542-65e8d215514f h1:M65LEviCfuZTfrfzwwEoxVtgvfkFkBUbFnRbxCXuXhU= -google.golang.org/genproto/googleapis/api v0.0.0-20241113202542-65e8d215514f/go.mod h1:Yo94eF2nj7igQt+TiJ49KxjIH8ndLYPZMIRSiRcEbg0= -google.golang.org/genproto/googleapis/rpc v0.0.0-20241113202542-65e8d215514f h1:C1QccEa9kUwvMgEUORqQD9S17QesQijxjZ84sO82mfo= -google.golang.org/genproto/googleapis/rpc v0.0.0-20241113202542-65e8d215514f/go.mod h1:GX3210XPVPUjJbTUbvwI8f2IpZDMZuPJWDzDuebbviI= +google.golang.org/genproto v0.0.0-20250204164813-702378808489 h1:nQcbCCOg2h2CQ0yA8SY3AHqriNKDvsetuq9mE/HFjtc= +google.golang.org/genproto v0.0.0-20250204164813-702378808489/go.mod h1:wkQ2Aj/xvshAUDtO/JHvu9y+AaN9cqs28QuSVSHtZSY= +google.golang.org/genproto/googleapis/api v0.0.0-20250204164813-702378808489 h1:fCuMM4fowGzigT89NCIsW57Pk9k2D12MMi2ODn+Nk+o= +google.golang.org/genproto/googleapis/api v0.0.0-20250204164813-702378808489/go.mod h1:iYONQfRdizDB8JJBybql13nArx91jcUk7zCXEsOofM4= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250204164813-702378808489 h1:5bKytslY8ViY0Cj/ewmRtrWHW64bNF03cAatUUFCdFI= +google.golang.org/genproto/googleapis/rpc v0.0.0-20250204164813-702378808489/go.mod h1:8BS3B93F/U1juMFq9+EDk+qOT5CO1R9IzXxG3PTqiRk= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= -google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= -google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= -google.golang.org/grpc v1.68.0 h1:aHQeeJbo8zAkAa3pRzrVjZlbz6uSfeOXlJNQM0RAbz0= -google.golang.org/grpc v1.68.0/go.mod h1:fmSPC5AsjSBCK54MyHRx48kpOti1/jRfOlwEWywNjWA= -google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.3.0 h1:rNBFJjBCOgVr9pWD7rs/knKL4FRTKgpZmsRfV214zcA= -google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.3.0/go.mod h1:Dk1tviKTvMCz5tvh7t+fh94dhmQVHuCt2OzJB3CTW9Y= -google.golang.org/grpc/examples v0.0.0-20210430044426-28078834f35b h1:D/GTYPo6I1oEo08Bfpuj3xl5XE+UGHj7//5fVyKxhsQ= -google.golang.org/grpc/examples v0.0.0-20210430044426-28078834f35b/go.mod h1:Ly7ZA/ARzg8fnPU9TyZIxoz33sEUuWX7txiqs8lPTgE= -google.golang.org/grpc/stats/opentelemetry v0.0.0-20241028142157-ada6787961b3 h1:hUfOButuEtpc0UvYiaYRbNwxVYr0mQQOWq6X8beJ9Gc= -google.golang.org/grpc/stats/opentelemetry v0.0.0-20241028142157-ada6787961b3/go.mod h1:jzYlkSMbKypzuu6xoAEijsNVo9ZeDF1u/zCfFgsx7jg= +google.golang.org/grpc v1.70.0 h1:pWFv03aZoHzlRKHWicjsZytKAiYCtNS0dHbXnIdq7jQ= +google.golang.org/grpc v1.70.0/go.mod h1:ofIJqVKDXx/JiXrwr2IG4/zwdH9txy3IlF40RmcJSQw= +google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.5.1 h1:F29+wU6Ee6qgu9TddPgooOdaqsxTMunOoj8KA5yuS5A= +google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.5.1/go.mod h1:5KF+wpkbTSbGcR9zteSqZV6fqFOWBl4Yde8En8MryZA= +google.golang.org/grpc/examples v0.0.0-20250204041003-947e2a4be2ba h1:w92RAwwmP8PEc4O6JrGzSoUrL/eE53n2wIG7NAcedM8= +google.golang.org/grpc/examples v0.0.0-20250204041003-947e2a4be2ba/go.mod h1:R5h+Luidkixc0mZ7sBzeKUyTv9IaBcGq9m7OgmpVLpw= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= -google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4= -google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= -google.golang.org/protobuf v1.35.1 h1:m3LfL6/Ca+fqnjnlqQXNpFPABW1UD7mjh8KO2mKFytA= -google.golang.org/protobuf v1.35.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= +google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= +google.golang.org/protobuf v1.36.4 h1:6A3ZDJHn/eNqc1i+IdefRzy/9PokBTPvcqMySR7NNIM= +google.golang.org/protobuf v1.36.4/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= gopkg.in/DataDog/dd-trace-go.v1 v1.69.1 h1:grTElrPaCfxUsrJjyPLHlVPbmlKVzWMxVdcBrGZSzEk= gopkg.in/DataDog/dd-trace-go.v1 v1.69.1/go.mod h1:U9AOeBHNAL95JXcd/SPf4a7O5GNeF/yD13sJtli/yaU= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= @@ -821,30 +790,28 @@ 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= honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -modernc.org/cc/v4 v4.21.4 h1:3Be/Rdo1fpr8GrQ7IVw9OHtplU4gWbb+wNgeoBMmGLQ= -modernc.org/cc/v4 v4.21.4/go.mod h1:HM7VJTZbUCR3rV8EYBi9wxnJ0ZBRiGE5OeGXNA0IsLQ= -modernc.org/ccgo/v4 v4.21.0 h1:kKPI3dF7RIag8YcToh5ZwDcVMIv6VGa0ED5cvh0LMW4= -modernc.org/ccgo/v4 v4.21.0/go.mod h1:h6kt6H/A2+ew/3MW/p6KEoQmrq/i3pr0J/SiwiaF/g0= +modernc.org/cc/v4 v4.24.4 h1:TFkx1s6dCkQpd6dKurBNmpo+G8Zl4Sq/ztJ+2+DEsh0= +modernc.org/cc/v4 v4.24.4/go.mod h1:uVtb5OGqUKpoLWhqwNQo/8LwvoiEBLvZXIQ/SmO6mL0= +modernc.org/ccgo/v4 v4.23.15 h1:wFDan71KnYqeHz4eF63vmGE6Q6Pc0PUGDpP0PRMYjDc= +modernc.org/ccgo/v4 v4.23.15/go.mod h1:nJX30dks/IWuBOnVa7VRii9Me4/9TZ1SC9GNtmARTy0= modernc.org/fileutil v1.3.0 h1:gQ5SIzK3H9kdfai/5x41oQiKValumqNTDXMvKo62HvE= modernc.org/fileutil v1.3.0/go.mod h1:XatxS8fZi3pS8/hKG2GH/ArUogfxjpEKs3Ku3aK4JyQ= -modernc.org/gc/v2 v2.5.0 h1:bJ9ChznK1L1mUtAQtxi0wi5AtAs5jQuw4PrPHO5pb6M= -modernc.org/gc/v2 v2.5.0/go.mod h1:wzN5dK1AzVGoH6XOzc3YZ+ey/jPgYHLuVckd62P0GYU= -modernc.org/gc/v3 v3.0.0-20241004144649-1aea3fae8852 h1:IYXPPTTjjoSHvUClZIYexDiO7g+4x+XveKT4gCIAwiY= -modernc.org/gc/v3 v3.0.0-20241004144649-1aea3fae8852/go.mod h1:Qz0X07sNOR1jWYCrJMEnbW/X55x206Q7Vt4mz6/wHp4= -modernc.org/libc v1.61.0 h1:eGFcvWpqlnoGwzZeZe3PWJkkKbM/3SUGyk1DVZQ0TpE= -modernc.org/libc v1.61.0/go.mod h1:DvxVX89wtGTu+r72MLGhygpfi3aUGgZRdAYGCAVVud0= -modernc.org/mathutil v1.6.0 h1:fRe9+AmYlaej+64JsEEhoWuAYBkOtQiMEU7n/XgfYi4= -modernc.org/mathutil v1.6.0/go.mod h1:Ui5Q9q1TR2gFm0AQRqQUaBWFLAhQpCwNcuhBOSedWPo= -modernc.org/memory v1.8.0 h1:IqGTL6eFMaDZZhEWwcREgeMXYwmW83LYW8cROZYkg+E= -modernc.org/memory v1.8.0/go.mod h1:XPZ936zp5OMKGWPqbD3JShgd/ZoQ7899TUuQqxY+peU= -modernc.org/opt v0.1.3 h1:3XOZf2yznlhC+ibLltsDGzABUGVx8J6pnFMS3E4dcq4= -modernc.org/opt v0.1.3/go.mod h1:WdSiB5evDcignE70guQKxYUl14mgWtbClRi5wmkkTX0= -modernc.org/sortutil v1.2.0 h1:jQiD3PfS2REGJNzNCMMaLSp/wdMNieTbKX920Cqdgqc= -modernc.org/sortutil v1.2.0/go.mod h1:TKU2s7kJMf1AE84OoiGppNHJwvB753OYfNl2WRb++Ss= -modernc.org/sqlite v1.33.1 h1:trb6Z3YYoeM9eDL1O8do81kP+0ejv+YzgyFo+Gwy0nM= -modernc.org/sqlite v1.33.1/go.mod h1:pXV2xHxhzXZsgT/RtTFAPY6JJDEvOTcTdwADQCCWD4k= -modernc.org/strutil v1.2.0 h1:agBi9dp1I+eOnxXeiZawM8F4LawKv4NzGWSaLfyeNZA= -modernc.org/strutil v1.2.0/go.mod h1:/mdcBmfOibveCTBxUl5B5l6W+TTH1FXPLHZE6bTosX0= +modernc.org/gc/v2 v2.6.2 h1:YBXi5Kqp6aCK3fIxwKQ3/fErvawVKwjOLItxj1brGds= +modernc.org/gc/v2 v2.6.2/go.mod h1:YgIahr1ypgfe7chRuJi2gD7DBQiKSLMPgBQe9oIiito= +modernc.org/libc v1.61.11 h1:6sZG8uB6EMMG7iTLPTndi8jyTdgAQNIeLGjCFICACZw= +modernc.org/libc v1.61.11/go.mod h1:HHX+srFdn839oaJRd0W8hBM3eg+mieyZCAjWwB08/nM= +modernc.org/mathutil v1.7.1 h1:GCZVGXdaN8gTqB1Mf/usp1Y/hSqgI2vAGGP4jZMCxOU= +modernc.org/mathutil v1.7.1/go.mod h1:4p5IwJITfppl0G4sUEDtCr4DthTaT47/N3aT6MhfgJg= +modernc.org/memory v1.8.2 h1:cL9L4bcoAObu4NkxOlKWBWtNHIsnnACGF/TbqQ6sbcI= +modernc.org/memory v1.8.2/go.mod h1:ZbjSvMO5NQ1A2i3bWeDiVMxIorXwdClKE/0SZ+BMotU= +modernc.org/opt v0.1.4 h1:2kNGMRiUjrp4LcaPuLY2PzUfqM/w9N23quVwhKt5Qm8= +modernc.org/opt v0.1.4/go.mod h1:03fq9lsNfvkYSfxrfUhZCWPk1lm4cq4N+Bh//bEtgns= +modernc.org/sortutil v1.2.1 h1:+xyoGf15mM3NMlPDnFqrteY07klSFxLElE2PVuWIJ7w= +modernc.org/sortutil v1.2.1/go.mod h1:7ZI3a3REbai7gzCLcotuw9AC4VZVpYMjDzETGsSMqJE= +modernc.org/sqlite v1.34.5 h1:Bb6SR13/fjp15jt70CL4f18JIN7p7dnMExd+UFnF15g= +modernc.org/sqlite v1.34.5/go.mod h1:YLuNmX9NKs8wRNK2ko1LW1NGYcc9FkBO69JOt1AR9JE= +modernc.org/strutil v1.2.1 h1:UneZBkQA+DX2Rp35KcM69cSsNES9ly8mQWD71HKlOA0= +modernc.org/strutil v1.2.1/go.mod h1:EHkiggD70koQxjVdSBM3JKM7k6L0FbGE5eymy9i3B9A= modernc.org/token v1.1.0 h1:Xl7Ap9dKaEs5kLoOQeQmPWevfnk/DM5qcLcYlA8ys6Y= modernc.org/token v1.1.0/go.mod h1:UGzOrNV1mAFSEB63lOFHIpNRUVMvYTc6yu1SMY/XTDM= sigs.k8s.io/yaml v1.4.0 h1:Mk1wCc2gy/F0THH0TAp1QYyJNzRm2KCLy3o5ASXVI5E= diff --git a/go/cache/theine/store.go b/go/cache/theine/store.go index 0e444c2206a..42142be3b4a 100644 --- a/go/cache/theine/store.go +++ b/go/cache/theine/store.go @@ -58,7 +58,7 @@ func NewShard[K cachekey, V any](qsize uint, doorkeeper bool) *Shard[K, V] { s := &Shard[K, V]{ hashmap: make(map[K]*Entry[K, V]), qsize: qsize, - deque: deque.New[*Entry[K, V]](), + deque: &deque.Deque[*Entry[K, V]]{}, group: NewGroup[K, V](), } if doorkeeper { diff --git a/go/cmd/vtcombo/cli/vschema_watcher.go b/go/cmd/vtcombo/cli/vschema_watcher.go index 484c7736424..7f6adad3c22 100644 --- a/go/cmd/vtcombo/cli/vschema_watcher.go +++ b/go/cmd/vtcombo/cli/vschema_watcher.go @@ -56,17 +56,20 @@ func loadKeyspacesFromDir(ctx context.Context, dir string, ts *topo.Server) { log.Fatalf("Unable to read keyspace file %v: %v", ksFile, err) } - keyspace := &vschemapb.Keyspace{} - err = json.Unmarshal(jsonData, keyspace) + ksvs := &topo.KeyspaceVSchemaInfo{ + Name: ks.Name, + Keyspace: &vschemapb.Keyspace{}, + } + err = json.Unmarshal(jsonData, ksvs.Keyspace) if err != nil { log.Fatalf("Unable to parse keyspace file %v: %v", ksFile, err) } - _, err = vindexes.BuildKeyspace(keyspace, env.Parser()) + _, err = vindexes.BuildKeyspace(ksvs.Keyspace, env.Parser()) if err != nil { log.Fatalf("Invalid keyspace definition: %v", err) } - ts.SaveVSchema(ctx, ks.Name, keyspace) + ts.SaveVSchema(ctx, ksvs) log.Infof("Loaded keyspace %v from %v\n", ks.Name, ksFile) } } diff --git a/go/flags/endtoend/vtcombo.txt b/go/flags/endtoend/vtcombo.txt index 0429281fa1f..45ca4ee2a08 100644 --- a/go/flags/endtoend/vtcombo.txt +++ b/go/flags/endtoend/vtcombo.txt @@ -44,6 +44,7 @@ Flags: --config-path strings Paths to search for config files in. (default [{{ .Workdir }}]) --config-persistence-min-interval duration minimum interval between persisting dynamic config changes back to disk (if no change has occurred, nothing is done). (default 1s) --config-type string Config file type (omit to infer config type from file extension). + --consolidator-query-waiter-cap int Configure the maximum number of clients allowed to wait on the consolidator. --consolidator-stream-query-size int Configure the stream consolidator query size in bytes. Setting to 0 disables the stream consolidator. (default 2097152) --consolidator-stream-total-size int Configure the stream consolidator total size in bytes. Setting to 0 disables the stream consolidator. (default 134217728) --consul_auth_static_file string JSON File to read the topos/tokens from. diff --git a/go/flags/endtoend/vtorc.txt b/go/flags/endtoend/vtorc.txt index ca8083709e5..57eb907cf4d 100644 --- a/go/flags/endtoend/vtorc.txt +++ b/go/flags/endtoend/vtorc.txt @@ -24,7 +24,7 @@ Flags: --bind-address string Bind address for the server. If empty, the server will listen on all available unicast and anycast IP addresses of the local system. --catch-sigpipe catch and ignore SIGPIPE on stdout and stderr if specified --change-tablets-with-errant-gtid-to-drained Whether VTOrc should be changing the type of tablets with errant GTIDs to DRAINED - --clusters_to_watch strings Comma-separated list of keyspaces or keyspace/shards that this instance will monitor and repair. Defaults to all clusters in the topology. Example: "ks1,ks2/-80" + --clusters_to_watch strings Comma-separated list of keyspaces or keyspace/keyranges that this instance will monitor and repair. Defaults to all clusters in the topology. Example: "ks1,ks2/-80" --config-file string Full path of the config file (with extension) to use. If set, --config-path, --config-type, and --config-name are ignored. --config-file-not-found-handling ConfigFileNotFoundHandling Behavior when a config file is not found. (Options: error, exit, ignore, warn) (default warn) --config-name string Name of the config file (without extension) to search for. (default "vtconfig") diff --git a/go/flags/endtoend/vttablet.txt b/go/flags/endtoend/vttablet.txt index 46cb9bf23d2..a463db305ba 100644 --- a/go/flags/endtoend/vttablet.txt +++ b/go/flags/endtoend/vttablet.txt @@ -78,6 +78,7 @@ Flags: --config-path strings Paths to search for config files in. (default [{{ .Workdir }}]) --config-persistence-min-interval duration minimum interval between persisting dynamic config changes back to disk (if no change has occurred, nothing is done). (default 1s) --config-type string Config file type (omit to infer config type from file extension). + --consolidator-query-waiter-cap int Configure the maximum number of clients allowed to wait on the consolidator. --consolidator-stream-query-size int Configure the stream consolidator query size in bytes. Setting to 0 disables the stream consolidator. (default 2097152) --consolidator-stream-total-size int Configure the stream consolidator total size in bytes. Setting to 0 disables the stream consolidator. (default 134217728) --consul_auth_static_file string JSON File to read the topos/tokens from. diff --git a/go/mysql/capabilities/capability.go b/go/mysql/capabilities/capability.go index eac25585089..1877caf11d6 100644 --- a/go/mysql/capabilities/capability.go +++ b/go/mysql/capabilities/capability.go @@ -42,6 +42,7 @@ const ( InstantExpandEnumCapability // InstantChangeColumnVisibilityCapability // MySQLUpgradeInServerFlavorCapability // + InnoDBParallelReadThreadsCapability // Supported in 8.0.14 and above, introducing innodb_parallel_read_threads variable DynamicRedoLogCapacityFlavorCapability // supported in MySQL 8.0.30 and above: https://dev.mysql.com/doc/relnotes/mysql/8.0/en/news-8-0-30.html DisableRedoLogFlavorCapability // supported in MySQL 8.0.21 and above: https://dev.mysql.com/doc/relnotes/mysql/8.0/en/news-8-0-21.html CheckConstraintsCapability // supported in MySQL 8.0.16 and above: https://dev.mysql.com/doc/relnotes/mysql/8.0/en/news-8-0-16.html @@ -100,6 +101,8 @@ func MySQLVersionHasCapability(serverVersion string, capability FlavorCapability return atLeast(8, 0, 1) case PerformanceSchemaMetadataLocksTableCapability: return atLeast(8, 0, 2) + case InnoDBParallelReadThreadsCapability: + return atLeast(8, 0, 14) case MySQLUpgradeInServerFlavorCapability: return atLeast(8, 0, 16) case CheckConstraintsCapability: diff --git a/go/mysql/capabilities/capability_test.go b/go/mysql/capabilities/capability_test.go index cf5e693840e..ea8458ba2ff 100644 --- a/go/mysql/capabilities/capability_test.go +++ b/go/mysql/capabilities/capability_test.go @@ -154,6 +154,21 @@ func TestMySQLVersionCapableOf(t *testing.T) { capability: TransactionalGtidExecutedFlavorCapability, isCapable: false, }, + { + version: "8.0.13", + capability: InnoDBParallelReadThreadsCapability, + isCapable: false, + }, + { + version: "8.0.14", + capability: InnoDBParallelReadThreadsCapability, + isCapable: true, + }, + { + version: "8.4.1", + capability: InnoDBParallelReadThreadsCapability, + isCapable: true, + }, { version: "8.0.30", capability: DynamicRedoLogCapacityFlavorCapability, diff --git a/go/mysql/decimal/cached_size.go b/go/mysql/decimal/cached_size.go index e7258579f55..87f6c201b80 100644 --- a/go/mysql/decimal/cached_size.go +++ b/go/mysql/decimal/cached_size.go @@ -29,6 +29,7 @@ func (cached *Decimal) CachedSize(alloc bool) int64 { } // field value *math/big.Int if cached.value != nil { + size += hack.RuntimeAllocSize(int64(cap(cached.value.Bits())) * 4) size += hack.RuntimeAllocSize(int64(32)) } return size diff --git a/go/os2/file.go b/go/os2/file.go new file mode 100644 index 00000000000..7c284ed1fc1 --- /dev/null +++ b/go/os2/file.go @@ -0,0 +1,50 @@ +/* +Copyright 2025 The Vitess Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package os2 + +import ( + "io/fs" + "os" +) + +const ( + // PermFile is a FileMode for regular files without world permission bits. + PermFile fs.FileMode = 0660 + // PermDirectory is a FileMode for directories without world permission bits. + PermDirectory fs.FileMode = 0770 +) + +// Create is identical to os.Create except uses 0660 permission +// rather than 0666, to exclude world read/write bit. +func Create(name string) (*os.File, error) { + return os.OpenFile(name, os.O_RDWR|os.O_CREATE|os.O_TRUNC, PermFile) +} + +// WriteFile is identical to os.WriteFile except permission of 0660 is used. +func WriteFile(name string, data []byte) error { + return os.WriteFile(name, data, PermFile) +} + +// Mkdir is identical to os.Mkdir except permission of 0770 is used. +func Mkdir(path string) error { + return os.Mkdir(path, PermDirectory) +} + +// MkdirAll is identical to os.MkdirAll except permission of 0770 is used. +func MkdirAll(path string) error { + return os.MkdirAll(path, PermDirectory) +} diff --git a/go/pools/smartconnpool/pool.go b/go/pools/smartconnpool/pool.go index b024cc656df..52346adb1a4 100644 --- a/go/pools/smartconnpool/pool.go +++ b/go/pools/smartconnpool/pool.go @@ -161,7 +161,6 @@ type ConnPool[C Connection] struct { // The pool must be ConnPool.Open before it can start giving out connections func NewPool[C Connection](config *Config[C]) *ConnPool[C] { pool := &ConnPool[C]{} - pool.freshSettingsStack.Store(-1) pool.config.maxCapacity = config.Capacity pool.config.maxIdleCount = config.MaxIdleCount pool.config.maxLifetime.Store(config.MaxLifetime.Nanoseconds()) @@ -202,8 +201,14 @@ func (pool *ConnPool[C]) open() { // The expire worker takes care of removing from the waiter list any clients whose // context has been cancelled. - pool.runWorker(pool.close, 1*time.Second, func(_ time.Time) bool { - pool.wait.expire(false) + pool.runWorker(pool.close, 100*time.Millisecond, func(_ time.Time) bool { + maybeStarving := pool.wait.expire(false) + + // Do not allow connections to starve; if there's waiters in the queue + // and connections in the stack, it means we could be starving them. + // Try getting out a connection and handing it over directly + for n := 0; n < maybeStarving && pool.tryReturnAnyConn(); n++ { + } return true }) @@ -416,20 +421,37 @@ func (pool *ConnPool[C]) put(conn *Pooled[C]) { } } - if !pool.wait.tryReturnConn(conn) { - if pool.closeOnIdleLimitReached(conn) { - return - } + pool.tryReturnConn(conn) +} + +func (pool *ConnPool[C]) tryReturnConn(conn *Pooled[C]) bool { + if pool.wait.tryReturnConn(conn) { + return true + } + if pool.closeOnIdleLimitReached(conn) { + return false + } + connSetting := conn.Conn.Setting() + if connSetting == nil { + pool.clean.Push(conn) + } else { + stack := connSetting.bucket & stackMask + pool.settings[stack].Push(conn) + pool.freshSettingsStack.Store(int64(stack)) + } + return false +} - connSetting := conn.Conn.Setting() - if connSetting == nil { - pool.clean.Push(conn) - } else { - stack := connSetting.bucket & stackMask - pool.settings[stack].Push(conn) - pool.freshSettingsStack.Store(int64(stack)) +func (pool *ConnPool[C]) tryReturnAnyConn() bool { + if conn, ok := pool.clean.Pop(); ok { + return pool.tryReturnConn(conn) + } + for u := 0; u <= stackMask; u++ { + if conn, ok := pool.settings[u].Pop(); ok { + return pool.tryReturnConn(conn) } } + return false } // closeOnIdleLimitReached closes a connection if the number of idle connections (active - inuse) in the pool @@ -484,14 +506,9 @@ func (pool *ConnPool[C]) connNew(ctx context.Context) (*Pooled[C], error) { } func (pool *ConnPool[C]) getFromSettingsStack(setting *Setting) *Pooled[C] { - fresh := pool.freshSettingsStack.Load() - if fresh < 0 { - return nil - } - var start uint32 if setting == nil { - start = uint32(fresh) + start = uint32(pool.freshSettingsStack.Load()) } else { start = setting.bucket } diff --git a/go/pools/smartconnpool/pool_test.go b/go/pools/smartconnpool/pool_test.go index 44bd431d189..2ac3d1b00e3 100644 --- a/go/pools/smartconnpool/pool_test.go +++ b/go/pools/smartconnpool/pool_test.go @@ -20,6 +20,7 @@ import ( "context" "fmt" "reflect" + "sync" "sync/atomic" "testing" "time" @@ -36,6 +37,7 @@ var ( type TestState struct { lastID, open, close, reset atomic.Int64 waits []time.Time + mu sync.Mutex chaos struct { delayConnect time.Duration @@ -45,6 +47,8 @@ type TestState struct { } func (ts *TestState) LogWait(start time.Time) { + ts.mu.Lock() + defer ts.mu.Unlock() ts.waits = append(ts.waits, start) } @@ -1125,3 +1129,68 @@ func TestApplySettingsFailure(t *testing.T) { p.put(r) } } + +func TestGetSpike(t *testing.T) { + var state TestState + + ctx := context.Background() + p := NewPool(&Config[*TestConn]{ + Capacity: 5, + IdleTimeout: time.Second, + LogWait: state.LogWait, + }).Open(newConnector(&state), nil) + + var resources [10]*Pooled[*TestConn] + + // Ensure we have a pool with 5 available resources + for i := 0; i < 5; i++ { + r, err := p.Get(ctx, nil) + + require.NoError(t, err) + resources[i] = r + assert.EqualValues(t, 5-i-1, p.Available()) + assert.Zero(t, p.Metrics.WaitCount()) + assert.Zero(t, len(state.waits)) + assert.Zero(t, p.Metrics.WaitTime()) + assert.EqualValues(t, i+1, state.lastID.Load()) + assert.EqualValues(t, i+1, state.open.Load()) + } + + for i := 0; i < 5; i++ { + p.put(resources[i]) + } + + assert.EqualValues(t, 5, p.Available()) + assert.EqualValues(t, 5, p.Active()) + assert.EqualValues(t, 0, p.InUse()) + + for i := 0; i < 2000; i++ { + wg := sync.WaitGroup{} + + ctx, cancel := context.WithTimeout(context.Background(), time.Second) + defer cancel() + + errs := make(chan error, 80) + + for j := 0; j < 80; j++ { + wg.Add(1) + + go func() { + defer wg.Done() + r, err := p.Get(ctx, nil) + defer p.put(r) + + if err != nil { + errs <- err + } + }() + } + wg.Wait() + + if len(errs) > 0 { + t.Errorf("Error getting connection: %v", <-errs) + } + + close(errs) + } +} diff --git a/go/pools/smartconnpool/waitlist.go b/go/pools/smartconnpool/waitlist.go index f16215f4b14..ef1eb1fe997 100644 --- a/go/pools/smartconnpool/waitlist.go +++ b/go/pools/smartconnpool/waitlist.go @@ -76,7 +76,7 @@ func (wl *waitlist[C]) waitForConn(ctx context.Context, setting *Setting) (*Pool // expire removes and wakes any expired waiter in the waitlist. // if force is true, it'll wake and remove all the waiters. -func (wl *waitlist[C]) expire(force bool) { +func (wl *waitlist[C]) expire(force bool) (maybeStarving int) { if wl.list.Len() == 0 { return } @@ -91,6 +91,9 @@ func (wl *waitlist[C]) expire(force bool) { expired = append(expired, e) continue } + if e.Value.age == 0 { + maybeStarving++ + } } // remove the expired waiters from the waitlist after traversing it for _, e := range expired { @@ -102,6 +105,7 @@ func (wl *waitlist[C]) expire(force bool) { for _, e := range expired { e.Value.sema.notify(false) } + return } // tryReturnConn tries handing over a connection to one of the waiters in the pool. diff --git a/go/sync2/consolidator.go b/go/sync2/consolidator.go index 401daaef1f1..df900625abb 100644 --- a/go/sync2/consolidator.go +++ b/go/sync2/consolidator.go @@ -40,6 +40,7 @@ type PendingResult interface { SetResult(*sqltypes.Result) Result() *sqltypes.Result Wait() + AddWaiterCounter(int64) *int64 } type consolidator struct { @@ -77,6 +78,7 @@ func (co *consolidator) Create(query string) (PendingResult, bool) { defer co.mu.Unlock() var r *pendingResult if r, ok := co.queries[query]; ok { + r.AddWaiterCounter(1) return r, false } r = &pendingResult{consolidator: co, query: query} @@ -122,17 +124,23 @@ func (rs *pendingResult) Wait() { rs.executing.RLock() } +func (rs *pendingResult) AddWaiterCounter(c int64) *int64 { + atomic.AddInt64(rs.consolidator.totalWaiterCount, c) + return rs.consolidator.totalWaiterCount +} + // ConsolidatorCache is a thread-safe object used for counting how often recent // queries have been consolidated. // It is also used by the txserializer package to count how often transactions // have been queued and had to wait because they targeted the same row (range). type ConsolidatorCache struct { *cache.LRUCache[*ccount] + totalWaiterCount *int64 } // NewConsolidatorCache creates a new cache with the given capacity. func NewConsolidatorCache(capacity int64) *ConsolidatorCache { - return &ConsolidatorCache{cache.NewLRUCache[*ccount](capacity)} + return &ConsolidatorCache{cache.NewLRUCache[*ccount](capacity), new(int64)} } // Record increments the count for "query" by 1. diff --git a/go/sync2/consolidator_test.go b/go/sync2/consolidator_test.go index 132a253ba29..5437bb335a6 100644 --- a/go/sync2/consolidator_test.go +++ b/go/sync2/consolidator_test.go @@ -18,11 +18,42 @@ package sync2 import ( "reflect" + "sync" "testing" "vitess.io/vitess/go/sqltypes" ) +func TestAddWaiterCount(t *testing.T) { + con := NewConsolidator() + sql := "select * from SomeTable" + pr, _ := con.Create(sql) + var wgAdd sync.WaitGroup + var wgSub sync.WaitGroup + + var concurrent = 1000 + + for i := 0; i < concurrent; i++ { + wgAdd.Add(1) + wgSub.Add(1) + go func() { + defer wgAdd.Done() + pr.AddWaiterCounter(1) + }() + go func() { + defer wgSub.Done() + pr.AddWaiterCounter(-1) + }() + } + + wgAdd.Wait() + wgSub.Wait() + + if *pr.AddWaiterCounter(0) != 0 { + t.Fatalf("Expect 0 totalWaiterCount but got: %v", *pr.AddWaiterCounter(0)) + } +} + func TestConsolidator(t *testing.T) { con := NewConsolidator() sql := "select * from SomeTable" diff --git a/go/sync2/fake_consolidator.go b/go/sync2/fake_consolidator.go index 64c59e78a5a..aadee1d37ce 100644 --- a/go/sync2/fake_consolidator.go +++ b/go/sync2/fake_consolidator.go @@ -112,3 +112,8 @@ func (fr *FakePendingResult) SetResult(result *sqltypes.Result) { func (fr *FakePendingResult) Wait() { fr.WaitCalls++ } + +// AddWaiterCounter is currently a no-op. +func (fr *FakePendingResult) AddWaiterCounter(int64) *int64 { + return new(int64) +} diff --git a/go/test/endtoend/backup/vtctlbackup/backup_utils.go b/go/test/endtoend/backup/vtctlbackup/backup_utils.go index afa5023a047..f7e013f4ce4 100644 --- a/go/test/endtoend/backup/vtctlbackup/backup_utils.go +++ b/go/test/endtoend/backup/vtctlbackup/backup_utils.go @@ -425,6 +425,18 @@ func TestBackup(t *testing.T, setupType int, streamMode string, stripes int, cDe return vterrors.Errorf(vtrpc.Code_UNKNOWN, "test failure: %s", test.name) } } + + t.Run("check for files created with global permissions", func(t *testing.T) { + t.Logf("Confirming that none of the MySQL data directories that we've created have files with global permissions") + for _, ks := range localCluster.Keyspaces { + for _, shard := range ks.Shards { + for _, tablet := range shard.Vttablets { + tablet.VttabletProcess.ConfirmDataDirHasNoGlobalPerms(t) + } + } + } + }) + return nil } diff --git a/go/test/endtoend/cluster/vttablet_process.go b/go/test/endtoend/cluster/vttablet_process.go index 65c6fbeec26..8fbe4be54d9 100644 --- a/go/test/endtoend/cluster/vttablet_process.go +++ b/go/test/endtoend/cluster/vttablet_process.go @@ -24,6 +24,7 @@ import ( "errors" "fmt" "io" + "io/fs" "net/http" "os" "os/exec" @@ -35,6 +36,8 @@ import ( "testing" "time" + "github.com/stretchr/testify/require" + "vitess.io/vitess/go/constants/sidecar" "vitess.io/vitess/go/mysql" "vitess.io/vitess/go/sqltypes" @@ -711,6 +714,63 @@ func (vttablet *VttabletProcess) IsShutdown() bool { return vttablet.proc == nil } +// ConfirmDataDirHasNoGlobalPerms confirms that no files in the tablet's data directory +// have any global/world/other permissions enabled. +func (vttablet *VttabletProcess) ConfirmDataDirHasNoGlobalPerms(t *testing.T) { + datadir := vttablet.Directory + if _, err := os.Stat(datadir); errors.Is(err, os.ErrNotExist) { + t.Logf("Data directory %s no longer exists, skipping permissions check", datadir) + return + } + + var allowedFiles = []string{ + // These are intentionally created with the world/other read bit set by mysqld itself + // during the --initialize[-insecure] step. + // See: https://dev.mysql.com/doc/mysql-security-excerpt/en/creating-ssl-rsa-files-using-mysql.html + // "On Unix and Unix-like systems, the file access mode is 644 for certificate files + // (that is, world readable) and 600 for key files (that is, accessible only by the + // account that runs the server)." + path.Join("data", "ca.pem"), + path.Join("data", "client-cert.pem"), + path.Join("data", "public_key.pem"), + path.Join("data", "server-cert.pem"), + // The domain socket must have global perms for anyone to use it. + "mysql.sock", + // These files are created by xtrabackup. + path.Join("tmp", "xtrabackup_checkpoints"), + path.Join("tmp", "xtrabackup_info"), + } + + var matches []string + fsys := os.DirFS(datadir) + err := fs.WalkDir(fsys, ".", func(p string, d fs.DirEntry, _ error) error { + // first check if the file should be skipped + for _, name := range allowedFiles { + if strings.HasSuffix(p, name) { + return nil + } + } + + info, err := d.Info() + if err != nil { + return err + } + + // check if any global bit is on the filemode + if info.Mode()&0007 != 0 { + matches = append(matches, fmt.Sprintf( + "%s (%s)", + path.Join(datadir, p), + info.Mode(), + )) + } + return nil + }) + + require.NoError(t, err, "Error walking directory") + require.Empty(t, matches, "Found files with global permissions: %s\n", strings.Join(matches, "\n")) +} + // VttabletProcessInstance returns a VttabletProcess handle for vttablet process // configured with the given Config. // The process must be manually started by calling setup() diff --git a/go/test/endtoend/vreplication/cluster_test.go b/go/test/endtoend/vreplication/cluster_test.go index bcf50d43702..1cf44e1d4c7 100644 --- a/go/test/endtoend/vreplication/cluster_test.go +++ b/go/test/endtoend/vreplication/cluster_test.go @@ -856,7 +856,7 @@ func (vc *VitessCluster) getVttabletsInKeyspace(t *testing.T, cell *Cell, ksName tablets := make(map[string]*cluster.VttabletProcess) for _, shard := range keyspace.Shards { for _, tablet := range shard.Tablets { - if tablet.Vttablet.GetTabletStatus() == "SERVING" { + if tablet.Vttablet.GetTabletStatus() == "SERVING" && (tabletType == "" || strings.EqualFold(tablet.Vttablet.GetTabletType(), tabletType)) { log.Infof("Serving status of tablet %s is %s, %s", tablet.Name, tablet.Vttablet.ServingStatus, tablet.Vttablet.GetTabletStatus()) tablets[tablet.Name] = tablet.Vttablet } diff --git a/go/test/endtoend/vreplication/vdiff_helper_test.go b/go/test/endtoend/vreplication/vdiff_helper_test.go index fcc112b670b..49fe4c45f6a 100644 --- a/go/test/endtoend/vreplication/vdiff_helper_test.go +++ b/go/test/endtoend/vreplication/vdiff_helper_test.go @@ -274,9 +274,7 @@ func getVDiffInfo(json string) *vdiffInfo { } func encodeString(in string) string { - var buf strings.Builder - sqltypes.NewVarChar(in).EncodeSQL(&buf) - return buf.String() + return sqltypes.EncodeStringSQL(in) } // generateMoreCustomers creates additional test data for better tests diff --git a/go/test/endtoend/vreplication/vreplication_test.go b/go/test/endtoend/vreplication/vreplication_test.go index 617e5f79f6a..f12e8edc759 100644 --- a/go/test/endtoend/vreplication/vreplication_test.go +++ b/go/test/endtoend/vreplication/vreplication_test.go @@ -826,6 +826,11 @@ func shardCustomer(t *testing.T, testReverse bool, cells []*Cell, sourceCellOrAl shardNames = append(shardNames, shardName) } testSwitchTrafficPermissionChecks(t, workflowType, sourceKs, shardNames, targetKs, workflow) + + testSwitchWritesErrorHandling(t, []*cluster.VttabletProcess{productTab}, []*cluster.VttabletProcess{customerTab1, customerTab2}, + workflow, workflowType) + + // Now let's confirm that it works as expected with an error. switchWrites(t, workflowType, ksWorkflow, false) checkThatVDiffFails(t, targetKs, workflow) @@ -1057,6 +1062,7 @@ func reshard(t *testing.T, ksName string, tableName string, workflow string, sou require.NoError(t, vc.AddShards(t, cells, keyspace, targetShards, defaultReplicas, defaultRdonly, tabletIDBase, targetKsOpts)) tablets := vc.getVttabletsInKeyspace(t, defaultCell, ksName, "primary") + var sourceTablets, targetTablets []*cluster.VttabletProcess // Test multi-primary setups, like a Galera cluster, which have auto increment steps > 1. for _, tablet := range tablets { @@ -1069,9 +1075,11 @@ func reshard(t *testing.T, ksName string, tableName string, workflow string, sou targetShards = "," + targetShards + "," for _, tab := range tablets { if strings.Contains(targetShards, ","+tab.Shard+",") { + targetTablets = append(targetTablets, tab) log.Infof("Waiting for vrepl to catch up on %s since it IS a target shard", tab.Shard) catchup(t, tab, workflow, "Reshard") } else { + sourceTablets = append(sourceTablets, tab) log.Infof("Not waiting for vrepl to catch up on %s since it is NOT a target shard", tab.Shard) continue } @@ -1085,6 +1093,10 @@ func reshard(t *testing.T, ksName string, tableName string, workflow string, sou if dryRunResultSwitchWrites != nil { reshardAction(t, "SwitchTraffic", workflow, ksName, "", "", callNames, "primary", "--dry-run") } + if tableName == "customer" { + testSwitchWritesErrorHandling(t, sourceTablets, targetTablets, workflow, "reshard") + } + // Now let's confirm that it works as expected with an error. reshardAction(t, "SwitchTraffic", workflow, ksName, "", "", callNames, "primary") reshardAction(t, "Complete", workflow, ksName, "", "", "", "") for tabletName, count := range counts { @@ -1656,6 +1668,140 @@ func testSwitchTrafficPermissionChecks(t *testing.T, workflowType, sourceKeyspac }) } +// testSwitchWritesErrorHandling confirms that switching writes works as expected +// in the face of vreplication lag (canSwitch() precheck) and when canceling the +// switch due to replication failing to catch up in time. +// The workflow MUST be migrating the customer table from the source to the +// target keyspace AND the workflow must currently have reads switched but not +// writes. +func testSwitchWritesErrorHandling(t *testing.T, sourceTablets, targetTablets []*cluster.VttabletProcess, workflow, workflowType string) { + t.Run("validate switch writes error handling", func(t *testing.T) { + vtgateConn := getConnection(t, vc.ClusterConfig.hostname, vc.ClusterConfig.vtgateMySQLPort) + defer vtgateConn.Close() + require.NotZero(t, len(sourceTablets), "no source tablets provided") + require.NotZero(t, len(targetTablets), "no target tablets provided") + sourceKs := sourceTablets[0].Keyspace + targetKs := targetTablets[0].Keyspace + ksWorkflow := fmt.Sprintf("%s.%s", targetKs, workflow) + var err error + sourceConns := make([]*mysql.Conn, len(sourceTablets)) + for i, tablet := range sourceTablets { + sourceConns[i], err = tablet.TabletConn(tablet.Keyspace, true) + require.NoError(t, err) + defer sourceConns[i].Close() + } + targetConns := make([]*mysql.Conn, len(targetTablets)) + for i, tablet := range targetTablets { + targetConns[i], err = tablet.TabletConn(tablet.Keyspace, true) + require.NoError(t, err) + defer targetConns[i].Close() + } + startingTestRowID := 10000000 + numTestRows := 100 + addTestRows := func() { + for i := 0; i < numTestRows; i++ { + execVtgateQuery(t, vtgateConn, sourceTablets[0].Keyspace, fmt.Sprintf("insert into customer (cid, name) values (%d, 'laggingCustomer')", + startingTestRowID+i)) + } + } + deleteTestRows := func() { + execVtgateQuery(t, vtgateConn, sourceTablets[0].Keyspace, fmt.Sprintf("delete from customer where cid >= %d", startingTestRowID)) + } + addIndex := func() { + for _, targetConn := range targetConns { + execQuery(t, targetConn, "set session sql_mode=''") + execQuery(t, targetConn, "alter table customer add unique index name_idx (name)") + } + } + dropIndex := func() { + for _, targetConn := range targetConns { + execQuery(t, targetConn, "alter table customer drop index name_idx") + } + } + lockTargetTable := func() { + for _, targetConn := range targetConns { + execQuery(t, targetConn, "lock table customer read") + } + } + unlockTargetTable := func() { + for _, targetConn := range targetConns { + execQuery(t, targetConn, "unlock tables") + } + } + cleanupTestData := func() { + dropIndex() + deleteTestRows() + } + restartWorkflow := func() { + err = vc.VtctldClient.ExecuteCommand("workflow", "--keyspace", targetKs, "start", "--workflow", workflow) + require.NoError(t, err, "failed to start workflow: %v", err) + } + waitForTargetToCatchup := func() { + waitForWorkflowState(t, vc, ksWorkflow, binlogdatapb.VReplicationWorkflowState_Running.String()) + waitForNoWorkflowLag(t, vc, targetKs, workflow) + } + + // First let's test that the prechecks work as expected. We ALTER + // the table on the target shards to add a unique index on the name + // field. + addIndex() + // Then we replicate some test rows across the target shards by + // inserting them in the source keyspace. + addTestRows() + // Now the workflow should go into the error state and the lag should + // start to climb. So we sleep for twice the max lag duration that we + // will set for the SwitchTraffic call. + lagDuration := 3 * time.Second + time.Sleep(lagDuration * 3) + out, err := vc.VtctldClient.ExecuteCommandWithOutput(workflowType, "--workflow", workflow, "--target-keyspace", targetKs, + "SwitchTraffic", "--tablet-types=primary", "--timeout=30s", "--max-replication-lag-allowed", lagDuration.String()) + // It should fail in the canSwitch() precheck. + require.Error(t, err) + require.Regexp(t, fmt.Sprintf(".*cannot switch traffic for workflow %s at this time: replication lag [0-9]+s is higher than allowed lag %s.*", + workflow, lagDuration.String()), out) + require.NotContains(t, out, "cancel migration failed") + // Confirm that queries still work fine. + execVtgateQuery(t, vtgateConn, sourceKs, "select * from customer limit 1") + cleanupTestData() + // We have to restart the workflow again as the duplicate key error + // is a permanent/terminal one. + restartWorkflow() + waitForTargetToCatchup() + + // Now let's test that the cancel works by setting the command timeout + // to a fraction (6s) of the default max repl lag duration (30s). First + // we lock the customer table on the target tablets so that we cannot + // apply the INSERTs and catch up. + lockTargetTable() + addTestRows() + timeout := lagDuration * 2 // 6s + // Use the default max-replication-lag-allowed value of 30s. + // We run the command in a goroutine so that we can unblock things + // after the timeout is reached -- as the vplayer query is blocking + // on the table lock in the MySQL layer. + wg := sync.WaitGroup{} + wg.Add(1) + go func() { + defer wg.Done() + out, err = vc.VtctldClient.ExecuteCommandWithOutput(workflowType, "--workflow", workflow, "--target-keyspace", targetKs, + "SwitchTraffic", "--tablet-types=primary", "--timeout", timeout.String()) + }() + time.Sleep(timeout) + // Now we can unblock things and let it continue. + unlockTargetTable() + wg.Wait() + // It should fail due to the command context timeout and we should + // successfully cancel. + require.Error(t, err) + require.Contains(t, out, "failed to sync up replication between the source and target") + require.NotContains(t, out, "cancel migration failed") + // Confirm that queries still work fine. + execVtgateQuery(t, vtgateConn, sourceKs, "select * from customer limit 1") + deleteTestRows() + waitForTargetToCatchup() + }) +} + // restartWorkflow confirms that a workflow can be successfully // stopped and started. func restartWorkflow(t *testing.T, ksWorkflow string) { diff --git a/go/test/endtoend/vtgate/keyspace_watches/keyspace_watch_test.go b/go/test/endtoend/vtgate/keyspace_watches/keyspace_watch_test.go index 1eb31663577..e3b66dd49bd 100644 --- a/go/test/endtoend/vtgate/keyspace_watches/keyspace_watch_test.go +++ b/go/test/endtoend/vtgate/keyspace_watches/keyspace_watch_test.go @@ -46,8 +46,7 @@ var ( PRIMARY KEY (id) ) Engine=InnoDB;` vschemaDDL = "alter vschema create vindex test_vdx using hash" - vschemaDDLError = fmt.Sprintf("Error 1105 (HY000): cannot perform Update on keyspaces/%s/VSchema as the topology server connection is read-only", - keyspaceUnshardedName) + vschemaDDLError = "Error 1105 (HY000): cannot update VSchema as the topology server connection is read-only" ) // createConfig creates a config file in TmpDir in vtdataroot and writes the given data. diff --git a/go/test/endtoend/vtgate/vschema/vschema_test.go b/go/test/endtoend/vtgate/vschema/vschema_test.go index 5cd01449b71..a3fea766584 100644 --- a/go/test/endtoend/vtgate/vschema/vschema_test.go +++ b/go/test/endtoend/vtgate/vschema/vschema_test.go @@ -23,15 +23,20 @@ import ( "fmt" "os" "path" + "strings" + "sync" + "sync/atomic" "testing" "time" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" + "golang.org/x/exp/rand" "vitess.io/vitess/go/mysql" "vitess.io/vitess/go/test/endtoend/cluster" "vitess.io/vitess/go/test/endtoend/utils" + "vitess.io/vitess/go/vt/vtgate" ) var ( @@ -164,10 +169,18 @@ func TestVSchema(t *testing.T) { utils.AssertMatches(t, conn, "delete from vt_user", `[]`) if utils.BinaryIsAtLeastAtVersion(22, "vtgate") { + // Don't allow any users to modify the vschema via the SQL API + // in order to test that behavior. writeConfig(configFile, map[string]string{ "vschema_ddl_authorized_users": "", }) - + // Allow anyone to modify the vschema via the SQL API again when + // the test completes. + defer func() { + writeConfig(configFile, map[string]string{ + "vschema_ddl_authorized_users": "%", + }) + }() require.EventuallyWithT(t, func(t *assert.CollectT) { _, err = conn.ExecuteFetch("ALTER VSCHEMA DROP TABLE main", 1000, false) assert.Error(t, err) @@ -175,3 +188,69 @@ func TestVSchema(t *testing.T) { }, 5*time.Second, 100*time.Millisecond) } } + +// TestVSchemaSQLAPIConcurrency tests that we prevent lost writes when we have +// concurrent vschema changes being made via the SQL API. +func TestVSchemaSQLAPIConcurrency(t *testing.T) { + if !utils.BinaryIsAtLeastAtVersion(22, "vtgate") { + t.Skip("This test requires vtgate version 22 or higher") + } + + ctx, cancel := context.WithTimeout(context.Background(), 90*time.Second) + defer cancel() + conn, err := mysql.Connect(ctx, &vtParams) + require.NoError(t, err) + defer conn.Close() + + initialVSchema, err := conn.ExecuteFetch("SHOW VSCHEMA TABLES", -1, false) + require.NoError(t, err) + baseTableName := "t" + numTables := 1000 + mysqlConns := make([]*mysql.Conn, numTables) + for i := 0; i < numTables; i++ { + c, err := mysql.Connect(ctx, &vtParams) + require.NoError(t, err) + mysqlConns[i] = c + defer c.Close() + } + + isVersionMismatchErr := func(err error) bool { + // The error we get is an SQL error so we have to do string matching. + return err != nil && strings.Contains(err.Error(), vtgate.ErrStaleVSchema.Error()) + } + + wg := sync.WaitGroup{} + preventedLostWrites := atomic.Bool{} + for i := 0; i < numTables; i++ { + wg.Add(1) + go func() { + defer wg.Done() + time.Sleep(time.Duration(rand.Intn(100) * int(time.Nanosecond))) + tableName := fmt.Sprintf("%s%d", baseTableName, i) + _, err = mysqlConns[i].ExecuteFetch(fmt.Sprintf("ALTER VSCHEMA ADD TABLE %s", tableName), -1, false) + if isVersionMismatchErr(err) { + preventedLostWrites.Store(true) + } else { + require.NoError(t, err) + time.Sleep(time.Duration(rand.Intn(75) * int(time.Nanosecond))) + _, err = mysqlConns[i].ExecuteFetch(fmt.Sprintf("ALTER VSCHEMA DROP TABLE %s", tableName), -1, false) + if isVersionMismatchErr(err) { + preventedLostWrites.Store(true) + } else { + require.NoError(t, err) + } + } + }() + } + wg.Wait() + require.True(t, preventedLostWrites.Load()) + + // Cleanup any tables that were not dropped because the DROP query + // failed due to a bad node version. + for i := 0; i < numTables; i++ { + tableName := fmt.Sprintf("%s%d", baseTableName, i) + _, _ = mysqlConns[i].ExecuteFetch(fmt.Sprintf("ALTER VSCHEMA DROP TABLE %s", tableName), -1, false) + } + // Confirm that we're back to the initial state. + utils.AssertMatches(t, conn, "SHOW VSCHEMA TABLES", fmt.Sprintf("%v", initialVSchema.Rows)) +} diff --git a/go/test/utils/diff.go b/go/test/utils/diff.go index 014d4760d87..2344c027c39 100644 --- a/go/test/utils/diff.go +++ b/go/test/utils/diff.go @@ -68,7 +68,7 @@ func MustMatchFn(ignoredFields ...string) func(t *testing.T, want, got any, errM t.Helper() diff := cmp.Diff(want, got, diffOpts...) if diff != "" { - t.Fatalf("%v: (-want +got)\n%v", errMsg, diff) + require.FailNow(t, "%v: (-want +got)\n%v", errMsg, diff) } } } diff --git a/go/tools/sizegen/sizegen.go b/go/tools/sizegen/sizegen.go index 17b155ad3f4..cc733c8826d 100644 --- a/go/tools/sizegen/sizegen.go +++ b/go/tools/sizegen/sizegen.go @@ -107,6 +107,8 @@ func isPod(tt types.Type) bool { return false } return true + case *types.Alias: + return isPod(types.Unalias(tt)) default: return false } @@ -152,8 +154,37 @@ func (sizegen *sizegen) generateType(pkg *types.Package, file *codeFile, named * sizegen.generateTyp(tt) } }) + + case *types.Slice: + impl, flag := sizegen.sizeImplForSlice(named.Obj(), tt) + file.impls = append(file.impls, codeImpl{ + code: impl, + name: named.String(), + flags: flag, + }) + case *types.Map: + impl, flag := sizegen.sizeImplForMap(named.Obj(), tt) + file.impls = append(file.impls, codeImpl{ + code: impl, + name: named.String(), + flags: flag, + }) + case *types.Basic: + impl, flag := sizegen.sizeImplForBasic(named.Obj(), tt) + file.impls = append(file.impls, codeImpl{ + code: impl, + name: named.String(), + flags: flag, + }) + case *types.Signature: + impl, flag := sizegen.sizeImplForSignature(named.Obj(), tt) + file.impls = append(file.impls, codeImpl{ + code: impl, + name: named.String(), + flags: flag, + }) default: - // no-op + panic(fmt.Sprintf("unhandled type: %v (%T)", named, tt)) } } @@ -286,6 +317,77 @@ func (sizegen *sizegen) sizeImplForStruct(name *types.TypeName, st *types.Struct return f, funcFlags } +func (sizegen *sizegen) sizeImplForSlice(name *types.TypeName, st *types.Slice) (jen.Code, codeFlag) { + var stmt []jen.Code + var funcFlags codeFlag + stmt, funcFlags = sizegen.sizeStmtForArray(stmt, jen.Op("*").Add(jen.Id("cached")), st.Elem()) + + f := jen.Func() + f.Params(jen.Id("cached").Op("*").Id(name.Name())) + f.Id("CachedSize").Params(jen.Id("alloc").Id("bool")).Int64() + f.BlockFunc(func(b *jen.Group) { + b.Add(jen.If(jen.Id("cached").Op("==").Nil()).Block(jen.Return(jen.Lit(int64(0))))) + b.Add(jen.Id("size").Op(":=").Lit(int64(0))) + b.Add(jen.If(jen.Id("alloc")).Block( + jen.Id("size").Op("+=").Lit(hack.RuntimeAllocSize(sizegen.sizes.Sizeof(st))), + )) + for _, s := range stmt { + b.Add(s) + } + b.Add(jen.Return(jen.Id("size"))) + }) + return f, funcFlags +} + +func (sizegen *sizegen) sizeImplForMap(name *types.TypeName, st *types.Map) (jen.Code, codeFlag) { + stmt := sizegen.sizeStmtForMap(jen.Op("*").Add(jen.Id("cached")), st) + + f := jen.Func() + f.Params(jen.Id("cached").Op("*").Id(name.Name())) + f.Id("CachedSize").Params(jen.Id("alloc").Id("bool")).Int64() + f.BlockFunc(func(b *jen.Group) { + b.Add(jen.If(jen.Id("cached").Op("==").Nil()).Block(jen.Return(jen.Lit(int64(0))))) + b.Add(jen.Id("size").Op(":=").Lit(int64(0))) + b.Add(jen.If(jen.Id("alloc")).Block( + jen.Id("size").Op("+=").Lit(hack.RuntimeAllocSize(sizegen.sizes.Sizeof(st))), + )) + for _, s := range stmt { + b.Add(s) + } + b.Add(jen.Return(jen.Id("size"))) + }) + return f, 0 +} + +func (sizegen *sizegen) sizeImplForBasic(name *types.TypeName, st *types.Basic) (jen.Code, codeFlag) { + f := jen.Func() + f.Params(jen.Id("cached").Op("*").Id(name.Name())) + f.Id("CachedSize").Params(jen.Id("alloc").Id("bool")).Int64() + f.BlockFunc(func(b *jen.Group) { + b.Add(jen.If(jen.Id("cached").Op("==").Nil()).Block(jen.Return(jen.Lit(int64(0))))) + b.Add(jen.Id("size").Op(":=").Lit(int64(0))) + b.Add(jen.If(jen.Id("alloc")).Block( + jen.Id("size").Op("+=").Do(mallocsize(jen.Lit(sizegen.sizes.Sizeof(st)))), + )) + if st.Info()&types.IsString != 0 { + b.Add(jen.Id("size").Op("+=").Do(mallocsize(jen.Int64().Call(jen.Len(jen.Op("*").Add(jen.Id("cached"))))))) + } + b.Add(jen.Return(jen.Id("size"))) + }) + return f, 0 +} + +func (sizegen *sizegen) sizeImplForSignature(name *types.TypeName, _ *types.Signature) (jen.Code, codeFlag) { + f := jen.Func() + f.Params(jen.Id("cached").Op("*").Id(name.Name())) + f.Id("CachedSize").Params(jen.Id("alloc").Id("bool")).Int64() + f.BlockFunc(func(b *jen.Group) { + // assume that function pointers do not allocate (although they might, if they're closures) + b.Add(jen.Return(jen.Lit(int64(0)))) + }) + return f, 0 +} + func (sizegen *sizegen) sizeStmtForMap(fieldName *jen.Statement, m *types.Map) []jen.Code { const bucketCnt = 8 const sizeofHmap = int64(6 * 8) @@ -447,12 +549,21 @@ func (sizegen *sizegen) sizeStmtForType(fieldName *jen.Statement, field types.Ty ts := sizegen.getKnownType(node) if ts.pod || !ts.local { if alloc { - if !ts.local { - log.Printf("WARNING: size of external type %s cannot be fully calculated", node) + var stmts []jen.Code + if node.String() == "math/big.Int" { + // This type is not accessible, but with the given + // accessors we can compute a proper size. + stmts = append(stmts, jen.Id("size"). + Op("+="). + Do(mallocsize(jen.Int64().Call(jen.Cap(fieldName.Clone().Dot("Bits").Call())). + Op("*"). + Lit(4), + ))) + } else if !ts.local { + stmts = append(stmts, jen.Commentf("WARNING: size of external type %s cannot be fully calculated", node)) } - return jen.If(fieldName.Clone().Op("!=").Nil()).Block( - jen.Id("size").Op("+=").Do(mallocsize(jen.Lit(sizegen.sizes.Sizeof(node.Underlying())))), - ), 0 + stmts = append(stmts, jen.Id("size").Op("+=").Do(mallocsize(jen.Lit(sizegen.sizes.Sizeof(node.Underlying()))))) + return jen.If(fieldName.Clone().Op("!=").Nil()).Block(stmts...), 0 } return nil, 0 } @@ -502,7 +613,6 @@ func (sizegen *sizegen) sizeStmtForType(fieldName *jen.Statement, field types.Ty var defaultGenTypes = []string{ "vitess.io/vitess/go/pools/smartconnpool.Setting", - "vitess.io/vitess/go/vt/schema.DDLStrategySetting", "vitess.io/vitess/go/vt/vtgate/engine.Plan", "vitess.io/vitess/go/vt/vttablet/tabletserver.TabletPlan", "vitess.io/vitess/go/sqltypes.Result", diff --git a/go/vt/binlog/binlogplayer/binlog_player.go b/go/vt/binlog/binlogplayer/binlog_player.go index 92718a4b5ed..29264cf54b9 100644 --- a/go/vt/binlog/binlogplayer/binlog_player.go +++ b/go/vt/binlog/binlogplayer/binlog_player.go @@ -549,7 +549,7 @@ func (blp *BinlogPlayer) setVReplicationState(state binlogdatapb.VReplicationWor }) } blp.blplStats.State.Store(state.String()) - query := fmt.Sprintf("update _vt.vreplication set state='%v', message=%v where id=%v", state.String(), encodeString(MessageTruncate(message)), blp.uid) + query := fmt.Sprintf("update _vt.vreplication set state=%v, message=%v where id=%v", encodeString(state.String()), encodeString(MessageTruncate(message)), blp.uid) if _, err := blp.dbClient.ExecuteFetch(query, 1); err != nil { return fmt.Errorf("could not set state: %v: %v", query, err) } @@ -637,9 +637,9 @@ func CreateVReplication(workflow string, source *binlogdatapb.BinlogSource, posi protoutil.SortBinlogSourceTables(source) return fmt.Sprintf("insert into _vt.vreplication "+ "(workflow, source, pos, max_tps, max_replication_lag, time_updated, transaction_timestamp, state, db_name, workflow_type, workflow_sub_type, defer_secondary_keys, options) "+ - "values (%v, %v, %v, %v, %v, %v, 0, '%v', %v, %d, %d, %v, %s)", + "values (%v, %v, %v, %v, %v, %v, 0, %v, %v, %d, %d, %v, %s)", encodeString(workflow), encodeString(source.String()), encodeString(position), maxTPS, maxReplicationLag, - timeUpdated, binlogdatapb.VReplicationWorkflowState_Running.String(), encodeString(dbName), workflowType, + timeUpdated, encodeString(binlogdatapb.VReplicationWorkflowState_Running.String()), encodeString(dbName), workflowType, workflowSubType, deferSecondaryKeys, encodeString("{}")) } @@ -649,9 +649,9 @@ func CreateVReplicationState(workflow string, source *binlogdatapb.BinlogSource, protoutil.SortBinlogSourceTables(source) return fmt.Sprintf("insert into _vt.vreplication "+ "(workflow, source, pos, max_tps, max_replication_lag, time_updated, transaction_timestamp, state, db_name, workflow_type, workflow_sub_type, options) "+ - "values (%v, %v, %v, %v, %v, %v, 0, '%v', %v, %d, %d, %s)", + "values (%v, %v, %v, %v, %v, %v, 0, %v, %v, %d, %d, %s)", encodeString(workflow), encodeString(source.String()), encodeString(position), throttler.MaxRateModuleDisabled, - throttler.ReplicationLagModuleDisabled, time.Now().Unix(), state.String(), encodeString(dbName), + throttler.ReplicationLagModuleDisabled, time.Now().Unix(), encodeString(state.String()), encodeString(dbName), workflowType, workflowSubType, encodeString("{}")) } @@ -694,15 +694,15 @@ func GenerateUpdateTimeThrottled(uid int32, timeThrottledUnix int64, componentTh // StartVReplicationUntil returns a statement to start the replication with a stop position. func StartVReplicationUntil(uid int32, pos string) string { return fmt.Sprintf( - "update _vt.vreplication set state='%v', stop_pos=%v where id=%v", - binlogdatapb.VReplicationWorkflowState_Running.String(), encodeString(pos), uid) + "update _vt.vreplication set state=%v, stop_pos=%v where id=%v", + encodeString(binlogdatapb.VReplicationWorkflowState_Running.String()), encodeString(pos), uid) } // StopVReplication returns a statement to stop the replication. func StopVReplication(uid int32, message string) string { return fmt.Sprintf( - "update _vt.vreplication set state='%v', message=%v where id=%v", - binlogdatapb.VReplicationWorkflowState_Stopped.String(), encodeString(MessageTruncate(message)), uid) + "update _vt.vreplication set state=%v, message=%v where id=%v", + encodeString(binlogdatapb.VReplicationWorkflowState_Stopped.String()), encodeString(MessageTruncate(message)), uid) } // DeleteVReplication returns a statement to delete the replication. @@ -717,9 +717,7 @@ func MessageTruncate(msg string) string { } func encodeString(in string) string { - buf := bytes.NewBuffer(nil) - sqltypes.NewVarChar(in).EncodeSQL(buf) - return buf.String() + return sqltypes.EncodeStringSQL(in) } // ReadVReplicationPos returns a statement to query the gtid for a diff --git a/go/vt/discovery/keyspace_events.go b/go/vt/discovery/keyspace_events.go index 1cb44184778..147606c553b 100644 --- a/go/vt/discovery/keyspace_events.go +++ b/go/vt/discovery/keyspace_events.go @@ -318,6 +318,7 @@ func (kss *keyspaceState) ensureConsistentLocked() { // watcher. this means the ongoing availability event has been resolved, so we can broadcast // a resolution event to all listeners kss.consistent = true + log.Infof("keyspace %s is now consistent", kss.keyspace) kss.moveTablesState = nil @@ -328,7 +329,7 @@ func (kss *keyspaceState) ensureConsistentLocked() { Serving: sstate.serving, }) - log.Infof("keyspace event resolved: %s is now consistent (serving: %t)", + log.V(2).Infof("keyspace event resolved: %s is now consistent (serving: %t)", topoproto.KeyspaceShardString(sstate.target.Keyspace, sstate.target.Shard), sstate.serving, ) diff --git a/go/vt/key/key.go b/go/vt/key/key.go index 89d956bd433..82852daa16e 100644 --- a/go/vt/key/key.go +++ b/go/vt/key/key.go @@ -95,6 +95,14 @@ func NewKeyRange(start []byte, end []byte) *topodatapb.KeyRange { return &topodatapb.KeyRange{Start: start, End: end} } +// NewCompleteKeyRange returns a complete key range. +func NewCompleteKeyRange() *topodatapb.KeyRange { + return &topodatapb.KeyRange{ + Start: nil, + End: nil, + } +} + // KeyRangeAdd adds two adjacent KeyRange values (in any order) into a single value. If the values are not adjacent, // it returns false. func KeyRangeAdd(a, b *topodatapb.KeyRange) (*topodatapb.KeyRange, bool) { diff --git a/go/vt/log/log.go b/go/vt/log/log.go index 79be1da464c..fb0c90bbb1c 100644 --- a/go/vt/log/log.go +++ b/go/vt/log/log.go @@ -111,3 +111,94 @@ func (lrms *logRotateMaxSize) String() string { func (lrms *logRotateMaxSize) Type() string { return "uint64" } + +type PrefixedLogger struct { + prefix string +} + +func NewPrefixedLogger(prefix string) *PrefixedLogger { + return &PrefixedLogger{prefix: prefix + ": "} +} + +func (pl *PrefixedLogger) V(level glog.Level) glog.Verbose { + return V(level) +} + +func (pl *PrefixedLogger) Flush() { + Flush() +} + +func (pl *PrefixedLogger) Info(args ...any) { + args = append([]interface{}{pl.prefix}, args...) + Info(args...) +} + +func (pl *PrefixedLogger) Infof(format string, args ...any) { + args = append([]interface{}{pl.prefix}, args...) + Infof("%s"+format, args...) +} + +func (pl *PrefixedLogger) InfoDepth(depth int, args ...any) { + args = append([]interface{}{pl.prefix}, args...) + InfoDepth(depth, args...) +} + +func (pl *PrefixedLogger) Warning(args ...any) { + args = append([]interface{}{pl.prefix}, args...) + Warning(args...) +} + +func (pl *PrefixedLogger) Warningf(format string, args ...any) { + args = append([]interface{}{pl.prefix}, args...) + Warningf("%s"+format, args...) +} + +func (pl *PrefixedLogger) WarningDepth(depth int, args ...any) { + args = append([]interface{}{pl.prefix}, args...) + WarningDepth(depth, args...) +} + +func (pl *PrefixedLogger) Error(args ...any) { + args = append([]interface{}{pl.prefix}, args...) + Error(args...) +} + +func (pl *PrefixedLogger) Errorf(format string, args ...any) { + args = append([]interface{}{pl.prefix}, args...) + Errorf("%s"+format, args...) +} + +func (pl *PrefixedLogger) ErrorDepth(depth int, args ...any) { + args = append([]interface{}{pl.prefix}, args...) + ErrorDepth(depth, args...) +} + +func (pl *PrefixedLogger) Exit(args ...any) { + args = append([]interface{}{pl.prefix}, args...) + Exit(args...) +} + +func (pl *PrefixedLogger) Exitf(format string, args ...any) { + args = append([]interface{}{pl.prefix}, args...) + Exitf("%s"+format, args...) +} + +func (pl *PrefixedLogger) ExitDepth(depth int, args ...any) { + args = append([]interface{}{pl.prefix}, args...) + ExitDepth(depth, args...) +} + +func (pl *PrefixedLogger) Fatal(args ...any) { + args = append([]interface{}{pl.prefix}, args...) + Fatal(args...) +} + +func (pl *PrefixedLogger) Fatalf(format string, args ...any) { + args = append([]interface{}{pl.prefix}, args...) + Fatalf("%s"+format, args...) +} + +func (pl *PrefixedLogger) FatalDepth(depth int, args ...any) { + args = append([]interface{}{pl.prefix}, args...) + FatalDepth(depth, args...) +} diff --git a/go/vt/mysqlctl/backupengine.go b/go/vt/mysqlctl/backupengine.go index eeb14039d01..c5700a3cfd4 100644 --- a/go/vt/mysqlctl/backupengine.go +++ b/go/vt/mysqlctl/backupengine.go @@ -31,6 +31,7 @@ import ( "vitess.io/vitess/go/mysql" "vitess.io/vitess/go/mysql/replication" + "vitess.io/vitess/go/os2" "vitess.io/vitess/go/vt/logutil" "vitess.io/vitess/go/vt/mysqlctl/backupstats" "vitess.io/vitess/go/vt/mysqlctl/backupstorage" @@ -723,7 +724,7 @@ func createStateFile(cnf *Mycnf) error { // rename func to openStateFile // change to return a *File fname := filepath.Join(cnf.TabletDir(), RestoreState) - fd, err := os.Create(fname) + fd, err := os2.Create(fname) if err != nil { return fmt.Errorf("unable to create file: %v", err) } diff --git a/go/vt/mysqlctl/blackbox/utils.go b/go/vt/mysqlctl/blackbox/utils.go index c7d34ae3cf6..ff7236a41b8 100644 --- a/go/vt/mysqlctl/blackbox/utils.go +++ b/go/vt/mysqlctl/blackbox/utils.go @@ -30,6 +30,7 @@ import ( "vitess.io/vitess/go/mysql" "vitess.io/vitess/go/mysql/capabilities" + "vitess.io/vitess/go/os2" "vitess.io/vitess/go/vt/logutil" "vitess.io/vitess/go/vt/mysqlctl" "vitess.io/vitess/go/vt/mysqlctl/backupstats" @@ -182,7 +183,7 @@ func createBackupDir(root string, dirs ...string) error { func createBackupFiles(root string, fileCount int, ext string) error { for i := 0; i < fileCount; i++ { - f, err := os.Create(path.Join(root, fmt.Sprintf("%d.%s", i, ext))) + f, err := os2.Create(path.Join(root, fmt.Sprintf("%d.%s", i, ext))) if err != nil { return err } diff --git a/go/vt/mysqlctl/builtinbackupengine.go b/go/vt/mysqlctl/builtinbackupengine.go index 2046a238400..491a2f2b35c 100644 --- a/go/vt/mysqlctl/builtinbackupengine.go +++ b/go/vt/mysqlctl/builtinbackupengine.go @@ -39,6 +39,7 @@ import ( "vitess.io/vitess/go/ioutil" "vitess.io/vitess/go/mysql" "vitess.io/vitess/go/mysql/replication" + "vitess.io/vitess/go/os2" "vitess.io/vitess/go/protoutil" "vitess.io/vitess/go/vt/log" "vitess.io/vitess/go/vt/logutil" @@ -206,10 +207,10 @@ func (fe *FileEntry) open(cnf *Mycnf, readOnly bool) (*os.File, error) { } } else { dir := path.Dir(name) - if err := os.MkdirAll(dir, os.ModePerm); err != nil { + if err := os2.MkdirAll(dir); err != nil { return nil, vterrors.Wrapf(err, "cannot create destination directory %v", dir) } - if fd, err = os.Create(name); err != nil { + if fd, err = os2.Create(name); err != nil { return nil, vterrors.Wrapf(err, "cannot create destination file %v", name) } } diff --git a/go/vt/mysqlctl/filebackupstorage/file.go b/go/vt/mysqlctl/filebackupstorage/file.go index bd73c55e70c..a2e4175d11d 100644 --- a/go/vt/mysqlctl/filebackupstorage/file.go +++ b/go/vt/mysqlctl/filebackupstorage/file.go @@ -27,6 +27,7 @@ import ( "github.com/spf13/pflag" + "vitess.io/vitess/go/os2" "vitess.io/vitess/go/vt/mysqlctl/errors" "vitess.io/vitess/go/ioutil" @@ -96,7 +97,7 @@ func (fbh *FileBackupHandle) AddFile(ctx context.Context, filename string, files return nil, fmt.Errorf("AddFile cannot be called on read-only backup") } p := path.Join(FileBackupStorageRoot, fbh.dir, fbh.name, filename) - f, err := os.Create(p) + f, err := os2.Create(p) if err != nil { return nil, err } @@ -172,13 +173,13 @@ func (fbs *FileBackupStorage) ListBackups(ctx context.Context, dir string) ([]ba func (fbs *FileBackupStorage) StartBackup(ctx context.Context, dir, name string) (backupstorage.BackupHandle, error) { // Make sure the directory exists. p := path.Join(FileBackupStorageRoot, dir) - if err := os.MkdirAll(p, os.ModePerm); err != nil { + if err := os2.MkdirAll(p); err != nil { return nil, err } // Create the subdirectory for this named backup. p = path.Join(p, name) - if err := os.Mkdir(p, os.ModePerm); err != nil { + if err := os2.Mkdir(p); err != nil { return nil, err } diff --git a/go/vt/mysqlctl/mysqld.go b/go/vt/mysqlctl/mysqld.go index d7435705a8a..9dc66392779 100644 --- a/go/vt/mysqlctl/mysqld.go +++ b/go/vt/mysqlctl/mysqld.go @@ -47,6 +47,7 @@ import ( "vitess.io/vitess/config" "vitess.io/vitess/go/mysql" "vitess.io/vitess/go/mysql/sqlerror" + "vitess.io/vitess/go/os2" "vitess.io/vitess/go/osutil" "vitess.io/vitess/go/protoutil" "vitess.io/vitess/go/sqltypes" @@ -454,6 +455,15 @@ func (mysqld *Mysqld) startNoWait(cnf *Mycnf, mysqldArgs ...string) error { return fmt.Errorf("mysqld_start hook failed: %v", hr.String()) } + // try the postflight mysqld start hook, if any + switch hr := hook.NewHook("postflight_mysqld_start", mysqldArgs).Execute(); hr.ExitStatus { + case hook.HOOK_SUCCESS, hook.HOOK_DOES_NOT_EXIST: + // hook exists and worked, or does not exist, we can keep going + default: + // hook failed, we report error + return fmt.Errorf("postflight_mysqld_start hook failed: %v", hr.String()) + } + return nil } @@ -624,10 +634,21 @@ func (mysqld *Mysqld) Shutdown(ctx context.Context, cnf *Mycnf, waitForMysqld bo return nil } - // try the mysqld shutdown hook, if any - h := hook.NewSimpleHook("mysqld_shutdown") + // try the preflight mysqld shutdown hook, if any + h := hook.NewSimpleHook("preflight_mysqld_shutdown") hr := h.ExecuteContext(ctx) switch hr.ExitStatus { + case hook.HOOK_SUCCESS, hook.HOOK_DOES_NOT_EXIST: + // hook exists and worked, or else does not exist. + default: + // hook failed, we report error + return fmt.Errorf("preflight_mysqld_shutdown hook failed: %v", hr.String()) + } + + // try the mysqld shutdown hook, if any + h = hook.NewSimpleHook("mysqld_shutdown") + hr = h.ExecuteContext(ctx) + switch hr.ExitStatus { case hook.HOOK_SUCCESS: // hook exists and worked, we can keep going case hook.HOOK_DOES_NOT_EXIST: @@ -901,7 +922,7 @@ func (mysqld *Mysqld) initConfig(cnf *Mycnf, outFile string) error { return err } - return os.WriteFile(outFile, []byte(configData), 0o664) + return os2.WriteFile(outFile, []byte(configData)) } func (mysqld *Mysqld) getMycnfTemplate() string { @@ -1051,7 +1072,7 @@ func (mysqld *Mysqld) ReinitConfig(ctx context.Context, cnf *Mycnf) error { func (mysqld *Mysqld) createDirs(cnf *Mycnf) error { tabletDir := cnf.TabletDir() log.Infof("creating directory %s", tabletDir) - if err := os.MkdirAll(tabletDir, os.ModePerm); err != nil { + if err := os2.MkdirAll(tabletDir); err != nil { return err } for _, dir := range TopLevelDirs() { @@ -1061,7 +1082,7 @@ func (mysqld *Mysqld) createDirs(cnf *Mycnf) error { } for _, dir := range cnf.directoryList() { log.Infof("creating directory %s", dir) - if err := os.MkdirAll(dir, os.ModePerm); err != nil { + if err := os2.MkdirAll(dir); err != nil { return err } // FIXME(msolomon) validate permissions? @@ -1085,14 +1106,14 @@ func (mysqld *Mysqld) createTopDir(cnf *Mycnf, dir string) error { if os.IsNotExist(err) { topdir := path.Join(tabletDir, dir) log.Infof("creating directory %s", topdir) - return os.MkdirAll(topdir, os.ModePerm) + return os2.MkdirAll(topdir) } return err } linkto := path.Join(target, vtname) source := path.Join(tabletDir, dir) log.Infof("creating directory %s", linkto) - err = os.MkdirAll(linkto, os.ModePerm) + err = os2.MkdirAll(linkto) if err != nil { return err } diff --git a/go/vt/proto/binlogdata/binlogdata.pb.go b/go/vt/proto/binlogdata/binlogdata.pb.go index e3523b6b384..d809f959cc1 100644 --- a/go/vt/proto/binlogdata/binlogdata.pb.go +++ b/go/vt/proto/binlogdata/binlogdata.pb.go @@ -19,7 +19,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.35.1 +// protoc-gen-go v1.36.4 // protoc v3.21.3 // source: binlogdata.proto @@ -30,6 +30,7 @@ import ( protoimpl "google.golang.org/protobuf/runtime/protoimpl" reflect "reflect" sync "sync" + unsafe "unsafe" query "vitess.io/vitess/go/vt/proto/query" topodata "vitess.io/vitess/go/vt/proto/topodata" vtrpc "vitess.io/vitess/go/vt/proto/vtrpc" @@ -548,16 +549,15 @@ func (Filter_FieldEventMode) EnumDescriptor() ([]byte, []int) { // Charset is the per-statement charset info from a QUERY_EVENT binlog entry. type Charset struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // @@session.character_set_client Client int32 `protobuf:"varint,1,opt,name=client,proto3" json:"client,omitempty"` // @@session.collation_connection Conn int32 `protobuf:"varint,2,opt,name=conn,proto3" json:"conn,omitempty"` // @@session.collation_server - Server int32 `protobuf:"varint,3,opt,name=server,proto3" json:"server,omitempty"` + Server int32 `protobuf:"varint,3,opt,name=server,proto3" json:"server,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Charset) Reset() { @@ -614,14 +614,13 @@ func (x *Charset) GetServer() int32 { // BinlogTransaction describes a transaction inside the binlogs. // It is streamed by vttablet for filtered replication, used during resharding. type BinlogTransaction struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // the statements in this transaction Statements []*BinlogTransaction_Statement `protobuf:"bytes,1,rep,name=statements,proto3" json:"statements,omitempty"` // The Event Token for this event. - EventToken *query.EventToken `protobuf:"bytes,4,opt,name=event_token,json=eventToken,proto3" json:"event_token,omitempty"` + EventToken *query.EventToken `protobuf:"bytes,4,opt,name=event_token,json=eventToken,proto3" json:"event_token,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *BinlogTransaction) Reset() { @@ -670,16 +669,15 @@ func (x *BinlogTransaction) GetEventToken() *query.EventToken { // StreamKeyRangeRequest is the payload to StreamKeyRange type StreamKeyRangeRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // where to start Position string `protobuf:"bytes,1,opt,name=position,proto3" json:"position,omitempty"` // what to get KeyRange *topodata.KeyRange `protobuf:"bytes,2,opt,name=key_range,json=keyRange,proto3" json:"key_range,omitempty"` // default charset on the player side - Charset *Charset `protobuf:"bytes,3,opt,name=charset,proto3" json:"charset,omitempty"` + Charset *Charset `protobuf:"bytes,3,opt,name=charset,proto3" json:"charset,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *StreamKeyRangeRequest) Reset() { @@ -735,11 +733,10 @@ func (x *StreamKeyRangeRequest) GetCharset() *Charset { // StreamKeyRangeResponse is the response from StreamKeyRange type StreamKeyRangeResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - BinlogTransaction *BinlogTransaction `protobuf:"bytes,1,opt,name=binlog_transaction,json=binlogTransaction,proto3" json:"binlog_transaction,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + BinlogTransaction *BinlogTransaction `protobuf:"bytes,1,opt,name=binlog_transaction,json=binlogTransaction,proto3" json:"binlog_transaction,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *StreamKeyRangeResponse) Reset() { @@ -781,16 +778,15 @@ func (x *StreamKeyRangeResponse) GetBinlogTransaction() *BinlogTransaction { // StreamTablesRequest is the payload to StreamTables type StreamTablesRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // where to start Position string `protobuf:"bytes,1,opt,name=position,proto3" json:"position,omitempty"` // what to get Tables []string `protobuf:"bytes,2,rep,name=tables,proto3" json:"tables,omitempty"` // default charset on the player side - Charset *Charset `protobuf:"bytes,3,opt,name=charset,proto3" json:"charset,omitempty"` + Charset *Charset `protobuf:"bytes,3,opt,name=charset,proto3" json:"charset,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *StreamTablesRequest) Reset() { @@ -846,11 +842,10 @@ func (x *StreamTablesRequest) GetCharset() *Charset { // StreamTablesResponse is the response from StreamTables type StreamTablesResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - BinlogTransaction *BinlogTransaction `protobuf:"bytes,1,opt,name=binlog_transaction,json=binlogTransaction,proto3" json:"binlog_transaction,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + BinlogTransaction *BinlogTransaction `protobuf:"bytes,1,opt,name=binlog_transaction,json=binlogTransaction,proto3" json:"binlog_transaction,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *StreamTablesResponse) Reset() { @@ -892,14 +887,13 @@ func (x *StreamTablesResponse) GetBinlogTransaction() *BinlogTransaction { // CharsetConversion represent a conversion of text from one charset to another type CharsetConversion struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // FromCharset is the charset name from which we convert the text (e.g. latin1) FromCharset string `protobuf:"bytes,1,opt,name=from_charset,json=fromCharset,proto3" json:"from_charset,omitempty"` // ToCharset is the charset name to which we convert the text (e.g. utf8mb4) - ToCharset string `protobuf:"bytes,2,opt,name=to_charset,json=toCharset,proto3" json:"to_charset,omitempty"` + ToCharset string `protobuf:"bytes,2,opt,name=to_charset,json=toCharset,proto3" json:"to_charset,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *CharsetConversion) Reset() { @@ -948,10 +942,7 @@ func (x *CharsetConversion) GetToCharset() string { // Rule represents one rule in a Filter. type Rule struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Match can be a table name or a regular expression. // If it starts with a '/', it's a regular expression. // For example, "t" matches a table named "t", whereas @@ -974,12 +965,12 @@ type Rule struct { // TODO(sougou): support this on vstreamer side also. Filter string `protobuf:"bytes,2,opt,name=filter,proto3" json:"filter,omitempty"` // Example: key="color", value="'red','green','blue'" - ConvertEnumToText map[string]string `protobuf:"bytes,3,rep,name=convert_enum_to_text,json=convertEnumToText,proto3" json:"convert_enum_to_text,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + ConvertEnumToText map[string]string `protobuf:"bytes,3,rep,name=convert_enum_to_text,json=convertEnumToText,proto3" json:"convert_enum_to_text,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` // ConvertCharset: optional mapping, between column name and a CharsetConversion. // This hints to vreplication that columns are encoded from/to non-trivial charsets // The map is only populated when either "from" or "to" charset of a column are non-trivial // trivial charsets are utf8 and ascii variants. - ConvertCharset map[string]*CharsetConversion `protobuf:"bytes,4,rep,name=convert_charset,json=convertCharset,proto3" json:"convert_charset,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + ConvertCharset map[string]*CharsetConversion `protobuf:"bytes,4,rep,name=convert_charset,json=convertCharset,proto3" json:"convert_charset,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` // SourceUniqueKeyColumns represents the ordered columns in the index used by rowstreamer to iterate the table // It is comma delimited, as in col1,col2,col3 (tokens are escaped via net/url) SourceUniqueKeyColumns string `protobuf:"bytes,5,opt,name=source_unique_key_columns,json=sourceUniqueKeyColumns,proto3" json:"source_unique_key_columns,omitempty"` @@ -992,9 +983,11 @@ type Rule struct { // ConvertIntToEnum lists any columns that are converted from an integral value into an enum. // such columns need to have special transofrmation of the data, from an integral format into a // string format. e.g. the value 0 needs to be converted to '0'. - ConvertIntToEnum map[string]bool `protobuf:"bytes,8,rep,name=convert_int_to_enum,json=convertIntToEnum,proto3" json:"convert_int_to_enum,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` + ConvertIntToEnum map[string]bool `protobuf:"bytes,8,rep,name=convert_int_to_enum,json=convertIntToEnum,proto3" json:"convert_int_to_enum,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"` // ForceUniqueKey gives vtreamer a hint for `FORCE INDEX (...)` usage. ForceUniqueKey string `protobuf:"bytes,9,opt,name=force_unique_key,json=forceUniqueKey,proto3" json:"force_unique_key,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Rule) Reset() { @@ -1093,11 +1086,8 @@ func (x *Rule) GetForceUniqueKey() string { // Filter represents a list of ordered rules. The first // match wins. type Filter struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Rules []*Rule `protobuf:"bytes,1,rep,name=rules,proto3" json:"rules,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Rules []*Rule `protobuf:"bytes,1,rep,name=rules,proto3" json:"rules,omitempty"` // FieldEventMode specifies the behavior if there is a mismatch // between the current schema and the fields in the binlog. This // can happen if the binlog position is before a DDL that would @@ -1109,6 +1099,8 @@ type Filter struct { FieldEventMode Filter_FieldEventMode `protobuf:"varint,2,opt,name=field_event_mode,json=fieldEventMode,proto3,enum=binlogdata.Filter_FieldEventMode" json:"field_event_mode,omitempty"` WorkflowType int64 `protobuf:"varint,3,opt,name=workflow_type,json=workflowType,proto3" json:"workflow_type,omitempty"` WorkflowName string `protobuf:"bytes,4,opt,name=workflow_name,json=workflowName,proto3" json:"workflow_name,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Filter) Reset() { @@ -1173,10 +1165,7 @@ func (x *Filter) GetWorkflowName() string { // Filtered Replication. KeyRange and Tables are legacy. Filter // is the new way to specify the filtering rules. type BinlogSource struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // the source keyspace Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"` // the source shard @@ -1206,6 +1195,8 @@ type BinlogSource struct { // TargetTimeZone is not currently specifiable by the user, defaults to UTC for the forward workflows // and to the SourceTimeZone in reverse workflows TargetTimeZone string `protobuf:"bytes,12,opt,name=target_time_zone,json=targetTimeZone,proto3" json:"target_time_zone,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *BinlogSource) Reset() { @@ -1327,12 +1318,9 @@ func (x *BinlogSource) GetTargetTimeZone() string { // If After is set and not Before, it's an insert. // If both are set, it's an update. type RowChange struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Before *query.Row `protobuf:"bytes,1,opt,name=before,proto3" json:"before,omitempty"` - After *query.Row `protobuf:"bytes,2,opt,name=after,proto3" json:"after,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Before *query.Row `protobuf:"bytes,1,opt,name=before,proto3" json:"before,omitempty"` + After *query.Row `protobuf:"bytes,2,opt,name=after,proto3" json:"after,omitempty"` // DataColumns is a bitmap of all columns: bit is set if column is // present in the after image. DataColumns *RowChange_Bitmap `protobuf:"bytes,3,opt,name=data_columns,json=dataColumns,proto3" json:"data_columns,omitempty"` @@ -1344,6 +1332,8 @@ type RowChange struct { // value is used the fmt directive must be replaced by the actual // column name of the JSON field. JsonPartialValues *RowChange_Bitmap `protobuf:"bytes,4,opt,name=json_partial_values,json=jsonPartialValues,proto3" json:"json_partial_values,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RowChange) Reset() { @@ -1406,16 +1396,15 @@ func (x *RowChange) GetJsonPartialValues() *RowChange_Bitmap { // RowEvent represent row events for one table. type RowEvent struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - TableName string `protobuf:"bytes,1,opt,name=table_name,json=tableName,proto3" json:"table_name,omitempty"` - RowChanges []*RowChange `protobuf:"bytes,2,rep,name=row_changes,json=rowChanges,proto3" json:"row_changes,omitempty"` - Keyspace string `protobuf:"bytes,3,opt,name=keyspace,proto3" json:"keyspace,omitempty"` - Shard string `protobuf:"bytes,4,opt,name=shard,proto3" json:"shard,omitempty"` - Flags uint32 `protobuf:"varint,5,opt,name=flags,proto3" json:"flags,omitempty"` // https://dev.mysql.com/doc/dev/mysql-server/latest/classbinary__log_1_1Rows__event.html - IsInternalTable bool `protobuf:"varint,6,opt,name=is_internal_table,json=isInternalTable,proto3" json:"is_internal_table,omitempty"` // set for sidecardb tables + state protoimpl.MessageState `protogen:"open.v1"` + TableName string `protobuf:"bytes,1,opt,name=table_name,json=tableName,proto3" json:"table_name,omitempty"` + RowChanges []*RowChange `protobuf:"bytes,2,rep,name=row_changes,json=rowChanges,proto3" json:"row_changes,omitempty"` + Keyspace string `protobuf:"bytes,3,opt,name=keyspace,proto3" json:"keyspace,omitempty"` + Shard string `protobuf:"bytes,4,opt,name=shard,proto3" json:"shard,omitempty"` + Flags uint32 `protobuf:"varint,5,opt,name=flags,proto3" json:"flags,omitempty"` // https://dev.mysql.com/doc/dev/mysql-server/latest/classbinary__log_1_1Rows__event.html + IsInternalTable bool `protobuf:"varint,6,opt,name=is_internal_table,json=isInternalTable,proto3" json:"is_internal_table,omitempty"` // set for sidecardb tables + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RowEvent) Reset() { @@ -1492,14 +1481,11 @@ func (x *RowEvent) GetIsInternalTable() bool { // FieldEvent represents the field info for a table. type FieldEvent struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - TableName string `protobuf:"bytes,1,opt,name=table_name,json=tableName,proto3" json:"table_name,omitempty"` - Fields []*query.Field `protobuf:"bytes,2,rep,name=fields,proto3" json:"fields,omitempty"` - Keyspace string `protobuf:"bytes,3,opt,name=keyspace,proto3" json:"keyspace,omitempty"` - Shard string `protobuf:"bytes,4,opt,name=shard,proto3" json:"shard,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + TableName string `protobuf:"bytes,1,opt,name=table_name,json=tableName,proto3" json:"table_name,omitempty"` + Fields []*query.Field `protobuf:"bytes,2,rep,name=fields,proto3" json:"fields,omitempty"` + Keyspace string `protobuf:"bytes,3,opt,name=keyspace,proto3" json:"keyspace,omitempty"` + Shard string `protobuf:"bytes,4,opt,name=shard,proto3" json:"shard,omitempty"` // Are ENUM and SET field values already mapped to strings in the ROW // events? This allows us to transition VTGate VStream consumers from // the pre v20 behavior of having to do this mapping themselves to the @@ -1509,6 +1495,8 @@ type FieldEvent struct { // vstreams managed by the vstreamManager. EnumSetStringValues bool `protobuf:"varint,25,opt,name=enum_set_string_values,json=enumSetStringValues,proto3" json:"enum_set_string_values,omitempty"` IsInternalTable bool `protobuf:"varint,26,opt,name=is_internal_table,json=isInternalTable,proto3" json:"is_internal_table,omitempty"` // set for sidecardb tables + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *FieldEvent) Reset() { @@ -1589,14 +1577,13 @@ func (x *FieldEvent) GetIsInternalTable() bool { // of a shard. It's also used in a Journal to indicate the // list of targets and shard positions to migrate to. type ShardGtid struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"` + Shard string `protobuf:"bytes,2,opt,name=shard,proto3" json:"shard,omitempty"` + Gtid string `protobuf:"bytes,3,opt,name=gtid,proto3" json:"gtid,omitempty"` + TablePKs []*TableLastPK `protobuf:"bytes,4,rep,name=table_p_ks,json=tablePKs,proto3" json:"table_p_ks,omitempty"` unknownFields protoimpl.UnknownFields - - Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"` - Shard string `protobuf:"bytes,2,opt,name=shard,proto3" json:"shard,omitempty"` - Gtid string `protobuf:"bytes,3,opt,name=gtid,proto3" json:"gtid,omitempty"` - TablePKs []*TableLastPK `protobuf:"bytes,4,rep,name=table_p_ks,json=tablePKs,proto3" json:"table_p_ks,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ShardGtid) Reset() { @@ -1659,11 +1646,10 @@ func (x *ShardGtid) GetTablePKs() []*TableLastPK { // A VGtid is a list of ShardGtids. type VGtid struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + ShardGtids []*ShardGtid `protobuf:"bytes,1,rep,name=shard_gtids,json=shardGtids,proto3" json:"shard_gtids,omitempty"` unknownFields protoimpl.UnknownFields - - ShardGtids []*ShardGtid `protobuf:"bytes,1,rep,name=shard_gtids,json=shardGtids,proto3" json:"shard_gtids,omitempty"` + sizeCache protoimpl.SizeCache } func (x *VGtid) Reset() { @@ -1705,12 +1691,11 @@ func (x *VGtid) GetShardGtids() []*ShardGtid { // KeyspaceShard represents a keyspace and shard. type KeyspaceShard struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"` + Shard string `protobuf:"bytes,2,opt,name=shard,proto3" json:"shard,omitempty"` unknownFields protoimpl.UnknownFields - - Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"` - Shard string `protobuf:"bytes,2,opt,name=shard,proto3" json:"shard,omitempty"` + sizeCache protoimpl.SizeCache } func (x *KeyspaceShard) Reset() { @@ -1761,10 +1746,7 @@ func (x *KeyspaceShard) GetShard() string { // The commit of a journal event indicates the point of no return // for a migration. type Journal struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Id represents a unique journal id. Id int64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` MigrationType MigrationType `protobuf:"varint,2,opt,name=migration_type,json=migrationType,proto3,enum=binlogdata.MigrationType" json:"migration_type,omitempty"` @@ -1787,6 +1769,8 @@ type Journal struct { // is committed, this information is used to start the target streams // that were created prior to the creation of the journal. SourceWorkflows []string `protobuf:"bytes,7,rep,name=source_workflows,json=sourceWorkflows,proto3" json:"source_workflows,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Journal) Reset() { @@ -1877,11 +1861,8 @@ func (x *Journal) GetSourceWorkflows() []string { // COMMIT, DDL or OTHER. // OTHER events are non-material events that have no additional metadata. type VEvent struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Type VEventType `protobuf:"varint,1,opt,name=type,proto3,enum=binlogdata.VEventType" json:"type,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Type VEventType `protobuf:"varint,1,opt,name=type,proto3,enum=binlogdata.VEventType" json:"type,omitempty"` // Timestamp is the binlog timestamp in seconds. // The value should be ignored if 0. Timestamp int64 `protobuf:"varint,2,opt,name=timestamp,proto3" json:"timestamp,omitempty"` @@ -1913,6 +1894,8 @@ type VEvent struct { Throttled bool `protobuf:"varint,24,opt,name=throttled,proto3" json:"throttled,omitempty"` // ThrottledReason is a human readable string that explains why the stream is throttled ThrottledReason string `protobuf:"bytes,25,opt,name=throttled_reason,json=throttledReason,proto3" json:"throttled_reason,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *VEvent) Reset() { @@ -2051,17 +2034,16 @@ func (x *VEvent) GetThrottledReason() string { } type MinimalTable struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - Fields []*query.Field `protobuf:"bytes,2,rep,name=fields,proto3" json:"fields,omitempty"` - PKColumns []int64 `protobuf:"varint,3,rep,packed,name=p_k_columns,json=pKColumns,proto3" json:"p_k_columns,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Fields []*query.Field `protobuf:"bytes,2,rep,name=fields,proto3" json:"fields,omitempty"` + PKColumns []int64 `protobuf:"varint,3,rep,packed,name=p_k_columns,json=pKColumns,proto3" json:"p_k_columns,omitempty"` // This will be PRIMARY when the actual primary key is used and it // will be the name of the Primary Key equivalent if one is used // instead. Otherwise it will be empty. - PKIndexName string `protobuf:"bytes,4,opt,name=p_k_index_name,json=pKIndexName,proto3" json:"p_k_index_name,omitempty"` + PKIndexName string `protobuf:"bytes,4,opt,name=p_k_index_name,json=pKIndexName,proto3" json:"p_k_index_name,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *MinimalTable) Reset() { @@ -2123,11 +2105,10 @@ func (x *MinimalTable) GetPKIndexName() string { } type MinimalSchema struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Tables []*MinimalTable `protobuf:"bytes,1,rep,name=tables,proto3" json:"tables,omitempty"` unknownFields protoimpl.UnknownFields - - Tables []*MinimalTable `protobuf:"bytes,1,rep,name=tables,proto3" json:"tables,omitempty"` + sizeCache protoimpl.SizeCache } func (x *MinimalSchema) Reset() { @@ -2168,12 +2149,11 @@ func (x *MinimalSchema) GetTables() []*MinimalTable { } type VStreamOptions struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - InternalTables []string `protobuf:"bytes,1,rep,name=internal_tables,json=internalTables,proto3" json:"internal_tables,omitempty"` - ConfigOverrides map[string]string `protobuf:"bytes,2,rep,name=config_overrides,json=configOverrides,proto3" json:"config_overrides,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + state protoimpl.MessageState `protogen:"open.v1"` + InternalTables []string `protobuf:"bytes,1,rep,name=internal_tables,json=internalTables,proto3" json:"internal_tables,omitempty"` + ConfigOverrides map[string]string `protobuf:"bytes,2,rep,name=config_overrides,json=configOverrides,proto3" json:"config_overrides,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *VStreamOptions) Reset() { @@ -2222,17 +2202,16 @@ func (x *VStreamOptions) GetConfigOverrides() map[string]string { // VStreamRequest is the payload for VStreamer type VStreamRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - EffectiveCallerId *vtrpc.CallerID `protobuf:"bytes,1,opt,name=effective_caller_id,json=effectiveCallerId,proto3" json:"effective_caller_id,omitempty"` - ImmediateCallerId *query.VTGateCallerID `protobuf:"bytes,2,opt,name=immediate_caller_id,json=immediateCallerId,proto3" json:"immediate_caller_id,omitempty"` - Target *query.Target `protobuf:"bytes,3,opt,name=target,proto3" json:"target,omitempty"` - Position string `protobuf:"bytes,4,opt,name=position,proto3" json:"position,omitempty"` - Filter *Filter `protobuf:"bytes,5,opt,name=filter,proto3" json:"filter,omitempty"` - TableLastPKs []*TableLastPK `protobuf:"bytes,6,rep,name=table_last_p_ks,json=tableLastPKs,proto3" json:"table_last_p_ks,omitempty"` - Options *VStreamOptions `protobuf:"bytes,7,opt,name=options,proto3" json:"options,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + EffectiveCallerId *vtrpc.CallerID `protobuf:"bytes,1,opt,name=effective_caller_id,json=effectiveCallerId,proto3" json:"effective_caller_id,omitempty"` + ImmediateCallerId *query.VTGateCallerID `protobuf:"bytes,2,opt,name=immediate_caller_id,json=immediateCallerId,proto3" json:"immediate_caller_id,omitempty"` + Target *query.Target `protobuf:"bytes,3,opt,name=target,proto3" json:"target,omitempty"` + Position string `protobuf:"bytes,4,opt,name=position,proto3" json:"position,omitempty"` + Filter *Filter `protobuf:"bytes,5,opt,name=filter,proto3" json:"filter,omitempty"` + TableLastPKs []*TableLastPK `protobuf:"bytes,6,rep,name=table_last_p_ks,json=tableLastPKs,proto3" json:"table_last_p_ks,omitempty"` + Options *VStreamOptions `protobuf:"bytes,7,opt,name=options,proto3" json:"options,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *VStreamRequest) Reset() { @@ -2316,11 +2295,10 @@ func (x *VStreamRequest) GetOptions() *VStreamOptions { // VStreamResponse is the response from VStreamer type VStreamResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Events []*VEvent `protobuf:"bytes,1,rep,name=events,proto3" json:"events,omitempty"` unknownFields protoimpl.UnknownFields - - Events []*VEvent `protobuf:"bytes,1,rep,name=events,proto3" json:"events,omitempty"` + sizeCache protoimpl.SizeCache } func (x *VStreamResponse) Reset() { @@ -2362,16 +2340,15 @@ func (x *VStreamResponse) GetEvents() []*VEvent { // VStreamRowsRequest is the payload for VStreamRows type VStreamRowsRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - EffectiveCallerId *vtrpc.CallerID `protobuf:"bytes,1,opt,name=effective_caller_id,json=effectiveCallerId,proto3" json:"effective_caller_id,omitempty"` - ImmediateCallerId *query.VTGateCallerID `protobuf:"bytes,2,opt,name=immediate_caller_id,json=immediateCallerId,proto3" json:"immediate_caller_id,omitempty"` - Target *query.Target `protobuf:"bytes,3,opt,name=target,proto3" json:"target,omitempty"` - Query string `protobuf:"bytes,4,opt,name=query,proto3" json:"query,omitempty"` - Lastpk *query.QueryResult `protobuf:"bytes,5,opt,name=lastpk,proto3" json:"lastpk,omitempty"` - Options *VStreamOptions `protobuf:"bytes,6,opt,name=options,proto3" json:"options,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + EffectiveCallerId *vtrpc.CallerID `protobuf:"bytes,1,opt,name=effective_caller_id,json=effectiveCallerId,proto3" json:"effective_caller_id,omitempty"` + ImmediateCallerId *query.VTGateCallerID `protobuf:"bytes,2,opt,name=immediate_caller_id,json=immediateCallerId,proto3" json:"immediate_caller_id,omitempty"` + Target *query.Target `protobuf:"bytes,3,opt,name=target,proto3" json:"target,omitempty"` + Query string `protobuf:"bytes,4,opt,name=query,proto3" json:"query,omitempty"` + Lastpk *query.QueryResult `protobuf:"bytes,5,opt,name=lastpk,proto3" json:"lastpk,omitempty"` + Options *VStreamOptions `protobuf:"bytes,6,opt,name=options,proto3" json:"options,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *VStreamRowsRequest) Reset() { @@ -2448,21 +2425,20 @@ func (x *VStreamRowsRequest) GetOptions() *VStreamOptions { // VStreamRowsResponse is the response from VStreamRows type VStreamRowsResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Fields []*query.Field `protobuf:"bytes,1,rep,name=fields,proto3" json:"fields,omitempty"` - Pkfields []*query.Field `protobuf:"bytes,2,rep,name=pkfields,proto3" json:"pkfields,omitempty"` - Gtid string `protobuf:"bytes,3,opt,name=gtid,proto3" json:"gtid,omitempty"` - Rows []*query.Row `protobuf:"bytes,4,rep,name=rows,proto3" json:"rows,omitempty"` - Lastpk *query.Row `protobuf:"bytes,5,opt,name=lastpk,proto3" json:"lastpk,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Fields []*query.Field `protobuf:"bytes,1,rep,name=fields,proto3" json:"fields,omitempty"` + Pkfields []*query.Field `protobuf:"bytes,2,rep,name=pkfields,proto3" json:"pkfields,omitempty"` + Gtid string `protobuf:"bytes,3,opt,name=gtid,proto3" json:"gtid,omitempty"` + Rows []*query.Row `protobuf:"bytes,4,rep,name=rows,proto3" json:"rows,omitempty"` + Lastpk *query.Row `protobuf:"bytes,5,opt,name=lastpk,proto3" json:"lastpk,omitempty"` // Throttled indicates that rowstreamer is being throttled right now Throttled bool `protobuf:"varint,6,opt,name=throttled,proto3" json:"throttled,omitempty"` // Heartbeat indicates that this is a heartbeat message Heartbeat bool `protobuf:"varint,7,opt,name=heartbeat,proto3" json:"heartbeat,omitempty"` // ThrottledReason is a human readable string that explains why the stream is throttled ThrottledReason string `protobuf:"bytes,8,opt,name=throttled_reason,json=throttledReason,proto3" json:"throttled_reason,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *VStreamRowsResponse) Reset() { @@ -2553,14 +2529,13 @@ func (x *VStreamRowsResponse) GetThrottledReason() string { // VStreamTablesRequest is the payload for VStreamTables type VStreamTablesRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - EffectiveCallerId *vtrpc.CallerID `protobuf:"bytes,1,opt,name=effective_caller_id,json=effectiveCallerId,proto3" json:"effective_caller_id,omitempty"` - ImmediateCallerId *query.VTGateCallerID `protobuf:"bytes,2,opt,name=immediate_caller_id,json=immediateCallerId,proto3" json:"immediate_caller_id,omitempty"` - Target *query.Target `protobuf:"bytes,3,opt,name=target,proto3" json:"target,omitempty"` - Options *VStreamOptions `protobuf:"bytes,4,opt,name=options,proto3" json:"options,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + EffectiveCallerId *vtrpc.CallerID `protobuf:"bytes,1,opt,name=effective_caller_id,json=effectiveCallerId,proto3" json:"effective_caller_id,omitempty"` + ImmediateCallerId *query.VTGateCallerID `protobuf:"bytes,2,opt,name=immediate_caller_id,json=immediateCallerId,proto3" json:"immediate_caller_id,omitempty"` + Target *query.Target `protobuf:"bytes,3,opt,name=target,proto3" json:"target,omitempty"` + Options *VStreamOptions `protobuf:"bytes,4,opt,name=options,proto3" json:"options,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *VStreamTablesRequest) Reset() { @@ -2623,16 +2598,15 @@ func (x *VStreamTablesRequest) GetOptions() *VStreamOptions { // VStreamTablesResponse is the response from VStreamTables type VStreamTablesResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + TableName string `protobuf:"bytes,1,opt,name=table_name,json=tableName,proto3" json:"table_name,omitempty"` + Fields []*query.Field `protobuf:"bytes,2,rep,name=fields,proto3" json:"fields,omitempty"` + Pkfields []*query.Field `protobuf:"bytes,3,rep,name=pkfields,proto3" json:"pkfields,omitempty"` + Gtid string `protobuf:"bytes,4,opt,name=gtid,proto3" json:"gtid,omitempty"` + Rows []*query.Row `protobuf:"bytes,5,rep,name=rows,proto3" json:"rows,omitempty"` + Lastpk *query.Row `protobuf:"bytes,6,opt,name=lastpk,proto3" json:"lastpk,omitempty"` unknownFields protoimpl.UnknownFields - - TableName string `protobuf:"bytes,1,opt,name=table_name,json=tableName,proto3" json:"table_name,omitempty"` - Fields []*query.Field `protobuf:"bytes,2,rep,name=fields,proto3" json:"fields,omitempty"` - Pkfields []*query.Field `protobuf:"bytes,3,rep,name=pkfields,proto3" json:"pkfields,omitempty"` - Gtid string `protobuf:"bytes,4,opt,name=gtid,proto3" json:"gtid,omitempty"` - Rows []*query.Row `protobuf:"bytes,5,rep,name=rows,proto3" json:"rows,omitempty"` - Lastpk *query.Row `protobuf:"bytes,6,opt,name=lastpk,proto3" json:"lastpk,omitempty"` + sizeCache protoimpl.SizeCache } func (x *VStreamTablesResponse) Reset() { @@ -2708,12 +2682,11 @@ func (x *VStreamTablesResponse) GetLastpk() *query.Row { } type LastPKEvent struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + TableLastPK *TableLastPK `protobuf:"bytes,1,opt,name=table_last_p_k,json=tableLastPK,proto3" json:"table_last_p_k,omitempty"` + Completed bool `protobuf:"varint,2,opt,name=completed,proto3" json:"completed,omitempty"` unknownFields protoimpl.UnknownFields - - TableLastPK *TableLastPK `protobuf:"bytes,1,opt,name=table_last_p_k,json=tableLastPK,proto3" json:"table_last_p_k,omitempty"` - Completed bool `protobuf:"varint,2,opt,name=completed,proto3" json:"completed,omitempty"` + sizeCache protoimpl.SizeCache } func (x *LastPKEvent) Reset() { @@ -2761,12 +2734,11 @@ func (x *LastPKEvent) GetCompleted() bool { } type TableLastPK struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + TableName string `protobuf:"bytes,1,opt,name=table_name,json=tableName,proto3" json:"table_name,omitempty"` + Lastpk *query.QueryResult `protobuf:"bytes,3,opt,name=lastpk,proto3" json:"lastpk,omitempty"` unknownFields protoimpl.UnknownFields - - TableName string `protobuf:"bytes,1,opt,name=table_name,json=tableName,proto3" json:"table_name,omitempty"` - Lastpk *query.QueryResult `protobuf:"bytes,3,opt,name=lastpk,proto3" json:"lastpk,omitempty"` + sizeCache protoimpl.SizeCache } func (x *TableLastPK) Reset() { @@ -2817,14 +2789,13 @@ func (x *TableLastPK) GetLastpk() *query.QueryResult { // The ids match VStreamRows, in case we decide to merge the two. // The ids match VStreamRows, in case we decide to merge the two. type VStreamResultsRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - EffectiveCallerId *vtrpc.CallerID `protobuf:"bytes,1,opt,name=effective_caller_id,json=effectiveCallerId,proto3" json:"effective_caller_id,omitempty"` - ImmediateCallerId *query.VTGateCallerID `protobuf:"bytes,2,opt,name=immediate_caller_id,json=immediateCallerId,proto3" json:"immediate_caller_id,omitempty"` - Target *query.Target `protobuf:"bytes,3,opt,name=target,proto3" json:"target,omitempty"` - Query string `protobuf:"bytes,4,opt,name=query,proto3" json:"query,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + EffectiveCallerId *vtrpc.CallerID `protobuf:"bytes,1,opt,name=effective_caller_id,json=effectiveCallerId,proto3" json:"effective_caller_id,omitempty"` + ImmediateCallerId *query.VTGateCallerID `protobuf:"bytes,2,opt,name=immediate_caller_id,json=immediateCallerId,proto3" json:"immediate_caller_id,omitempty"` + Target *query.Target `protobuf:"bytes,3,opt,name=target,proto3" json:"target,omitempty"` + Query string `protobuf:"bytes,4,opt,name=query,proto3" json:"query,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *VStreamResultsRequest) Reset() { @@ -2888,13 +2859,12 @@ func (x *VStreamResultsRequest) GetQuery() string { // VStreamResultsResponse is the response from VStreamResults // The ids match VStreamRows, in case we decide to merge the two. type VStreamResultsResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Fields []*query.Field `protobuf:"bytes,1,rep,name=fields,proto3" json:"fields,omitempty"` + Gtid string `protobuf:"bytes,3,opt,name=gtid,proto3" json:"gtid,omitempty"` + Rows []*query.Row `protobuf:"bytes,4,rep,name=rows,proto3" json:"rows,omitempty"` unknownFields protoimpl.UnknownFields - - Fields []*query.Field `protobuf:"bytes,1,rep,name=fields,proto3" json:"fields,omitempty"` - Gtid string `protobuf:"bytes,3,opt,name=gtid,proto3" json:"gtid,omitempty"` - Rows []*query.Row `protobuf:"bytes,4,rep,name=rows,proto3" json:"rows,omitempty"` + sizeCache protoimpl.SizeCache } func (x *VStreamResultsResponse) Reset() { @@ -2949,16 +2919,15 @@ func (x *VStreamResultsResponse) GetRows() []*query.Row { } type BinlogTransaction_Statement struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // what type of statement is this? Category BinlogTransaction_Statement_Category `protobuf:"varint,1,opt,name=category,proto3,enum=binlogdata.BinlogTransaction_Statement_Category" json:"category,omitempty"` // charset of this statement, if different from pre-negotiated default. Charset *Charset `protobuf:"bytes,2,opt,name=charset,proto3" json:"charset,omitempty"` // the sql - Sql []byte `protobuf:"bytes,3,opt,name=sql,proto3" json:"sql,omitempty"` + Sql []byte `protobuf:"bytes,3,opt,name=sql,proto3" json:"sql,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *BinlogTransaction_Statement) Reset() { @@ -3013,12 +2982,11 @@ func (x *BinlogTransaction_Statement) GetSql() []byte { } type RowChange_Bitmap struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Count int64 `protobuf:"varint,1,opt,name=count,proto3" json:"count,omitempty"` + Cols []byte `protobuf:"bytes,2,opt,name=cols,proto3" json:"cols,omitempty"` unknownFields protoimpl.UnknownFields - - Count int64 `protobuf:"varint,1,opt,name=count,proto3" json:"count,omitempty"` - Cols []byte `protobuf:"bytes,2,opt,name=cols,proto3" json:"cols,omitempty"` + sizeCache protoimpl.SizeCache } func (x *RowChange_Bitmap) Reset() { @@ -3067,7 +3035,7 @@ func (x *RowChange_Bitmap) GetCols() []byte { var File_binlogdata_proto protoreflect.FileDescriptor -var file_binlogdata_proto_rawDesc = []byte{ +var file_binlogdata_proto_rawDesc = string([]byte{ 0x0a, 0x10, 0x62, 0x69, 0x6e, 0x6c, 0x6f, 0x67, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0a, 0x62, 0x69, 0x6e, 0x6c, 0x6f, 0x67, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x0b, 0x76, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x0b, 0x71, 0x75, 0x65, @@ -3560,16 +3528,16 @@ var file_binlogdata_proto_rawDesc = []byte{ 0x69, 0x6f, 0x2f, 0x76, 0x69, 0x74, 0x65, 0x73, 0x73, 0x2f, 0x67, 0x6f, 0x2f, 0x76, 0x74, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x62, 0x69, 0x6e, 0x6c, 0x6f, 0x67, 0x64, 0x61, 0x74, 0x61, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} +}) var ( file_binlogdata_proto_rawDescOnce sync.Once - file_binlogdata_proto_rawDescData = file_binlogdata_proto_rawDesc + file_binlogdata_proto_rawDescData []byte ) func file_binlogdata_proto_rawDescGZIP() []byte { file_binlogdata_proto_rawDescOnce.Do(func() { - file_binlogdata_proto_rawDescData = protoimpl.X.CompressGZIP(file_binlogdata_proto_rawDescData) + file_binlogdata_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_binlogdata_proto_rawDesc), len(file_binlogdata_proto_rawDesc))) }) return file_binlogdata_proto_rawDescData } @@ -3719,7 +3687,7 @@ func file_binlogdata_proto_init() { out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_binlogdata_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_binlogdata_proto_rawDesc), len(file_binlogdata_proto_rawDesc)), NumEnums: 8, NumMessages: 37, NumExtensions: 0, @@ -3731,7 +3699,6 @@ func file_binlogdata_proto_init() { MessageInfos: file_binlogdata_proto_msgTypes, }.Build() File_binlogdata_proto = out.File - file_binlogdata_proto_rawDesc = nil file_binlogdata_proto_goTypes = nil file_binlogdata_proto_depIdxs = nil } diff --git a/go/vt/proto/binlogdata/binlogdata_vtproto.pb.go b/go/vt/proto/binlogdata/binlogdata_vtproto.pb.go index 93b378738dd..315a753568f 100644 --- a/go/vt/proto/binlogdata/binlogdata_vtproto.pb.go +++ b/go/vt/proto/binlogdata/binlogdata_vtproto.pb.go @@ -1,5 +1,5 @@ // Code generated by protoc-gen-go-vtproto. DO NOT EDIT. -// protoc-gen-go-vtproto version: v0.6.1-0.20241011083415-71c992bc3c87 +// protoc-gen-go-vtproto version: v0.6.1-0.20241121165744-79df5c4772f2 // source: binlogdata.proto package binlogdata diff --git a/go/vt/proto/binlogservice/binlogservice.pb.go b/go/vt/proto/binlogservice/binlogservice.pb.go index 9ac93adc872..857ec58c129 100644 --- a/go/vt/proto/binlogservice/binlogservice.pb.go +++ b/go/vt/proto/binlogservice/binlogservice.pb.go @@ -19,7 +19,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.35.1 +// protoc-gen-go v1.36.4 // protoc v3.21.3 // source: binlogservice.proto @@ -29,6 +29,7 @@ import ( protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" reflect "reflect" + unsafe "unsafe" binlogdata "vitess.io/vitess/go/vt/proto/binlogdata" ) @@ -41,7 +42,7 @@ const ( var File_binlogservice_proto protoreflect.FileDescriptor -var file_binlogservice_proto_rawDesc = []byte{ +var file_binlogservice_proto_rawDesc = string([]byte{ 0x0a, 0x13, 0x62, 0x69, 0x6e, 0x6c, 0x6f, 0x67, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0d, 0x62, 0x69, 0x6e, 0x6c, 0x6f, 0x67, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x1a, 0x10, 0x62, 0x69, 0x6e, 0x6c, 0x6f, 0x67, 0x64, 0x61, 0x74, 0x61, @@ -62,7 +63,7 @@ var file_binlogservice_proto_rawDesc = []byte{ 0x67, 0x6f, 0x2f, 0x76, 0x74, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x62, 0x69, 0x6e, 0x6c, 0x6f, 0x67, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} +}) var file_binlogservice_proto_goTypes = []any{ (*binlogdata.StreamKeyRangeRequest)(nil), // 0: binlogdata.StreamKeyRangeRequest @@ -91,7 +92,7 @@ func file_binlogservice_proto_init() { out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_binlogservice_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_binlogservice_proto_rawDesc), len(file_binlogservice_proto_rawDesc)), NumEnums: 0, NumMessages: 0, NumExtensions: 0, @@ -101,7 +102,6 @@ func file_binlogservice_proto_init() { DependencyIndexes: file_binlogservice_proto_depIdxs, }.Build() File_binlogservice_proto = out.File - file_binlogservice_proto_rawDesc = nil file_binlogservice_proto_goTypes = nil file_binlogservice_proto_depIdxs = nil } diff --git a/go/vt/proto/logutil/logutil.pb.go b/go/vt/proto/logutil/logutil.pb.go index fff477ddf27..d1ea7ea3938 100644 --- a/go/vt/proto/logutil/logutil.pb.go +++ b/go/vt/proto/logutil/logutil.pb.go @@ -17,7 +17,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.35.1 +// protoc-gen-go v1.36.4 // protoc v3.21.3 // source: logutil.proto @@ -28,6 +28,7 @@ import ( protoimpl "google.golang.org/protobuf/runtime/protoimpl" reflect "reflect" sync "sync" + unsafe "unsafe" vttime "vitess.io/vitess/go/vt/proto/vttime" ) @@ -97,15 +98,14 @@ func (Level) EnumDescriptor() ([]byte, []int) { // Event is a single logging event type Event struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Time *vttime.Time `protobuf:"bytes,1,opt,name=time,proto3" json:"time,omitempty"` + Level Level `protobuf:"varint,2,opt,name=level,proto3,enum=logutil.Level" json:"level,omitempty"` + File string `protobuf:"bytes,3,opt,name=file,proto3" json:"file,omitempty"` + Line int64 `protobuf:"varint,4,opt,name=line,proto3" json:"line,omitempty"` + Value string `protobuf:"bytes,5,opt,name=value,proto3" json:"value,omitempty"` unknownFields protoimpl.UnknownFields - - Time *vttime.Time `protobuf:"bytes,1,opt,name=time,proto3" json:"time,omitempty"` - Level Level `protobuf:"varint,2,opt,name=level,proto3,enum=logutil.Level" json:"level,omitempty"` - File string `protobuf:"bytes,3,opt,name=file,proto3" json:"file,omitempty"` - Line int64 `protobuf:"varint,4,opt,name=line,proto3" json:"line,omitempty"` - Value string `protobuf:"bytes,5,opt,name=value,proto3" json:"value,omitempty"` + sizeCache protoimpl.SizeCache } func (x *Event) Reset() { @@ -175,7 +175,7 @@ func (x *Event) GetValue() string { var File_logutil_proto protoreflect.FileDescriptor -var file_logutil_proto_rawDesc = []byte{ +var file_logutil_proto_rawDesc = string([]byte{ 0x0a, 0x0d, 0x6c, 0x6f, 0x67, 0x75, 0x74, 0x69, 0x6c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x07, 0x6c, 0x6f, 0x67, 0x75, 0x74, 0x69, 0x6c, 0x1a, 0x0c, 0x76, 0x74, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x8d, 0x01, 0x0a, 0x05, 0x45, 0x76, 0x65, 0x6e, 0x74, @@ -194,16 +194,16 @@ var file_logutil_proto_rawDesc = []byte{ 0x5a, 0x24, 0x76, 0x69, 0x74, 0x65, 0x73, 0x73, 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x69, 0x74, 0x65, 0x73, 0x73, 0x2f, 0x67, 0x6f, 0x2f, 0x76, 0x74, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x6c, 0x6f, 0x67, 0x75, 0x74, 0x69, 0x6c, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} +}) var ( file_logutil_proto_rawDescOnce sync.Once - file_logutil_proto_rawDescData = file_logutil_proto_rawDesc + file_logutil_proto_rawDescData []byte ) func file_logutil_proto_rawDescGZIP() []byte { file_logutil_proto_rawDescOnce.Do(func() { - file_logutil_proto_rawDescData = protoimpl.X.CompressGZIP(file_logutil_proto_rawDescData) + file_logutil_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_logutil_proto_rawDesc), len(file_logutil_proto_rawDesc))) }) return file_logutil_proto_rawDescData } @@ -234,7 +234,7 @@ func file_logutil_proto_init() { out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_logutil_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_logutil_proto_rawDesc), len(file_logutil_proto_rawDesc)), NumEnums: 1, NumMessages: 1, NumExtensions: 0, @@ -246,7 +246,6 @@ func file_logutil_proto_init() { MessageInfos: file_logutil_proto_msgTypes, }.Build() File_logutil_proto = out.File - file_logutil_proto_rawDesc = nil file_logutil_proto_goTypes = nil file_logutil_proto_depIdxs = nil } diff --git a/go/vt/proto/logutil/logutil_vtproto.pb.go b/go/vt/proto/logutil/logutil_vtproto.pb.go index 208d652cdaf..80d7189c02c 100644 --- a/go/vt/proto/logutil/logutil_vtproto.pb.go +++ b/go/vt/proto/logutil/logutil_vtproto.pb.go @@ -1,5 +1,5 @@ // Code generated by protoc-gen-go-vtproto. DO NOT EDIT. -// protoc-gen-go-vtproto version: v0.6.1-0.20241011083415-71c992bc3c87 +// protoc-gen-go-vtproto version: v0.6.1-0.20241121165744-79df5c4772f2 // source: logutil.proto package logutil diff --git a/go/vt/proto/mysqlctl/mysqlctl.pb.go b/go/vt/proto/mysqlctl/mysqlctl.pb.go index 1e7ca88f5fe..75bbbc28dc5 100644 --- a/go/vt/proto/mysqlctl/mysqlctl.pb.go +++ b/go/vt/proto/mysqlctl/mysqlctl.pb.go @@ -18,7 +18,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.35.1 +// protoc-gen-go v1.36.4 // protoc v3.21.3 // source: mysqlctl.proto @@ -29,6 +29,7 @@ import ( protoimpl "google.golang.org/protobuf/runtime/protoimpl" reflect "reflect" sync "sync" + unsafe "unsafe" topodata "vitess.io/vitess/go/vt/proto/topodata" vtrpc "vitess.io/vitess/go/vt/proto/vtrpc" vttime "vitess.io/vitess/go/vt/proto/vttime" @@ -102,11 +103,10 @@ func (BackupInfo_Status) EnumDescriptor() ([]byte, []int) { } type StartRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + MysqldArgs []string `protobuf:"bytes,1,rep,name=mysqld_args,json=mysqldArgs,proto3" json:"mysqld_args,omitempty"` unknownFields protoimpl.UnknownFields - - MysqldArgs []string `protobuf:"bytes,1,rep,name=mysqld_args,json=mysqldArgs,proto3" json:"mysqld_args,omitempty"` + sizeCache protoimpl.SizeCache } func (x *StartRequest) Reset() { @@ -147,9 +147,9 @@ func (x *StartRequest) GetMysqldArgs() []string { } type StartResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *StartResponse) Reset() { @@ -183,12 +183,11 @@ func (*StartResponse) Descriptor() ([]byte, []int) { } type ShutdownRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - WaitForMysqld bool `protobuf:"varint,1,opt,name=wait_for_mysqld,json=waitForMysqld,proto3" json:"wait_for_mysqld,omitempty"` - MysqlShutdownTimeout *vttime.Duration `protobuf:"bytes,2,opt,name=mysql_shutdown_timeout,json=mysqlShutdownTimeout,proto3" json:"mysql_shutdown_timeout,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + WaitForMysqld bool `protobuf:"varint,1,opt,name=wait_for_mysqld,json=waitForMysqld,proto3" json:"wait_for_mysqld,omitempty"` + MysqlShutdownTimeout *vttime.Duration `protobuf:"bytes,2,opt,name=mysql_shutdown_timeout,json=mysqlShutdownTimeout,proto3" json:"mysql_shutdown_timeout,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ShutdownRequest) Reset() { @@ -236,9 +235,9 @@ func (x *ShutdownRequest) GetMysqlShutdownTimeout() *vttime.Duration { } type ShutdownResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ShutdownResponse) Reset() { @@ -272,9 +271,9 @@ func (*ShutdownResponse) Descriptor() ([]byte, []int) { } type RunMysqlUpgradeRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RunMysqlUpgradeRequest) Reset() { @@ -308,9 +307,9 @@ func (*RunMysqlUpgradeRequest) Descriptor() ([]byte, []int) { } type RunMysqlUpgradeResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RunMysqlUpgradeResponse) Reset() { @@ -344,13 +343,12 @@ func (*RunMysqlUpgradeResponse) Descriptor() ([]byte, []int) { } type ApplyBinlogFileRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - BinlogFileName string `protobuf:"bytes,1,opt,name=binlog_file_name,json=binlogFileName,proto3" json:"binlog_file_name,omitempty"` - BinlogRestorePosition string `protobuf:"bytes,2,opt,name=binlog_restore_position,json=binlogRestorePosition,proto3" json:"binlog_restore_position,omitempty"` - BinlogRestoreDatetime *vttime.Time `protobuf:"bytes,3,opt,name=binlog_restore_datetime,json=binlogRestoreDatetime,proto3" json:"binlog_restore_datetime,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + BinlogFileName string `protobuf:"bytes,1,opt,name=binlog_file_name,json=binlogFileName,proto3" json:"binlog_file_name,omitempty"` + BinlogRestorePosition string `protobuf:"bytes,2,opt,name=binlog_restore_position,json=binlogRestorePosition,proto3" json:"binlog_restore_position,omitempty"` + BinlogRestoreDatetime *vttime.Time `protobuf:"bytes,3,opt,name=binlog_restore_datetime,json=binlogRestoreDatetime,proto3" json:"binlog_restore_datetime,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ApplyBinlogFileRequest) Reset() { @@ -405,9 +403,9 @@ func (x *ApplyBinlogFileRequest) GetBinlogRestoreDatetime() *vttime.Time { } type ApplyBinlogFileResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ApplyBinlogFileResponse) Reset() { @@ -441,11 +439,10 @@ func (*ApplyBinlogFileResponse) Descriptor() ([]byte, []int) { } type ReadBinlogFilesTimestampsRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - BinlogFileNames []string `protobuf:"bytes,1,rep,name=binlog_file_names,json=binlogFileNames,proto3" json:"binlog_file_names,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + BinlogFileNames []string `protobuf:"bytes,1,rep,name=binlog_file_names,json=binlogFileNames,proto3" json:"binlog_file_names,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ReadBinlogFilesTimestampsRequest) Reset() { @@ -486,10 +483,7 @@ func (x *ReadBinlogFilesTimestampsRequest) GetBinlogFileNames() []string { } type ReadBinlogFilesTimestampsResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // FirstTimestamp is the timestamp of the first found transaction searching in order of given binlog files FirstTimestamp *vttime.Time `protobuf:"bytes,1,opt,name=first_timestamp,json=firstTimestamp,proto3" json:"first_timestamp,omitempty"` // FirstTimestampBinlog is the name of the binary log in which the first timestamp is found @@ -498,6 +492,8 @@ type ReadBinlogFilesTimestampsResponse struct { LastTimestamp *vttime.Time `protobuf:"bytes,3,opt,name=last_timestamp,json=lastTimestamp,proto3" json:"last_timestamp,omitempty"` // LastTimestampBinlog is the name of the binary log in which the last timestamp is found LastTimestampBinlog string `protobuf:"bytes,4,opt,name=last_timestamp_binlog,json=lastTimestampBinlog,proto3" json:"last_timestamp_binlog,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ReadBinlogFilesTimestampsResponse) Reset() { @@ -559,9 +555,9 @@ func (x *ReadBinlogFilesTimestampsResponse) GetLastTimestampBinlog() string { } type ReinitConfigRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ReinitConfigRequest) Reset() { @@ -595,9 +591,9 @@ func (*ReinitConfigRequest) Descriptor() ([]byte, []int) { } type ReinitConfigResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ReinitConfigResponse) Reset() { @@ -631,9 +627,9 @@ func (*ReinitConfigResponse) Descriptor() ([]byte, []int) { } type RefreshConfigRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RefreshConfigRequest) Reset() { @@ -667,9 +663,9 @@ func (*RefreshConfigRequest) Descriptor() ([]byte, []int) { } type RefreshConfigResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RefreshConfigResponse) Reset() { @@ -703,9 +699,9 @@ func (*RefreshConfigResponse) Descriptor() ([]byte, []int) { } type VersionStringRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *VersionStringRequest) Reset() { @@ -739,11 +735,10 @@ func (*VersionStringRequest) Descriptor() ([]byte, []int) { } type VersionStringResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Version string `protobuf:"bytes,1,opt,name=version,proto3" json:"version,omitempty"` unknownFields protoimpl.UnknownFields - - Version string `protobuf:"bytes,1,opt,name=version,proto3" json:"version,omitempty"` + sizeCache protoimpl.SizeCache } func (x *VersionStringResponse) Reset() { @@ -784,9 +779,9 @@ func (x *VersionStringResponse) GetVersion() string { } type HostMetricsRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *HostMetricsRequest) Reset() { @@ -820,13 +815,12 @@ func (*HostMetricsRequest) Descriptor() ([]byte, []int) { } type HostMetricsResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Metrics is a map (metric name -> metric value/error) so that the client has as much // information as possible about all the checked metrics. - Metrics map[string]*HostMetricsResponse_Metric `protobuf:"bytes,1,rep,name=metrics,proto3" json:"metrics,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Metrics map[string]*HostMetricsResponse_Metric `protobuf:"bytes,1,rep,name=metrics,proto3" json:"metrics,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *HostMetricsResponse) Reset() { @@ -868,20 +862,19 @@ func (x *HostMetricsResponse) GetMetrics() map[string]*HostMetricsResponse_Metri // BackupInfo is the read-only attributes of a mysqlctl/backupstorage.BackupHandle. type BackupInfo struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - Directory string `protobuf:"bytes,2,opt,name=directory,proto3" json:"directory,omitempty"` - Keyspace string `protobuf:"bytes,3,opt,name=keyspace,proto3" json:"keyspace,omitempty"` - Shard string `protobuf:"bytes,4,opt,name=shard,proto3" json:"shard,omitempty"` - TabletAlias *topodata.TabletAlias `protobuf:"bytes,5,opt,name=tablet_alias,json=tabletAlias,proto3" json:"tablet_alias,omitempty"` - Time *vttime.Time `protobuf:"bytes,6,opt,name=time,proto3" json:"time,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Directory string `protobuf:"bytes,2,opt,name=directory,proto3" json:"directory,omitempty"` + Keyspace string `protobuf:"bytes,3,opt,name=keyspace,proto3" json:"keyspace,omitempty"` + Shard string `protobuf:"bytes,4,opt,name=shard,proto3" json:"shard,omitempty"` + TabletAlias *topodata.TabletAlias `protobuf:"bytes,5,opt,name=tablet_alias,json=tabletAlias,proto3" json:"tablet_alias,omitempty"` + Time *vttime.Time `protobuf:"bytes,6,opt,name=time,proto3" json:"time,omitempty"` // Engine is the name of the backupengine implementation used to create // this backup. - Engine string `protobuf:"bytes,7,opt,name=engine,proto3" json:"engine,omitempty"` - Status BackupInfo_Status `protobuf:"varint,8,opt,name=status,proto3,enum=mysqlctl.BackupInfo_Status" json:"status,omitempty"` + Engine string `protobuf:"bytes,7,opt,name=engine,proto3" json:"engine,omitempty"` + Status BackupInfo_Status `protobuf:"varint,8,opt,name=status,proto3,enum=mysqlctl.BackupInfo_Status" json:"status,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *BackupInfo) Reset() { @@ -971,16 +964,15 @@ func (x *BackupInfo) GetStatus() BackupInfo_Status { } type HostMetricsResponse_Metric struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Name of the metric Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` // Value is the metric value Value float64 `protobuf:"fixed64,2,opt,name=value,proto3" json:"value,omitempty"` // Error indicates an error retrieving the value - Error *vtrpc.RPCError `protobuf:"bytes,3,opt,name=error,proto3" json:"error,omitempty"` + Error *vtrpc.RPCError `protobuf:"bytes,3,opt,name=error,proto3" json:"error,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *HostMetricsResponse_Metric) Reset() { @@ -1036,7 +1028,7 @@ func (x *HostMetricsResponse_Metric) GetError() *vtrpc.RPCError { var File_mysqlctl_proto protoreflect.FileDescriptor -var file_mysqlctl_proto_rawDesc = []byte{ +var file_mysqlctl_proto_rawDesc = string([]byte{ 0x0a, 0x0e, 0x6d, 0x79, 0x73, 0x71, 0x6c, 0x63, 0x74, 0x6c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x08, 0x6d, 0x79, 0x73, 0x71, 0x6c, 0x63, 0x74, 0x6c, 0x1a, 0x0e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x0c, 0x76, 0x74, 0x74, 0x69, @@ -1197,16 +1189,16 @@ var file_mysqlctl_proto_rawDesc = []byte{ 0x6f, 0x2f, 0x76, 0x69, 0x74, 0x65, 0x73, 0x73, 0x2f, 0x67, 0x6f, 0x2f, 0x76, 0x74, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x6d, 0x79, 0x73, 0x71, 0x6c, 0x63, 0x74, 0x6c, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} +}) var ( file_mysqlctl_proto_rawDescOnce sync.Once - file_mysqlctl_proto_rawDescData = file_mysqlctl_proto_rawDesc + file_mysqlctl_proto_rawDescData []byte ) func file_mysqlctl_proto_rawDescGZIP() []byte { file_mysqlctl_proto_rawDescOnce.Do(func() { - file_mysqlctl_proto_rawDescData = protoimpl.X.CompressGZIP(file_mysqlctl_proto_rawDescData) + file_mysqlctl_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_mysqlctl_proto_rawDesc), len(file_mysqlctl_proto_rawDesc))) }) return file_mysqlctl_proto_rawDescData } @@ -1286,7 +1278,7 @@ func file_mysqlctl_proto_init() { out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_mysqlctl_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_mysqlctl_proto_rawDesc), len(file_mysqlctl_proto_rawDesc)), NumEnums: 1, NumMessages: 21, NumExtensions: 0, @@ -1298,7 +1290,6 @@ func file_mysqlctl_proto_init() { MessageInfos: file_mysqlctl_proto_msgTypes, }.Build() File_mysqlctl_proto = out.File - file_mysqlctl_proto_rawDesc = nil file_mysqlctl_proto_goTypes = nil file_mysqlctl_proto_depIdxs = nil } diff --git a/go/vt/proto/mysqlctl/mysqlctl_vtproto.pb.go b/go/vt/proto/mysqlctl/mysqlctl_vtproto.pb.go index f0c77770d50..0be379d3ede 100644 --- a/go/vt/proto/mysqlctl/mysqlctl_vtproto.pb.go +++ b/go/vt/proto/mysqlctl/mysqlctl_vtproto.pb.go @@ -1,5 +1,5 @@ // Code generated by protoc-gen-go-vtproto. DO NOT EDIT. -// protoc-gen-go-vtproto version: v0.6.1-0.20241011083415-71c992bc3c87 +// protoc-gen-go-vtproto version: v0.6.1-0.20241121165744-79df5c4772f2 // source: mysqlctl.proto package mysqlctl diff --git a/go/vt/proto/query/cached_size.go b/go/vt/proto/query/cached_size.go index 4436594681a..58054d3c445 100644 --- a/go/vt/proto/query/cached_size.go +++ b/go/vt/proto/query/cached_size.go @@ -27,10 +27,6 @@ func (cached *BindVariable) CachedSize(alloc bool) int64 { if alloc { size += int64(96) } - // field unknownFields google.golang.org/protobuf/runtime/protoimpl.UnknownFields - { - size += hack.RuntimeAllocSize(int64(cap(cached.unknownFields))) - } // field Value []byte { size += hack.RuntimeAllocSize(int64(cap(cached.Value))) @@ -42,6 +38,10 @@ func (cached *BindVariable) CachedSize(alloc bool) int64 { size += elem.CachedSize(true) } } + // field unknownFields google.golang.org/protobuf/runtime/protoimpl.UnknownFields + { + size += hack.RuntimeAllocSize(int64(cap(cached.unknownFields))) + } return size } func (cached *Field) CachedSize(alloc bool) int64 { @@ -52,10 +52,6 @@ func (cached *Field) CachedSize(alloc bool) int64 { if alloc { size += int64(160) } - // field unknownFields google.golang.org/protobuf/runtime/protoimpl.UnknownFields - { - size += hack.RuntimeAllocSize(int64(cap(cached.unknownFields))) - } // field Name string size += hack.RuntimeAllocSize(int64(len(cached.Name))) // field Table string @@ -68,6 +64,10 @@ func (cached *Field) CachedSize(alloc bool) int64 { size += hack.RuntimeAllocSize(int64(len(cached.OrgName))) // field ColumnType string size += hack.RuntimeAllocSize(int64(len(cached.ColumnType))) + // field unknownFields google.golang.org/protobuf/runtime/protoimpl.UnknownFields + { + size += hack.RuntimeAllocSize(int64(cap(cached.unknownFields))) + } return size } func (cached *QueryWarning) CachedSize(alloc bool) int64 { @@ -78,12 +78,12 @@ func (cached *QueryWarning) CachedSize(alloc bool) int64 { if alloc { size += int64(64) } + // field Message string + size += hack.RuntimeAllocSize(int64(len(cached.Message))) // field unknownFields google.golang.org/protobuf/runtime/protoimpl.UnknownFields { size += hack.RuntimeAllocSize(int64(cap(cached.unknownFields))) } - // field Message string - size += hack.RuntimeAllocSize(int64(len(cached.Message))) return size } func (cached *Target) CachedSize(alloc bool) int64 { @@ -94,16 +94,16 @@ func (cached *Target) CachedSize(alloc bool) int64 { if alloc { size += int64(96) } - // field unknownFields google.golang.org/protobuf/runtime/protoimpl.UnknownFields - { - size += hack.RuntimeAllocSize(int64(cap(cached.unknownFields))) - } // field Keyspace string size += hack.RuntimeAllocSize(int64(len(cached.Keyspace))) // field Shard string size += hack.RuntimeAllocSize(int64(len(cached.Shard))) // field Cell string size += hack.RuntimeAllocSize(int64(len(cached.Cell))) + // field unknownFields google.golang.org/protobuf/runtime/protoimpl.UnknownFields + { + size += hack.RuntimeAllocSize(int64(cap(cached.unknownFields))) + } return size } func (cached *Value) CachedSize(alloc bool) int64 { @@ -114,13 +114,13 @@ func (cached *Value) CachedSize(alloc bool) int64 { if alloc { size += int64(80) } - // field unknownFields google.golang.org/protobuf/runtime/protoimpl.UnknownFields - { - size += hack.RuntimeAllocSize(int64(cap(cached.unknownFields))) - } // field Value []byte { size += hack.RuntimeAllocSize(int64(cap(cached.Value))) } + // field unknownFields google.golang.org/protobuf/runtime/protoimpl.UnknownFields + { + size += hack.RuntimeAllocSize(int64(cap(cached.unknownFields))) + } return size } diff --git a/go/vt/proto/query/query.pb.go b/go/vt/proto/query/query.pb.go index a168cc2d363..ab49a5605df 100644 --- a/go/vt/proto/query/query.pb.go +++ b/go/vt/proto/query/query.pb.go @@ -18,7 +18,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.35.1 +// protoc-gen-go v1.36.4 // protoc v3.21.3 // source: query.proto @@ -29,6 +29,7 @@ import ( protoimpl "google.golang.org/protobuf/runtime/protoimpl" reflect "reflect" sync "sync" + unsafe "unsafe" topodata "vitess.io/vitess/go/vt/proto/topodata" vtrpc "vitess.io/vitess/go/vt/proto/vtrpc" ) @@ -976,16 +977,15 @@ func (StreamEvent_Statement_Category) EnumDescriptor() ([]byte, []int) { // Target describes what the client expects the tablet is. // If the tablet does not match, an error is returned. type Target struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"` - Shard string `protobuf:"bytes,2,opt,name=shard,proto3" json:"shard,omitempty"` - TabletType topodata.TabletType `protobuf:"varint,3,opt,name=tablet_type,json=tabletType,proto3,enum=topodata.TabletType" json:"tablet_type,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"` + Shard string `protobuf:"bytes,2,opt,name=shard,proto3" json:"shard,omitempty"` + TabletType topodata.TabletType `protobuf:"varint,3,opt,name=tablet_type,json=tabletType,proto3,enum=topodata.TabletType" json:"tablet_type,omitempty"` // cell is used for routing queries between vtgate and vttablets. It // is not used when Target is part of the Session sent by the client. - Cell string `protobuf:"bytes,4,opt,name=cell,proto3" json:"cell,omitempty"` + Cell string `protobuf:"bytes,4,opt,name=cell,proto3" json:"cell,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Target) Reset() { @@ -1055,12 +1055,11 @@ func (x *Target) GetCell() string { // structure, which is not secure at all, because it is provided // by the Vitess client. type VTGateCallerID struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Username string `protobuf:"bytes,1,opt,name=username,proto3" json:"username,omitempty"` + Groups []string `protobuf:"bytes,2,rep,name=groups,proto3" json:"groups,omitempty"` unknownFields protoimpl.UnknownFields - - Username string `protobuf:"bytes,1,opt,name=username,proto3" json:"username,omitempty"` - Groups []string `protobuf:"bytes,2,rep,name=groups,proto3" json:"groups,omitempty"` + sizeCache protoimpl.SizeCache } func (x *VTGateCallerID) Reset() { @@ -1112,10 +1111,7 @@ func (x *VTGateCallerID) GetGroups() []string { // position can be retrieved from vttablet when executing a query. It // is also sent with the replication streams from the binlog service. type EventToken struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // timestamp is the MySQL timestamp of the statements. Seconds since Epoch. Timestamp int64 `protobuf:"varint,1,opt,name=timestamp,proto3" json:"timestamp,omitempty"` // The shard name that applied the statements. Note this is not set when @@ -1123,7 +1119,9 @@ type EventToken struct { Shard string `protobuf:"bytes,2,opt,name=shard,proto3" json:"shard,omitempty"` // The position on the replication stream after this statement was applied. // It is not the transaction ID / GTID, but the position / GTIDSet. - Position string `protobuf:"bytes,3,opt,name=position,proto3" json:"position,omitempty"` + Position string `protobuf:"bytes,3,opt,name=position,proto3" json:"position,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *EventToken) Reset() { @@ -1179,12 +1177,11 @@ func (x *EventToken) GetPosition() string { // Value represents a typed value. type Value struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Type Type `protobuf:"varint,1,opt,name=type,proto3,enum=query.Type" json:"type,omitempty"` + Value []byte `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` unknownFields protoimpl.UnknownFields - - Type Type `protobuf:"varint,1,opt,name=type,proto3,enum=query.Type" json:"type,omitempty"` - Value []byte `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` + sizeCache protoimpl.SizeCache } func (x *Value) Reset() { @@ -1233,14 +1230,13 @@ func (x *Value) GetValue() []byte { // BindVariable represents a single bind variable in a Query. type BindVariable struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Type Type `protobuf:"varint,1,opt,name=type,proto3,enum=query.Type" json:"type,omitempty"` - Value []byte `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Type Type `protobuf:"varint,1,opt,name=type,proto3,enum=query.Type" json:"type,omitempty"` + Value []byte `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` // values are set if type is TUPLE. - Values []*Value `protobuf:"bytes,3,rep,name=values,proto3" json:"values,omitempty"` + Values []*Value `protobuf:"bytes,3,rep,name=values,proto3" json:"values,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *BindVariable) Reset() { @@ -1296,15 +1292,14 @@ func (x *BindVariable) GetValues() []*Value { // BoundQuery is a query with its bind variables type BoundQuery struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // sql is the SQL query to execute Sql string `protobuf:"bytes,1,opt,name=sql,proto3" json:"sql,omitempty"` // bind_variables is a map of all bind variables to expand in the query. // nil values are not allowed. Use NULL_TYPE to express a NULL value. - BindVariables map[string]*BindVariable `protobuf:"bytes,2,rep,name=bind_variables,json=bindVariables,proto3" json:"bind_variables,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + BindVariables map[string]*BindVariable `protobuf:"bytes,2,rep,name=bind_variables,json=bindVariables,proto3" json:"bind_variables,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *BoundQuery) Reset() { @@ -1353,10 +1348,7 @@ func (x *BoundQuery) GetBindVariables() map[string]*BindVariable { // ExecuteOptions is passed around for all Execute calls. type ExecuteOptions struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Controls what fields are returned in Field message responses from mysql, i.e. // field name, table name, etc. This is an optimization for high-QPS queries where // the client knows what it's getting @@ -1399,7 +1391,7 @@ type ExecuteOptions struct { Priority string `protobuf:"bytes,16,opt,name=priority,proto3" json:"priority,omitempty"` // timeout specifies the query timeout in milliseconds. If not set, the default timeout is used. // - // Types that are assignable to Timeout: + // Types that are valid to be assigned to Timeout: // // *ExecuteOptions_AuthoritativeTimeout Timeout isExecuteOptions_Timeout `protobuf_oneof:"timeout"` @@ -1408,6 +1400,8 @@ type ExecuteOptions struct { // This is to circumvent a bug where setting last_insert_id(x) to zero is not signaled by mysql // https://bugs.mysql.com/bug.php?id=116939 FetchLastInsertId bool `protobuf:"varint,18,opt,name=fetch_last_insert_id,json=fetchLastInsertId,proto3" json:"fetch_last_insert_id,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ExecuteOptions) Reset() { @@ -1524,16 +1518,18 @@ func (x *ExecuteOptions) GetPriority() string { return "" } -func (m *ExecuteOptions) GetTimeout() isExecuteOptions_Timeout { - if m != nil { - return m.Timeout +func (x *ExecuteOptions) GetTimeout() isExecuteOptions_Timeout { + if x != nil { + return x.Timeout } return nil } func (x *ExecuteOptions) GetAuthoritativeTimeout() int64 { - if x, ok := x.GetTimeout().(*ExecuteOptions_AuthoritativeTimeout); ok { - return x.AuthoritativeTimeout + if x != nil { + if x, ok := x.Timeout.(*ExecuteOptions_AuthoritativeTimeout); ok { + return x.AuthoritativeTimeout + } } return 0 } @@ -1557,10 +1553,7 @@ func (*ExecuteOptions_AuthoritativeTimeout) isExecuteOptions_Timeout() {} // Field describes a single column returned by a query type Field struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // name of the field as returned by mysql C API Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` // vitess-defined type. Conversion function is in sqltypes package. @@ -1581,7 +1574,9 @@ type Field struct { // flags is actually a uint16. Only the lower 16 bits are used. Flags uint32 `protobuf:"varint,10,opt,name=flags,proto3" json:"flags,omitempty"` // column_type is optionally populated from information_schema.columns - ColumnType string `protobuf:"bytes,11,opt,name=column_type,json=columnType,proto3" json:"column_type,omitempty"` + ColumnType string `protobuf:"bytes,11,opt,name=column_type,json=columnType,proto3" json:"column_type,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Field) Reset() { @@ -1693,17 +1688,16 @@ func (x *Field) GetColumnType() string { // Row is a database row. type Row struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // lengths contains the length of each value in values. // A length of -1 means that the field is NULL. While // reading values, you have to accummulate the length // to know the offset where the next value begins in values. Lengths []int64 `protobuf:"zigzag64,1,rep,packed,name=lengths,proto3" json:"lengths,omitempty"` // values contains a concatenation of all values in the row. - Values []byte `protobuf:"bytes,2,opt,name=values,proto3" json:"values,omitempty"` + Values []byte `protobuf:"bytes,2,opt,name=values,proto3" json:"values,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Row) Reset() { @@ -1760,17 +1754,16 @@ func (x *Row) GetValues() []byte { // len(QueryResult[0].fields) is always equal to len(row) (for each // row in rows for each QueryResult in QueryResult[1:]). type QueryResult struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Fields []*Field `protobuf:"bytes,1,rep,name=fields,proto3" json:"fields,omitempty"` - RowsAffected uint64 `protobuf:"varint,2,opt,name=rows_affected,json=rowsAffected,proto3" json:"rows_affected,omitempty"` - InsertId uint64 `protobuf:"varint,3,opt,name=insert_id,json=insertId,proto3" json:"insert_id,omitempty"` - Rows []*Row `protobuf:"bytes,4,rep,name=rows,proto3" json:"rows,omitempty"` - Info string `protobuf:"bytes,6,opt,name=info,proto3" json:"info,omitempty"` - SessionStateChanges string `protobuf:"bytes,7,opt,name=session_state_changes,json=sessionStateChanges,proto3" json:"session_state_changes,omitempty"` - InsertIdChanged bool `protobuf:"varint,8,opt,name=insert_id_changed,json=insertIdChanged,proto3" json:"insert_id_changed,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Fields []*Field `protobuf:"bytes,1,rep,name=fields,proto3" json:"fields,omitempty"` + RowsAffected uint64 `protobuf:"varint,2,opt,name=rows_affected,json=rowsAffected,proto3" json:"rows_affected,omitempty"` + InsertId uint64 `protobuf:"varint,3,opt,name=insert_id,json=insertId,proto3" json:"insert_id,omitempty"` + Rows []*Row `protobuf:"bytes,4,rep,name=rows,proto3" json:"rows,omitempty"` + Info string `protobuf:"bytes,6,opt,name=info,proto3" json:"info,omitempty"` + SessionStateChanges string `protobuf:"bytes,7,opt,name=session_state_changes,json=sessionStateChanges,proto3" json:"session_state_changes,omitempty"` + InsertIdChanged bool `protobuf:"varint,8,opt,name=insert_id_changed,json=insertIdChanged,proto3" json:"insert_id_changed,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *QueryResult) Reset() { @@ -1855,12 +1848,11 @@ func (x *QueryResult) GetInsertIdChanged() bool { // QueryWarning is used to convey out of band query execution warnings // by storing in the vtgate.Session type QueryWarning struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Code uint32 `protobuf:"varint,1,opt,name=code,proto3" json:"code,omitempty"` + Message string `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"` unknownFields protoimpl.UnknownFields - - Code uint32 `protobuf:"varint,1,opt,name=code,proto3" json:"code,omitempty"` - Message string `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"` + sizeCache protoimpl.SizeCache } func (x *QueryWarning) Reset() { @@ -1911,14 +1903,13 @@ func (x *QueryWarning) GetMessage() string { // single transactional unit on a server. It is streamed back by the // Update Stream calls. type StreamEvent struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The statements in this transaction. Statements []*StreamEvent_Statement `protobuf:"bytes,1,rep,name=statements,proto3" json:"statements,omitempty"` // The Event Token for this event. - EventToken *EventToken `protobuf:"bytes,2,opt,name=event_token,json=eventToken,proto3" json:"event_token,omitempty"` + EventToken *EventToken `protobuf:"bytes,2,opt,name=event_token,json=eventToken,proto3" json:"event_token,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *StreamEvent) Reset() { @@ -1967,17 +1958,16 @@ func (x *StreamEvent) GetEventToken() *EventToken { // ExecuteRequest is the payload to Execute type ExecuteRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - EffectiveCallerId *vtrpc.CallerID `protobuf:"bytes,1,opt,name=effective_caller_id,json=effectiveCallerId,proto3" json:"effective_caller_id,omitempty"` - ImmediateCallerId *VTGateCallerID `protobuf:"bytes,2,opt,name=immediate_caller_id,json=immediateCallerId,proto3" json:"immediate_caller_id,omitempty"` - Target *Target `protobuf:"bytes,3,opt,name=target,proto3" json:"target,omitempty"` - Query *BoundQuery `protobuf:"bytes,4,opt,name=query,proto3" json:"query,omitempty"` - TransactionId int64 `protobuf:"varint,5,opt,name=transaction_id,json=transactionId,proto3" json:"transaction_id,omitempty"` - Options *ExecuteOptions `protobuf:"bytes,6,opt,name=options,proto3" json:"options,omitempty"` - ReservedId int64 `protobuf:"varint,7,opt,name=reserved_id,json=reservedId,proto3" json:"reserved_id,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + EffectiveCallerId *vtrpc.CallerID `protobuf:"bytes,1,opt,name=effective_caller_id,json=effectiveCallerId,proto3" json:"effective_caller_id,omitempty"` + ImmediateCallerId *VTGateCallerID `protobuf:"bytes,2,opt,name=immediate_caller_id,json=immediateCallerId,proto3" json:"immediate_caller_id,omitempty"` + Target *Target `protobuf:"bytes,3,opt,name=target,proto3" json:"target,omitempty"` + Query *BoundQuery `protobuf:"bytes,4,opt,name=query,proto3" json:"query,omitempty"` + TransactionId int64 `protobuf:"varint,5,opt,name=transaction_id,json=transactionId,proto3" json:"transaction_id,omitempty"` + Options *ExecuteOptions `protobuf:"bytes,6,opt,name=options,proto3" json:"options,omitempty"` + ReservedId int64 `protobuf:"varint,7,opt,name=reserved_id,json=reservedId,proto3" json:"reserved_id,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ExecuteRequest) Reset() { @@ -2061,11 +2051,10 @@ func (x *ExecuteRequest) GetReservedId() int64 { // ExecuteResponse is the returned value from Execute type ExecuteResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Result *QueryResult `protobuf:"bytes,1,opt,name=result,proto3" json:"result,omitempty"` unknownFields protoimpl.UnknownFields - - Result *QueryResult `protobuf:"bytes,1,opt,name=result,proto3" json:"result,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ExecuteResponse) Reset() { @@ -2109,14 +2098,13 @@ func (x *ExecuteResponse) GetResult() *QueryResult { // in the form of result or error but not both. // TODO: To be used in ExecuteBatchResponse and BeginExecuteBatchResponse. type ResultWithError struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // error contains an query level error, only set if result is unset. Error *vtrpc.RPCError `protobuf:"bytes,1,opt,name=error,proto3" json:"error,omitempty"` // result contains the query result, only set if error is unset. - Result *QueryResult `protobuf:"bytes,2,opt,name=result,proto3" json:"result,omitempty"` + Result *QueryResult `protobuf:"bytes,2,opt,name=result,proto3" json:"result,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ResultWithError) Reset() { @@ -2165,17 +2153,16 @@ func (x *ResultWithError) GetResult() *QueryResult { // StreamExecuteRequest is the payload to StreamExecute type StreamExecuteRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - EffectiveCallerId *vtrpc.CallerID `protobuf:"bytes,1,opt,name=effective_caller_id,json=effectiveCallerId,proto3" json:"effective_caller_id,omitempty"` - ImmediateCallerId *VTGateCallerID `protobuf:"bytes,2,opt,name=immediate_caller_id,json=immediateCallerId,proto3" json:"immediate_caller_id,omitempty"` - Target *Target `protobuf:"bytes,3,opt,name=target,proto3" json:"target,omitempty"` - Query *BoundQuery `protobuf:"bytes,4,opt,name=query,proto3" json:"query,omitempty"` - Options *ExecuteOptions `protobuf:"bytes,5,opt,name=options,proto3" json:"options,omitempty"` - TransactionId int64 `protobuf:"varint,6,opt,name=transaction_id,json=transactionId,proto3" json:"transaction_id,omitempty"` - ReservedId int64 `protobuf:"varint,7,opt,name=reserved_id,json=reservedId,proto3" json:"reserved_id,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + EffectiveCallerId *vtrpc.CallerID `protobuf:"bytes,1,opt,name=effective_caller_id,json=effectiveCallerId,proto3" json:"effective_caller_id,omitempty"` + ImmediateCallerId *VTGateCallerID `protobuf:"bytes,2,opt,name=immediate_caller_id,json=immediateCallerId,proto3" json:"immediate_caller_id,omitempty"` + Target *Target `protobuf:"bytes,3,opt,name=target,proto3" json:"target,omitempty"` + Query *BoundQuery `protobuf:"bytes,4,opt,name=query,proto3" json:"query,omitempty"` + Options *ExecuteOptions `protobuf:"bytes,5,opt,name=options,proto3" json:"options,omitempty"` + TransactionId int64 `protobuf:"varint,6,opt,name=transaction_id,json=transactionId,proto3" json:"transaction_id,omitempty"` + ReservedId int64 `protobuf:"varint,7,opt,name=reserved_id,json=reservedId,proto3" json:"reserved_id,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *StreamExecuteRequest) Reset() { @@ -2259,11 +2246,10 @@ func (x *StreamExecuteRequest) GetReservedId() int64 { // StreamExecuteResponse is the returned value from StreamExecute type StreamExecuteResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Result *QueryResult `protobuf:"bytes,1,opt,name=result,proto3" json:"result,omitempty"` unknownFields protoimpl.UnknownFields - - Result *QueryResult `protobuf:"bytes,1,opt,name=result,proto3" json:"result,omitempty"` + sizeCache protoimpl.SizeCache } func (x *StreamExecuteResponse) Reset() { @@ -2305,14 +2291,13 @@ func (x *StreamExecuteResponse) GetResult() *QueryResult { // BeginRequest is the payload to Begin type BeginRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - EffectiveCallerId *vtrpc.CallerID `protobuf:"bytes,1,opt,name=effective_caller_id,json=effectiveCallerId,proto3" json:"effective_caller_id,omitempty"` - ImmediateCallerId *VTGateCallerID `protobuf:"bytes,2,opt,name=immediate_caller_id,json=immediateCallerId,proto3" json:"immediate_caller_id,omitempty"` - Target *Target `protobuf:"bytes,3,opt,name=target,proto3" json:"target,omitempty"` - Options *ExecuteOptions `protobuf:"bytes,4,opt,name=options,proto3" json:"options,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + EffectiveCallerId *vtrpc.CallerID `protobuf:"bytes,1,opt,name=effective_caller_id,json=effectiveCallerId,proto3" json:"effective_caller_id,omitempty"` + ImmediateCallerId *VTGateCallerID `protobuf:"bytes,2,opt,name=immediate_caller_id,json=immediateCallerId,proto3" json:"immediate_caller_id,omitempty"` + Target *Target `protobuf:"bytes,3,opt,name=target,proto3" json:"target,omitempty"` + Options *ExecuteOptions `protobuf:"bytes,4,opt,name=options,proto3" json:"options,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *BeginRequest) Reset() { @@ -2375,15 +2360,14 @@ func (x *BeginRequest) GetOptions() *ExecuteOptions { // BeginResponse is the returned value from Begin type BeginResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - TransactionId int64 `protobuf:"varint,1,opt,name=transaction_id,json=transactionId,proto3" json:"transaction_id,omitempty"` - TabletAlias *topodata.TabletAlias `protobuf:"bytes,2,opt,name=tablet_alias,json=tabletAlias,proto3" json:"tablet_alias,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + TransactionId int64 `protobuf:"varint,1,opt,name=transaction_id,json=transactionId,proto3" json:"transaction_id,omitempty"` + TabletAlias *topodata.TabletAlias `protobuf:"bytes,2,opt,name=tablet_alias,json=tabletAlias,proto3" json:"tablet_alias,omitempty"` // The session_state_changes might be set if the transaction is a snapshot transaction // and the MySQL implementation supports getting a start gtid on snapshot SessionStateChanges string `protobuf:"bytes,3,opt,name=session_state_changes,json=sessionStateChanges,proto3" json:"session_state_changes,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *BeginResponse) Reset() { @@ -2439,14 +2423,13 @@ func (x *BeginResponse) GetSessionStateChanges() string { // CommitRequest is the payload to Commit type CommitRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - EffectiveCallerId *vtrpc.CallerID `protobuf:"bytes,1,opt,name=effective_caller_id,json=effectiveCallerId,proto3" json:"effective_caller_id,omitempty"` - ImmediateCallerId *VTGateCallerID `protobuf:"bytes,2,opt,name=immediate_caller_id,json=immediateCallerId,proto3" json:"immediate_caller_id,omitempty"` - Target *Target `protobuf:"bytes,3,opt,name=target,proto3" json:"target,omitempty"` - TransactionId int64 `protobuf:"varint,4,opt,name=transaction_id,json=transactionId,proto3" json:"transaction_id,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + EffectiveCallerId *vtrpc.CallerID `protobuf:"bytes,1,opt,name=effective_caller_id,json=effectiveCallerId,proto3" json:"effective_caller_id,omitempty"` + ImmediateCallerId *VTGateCallerID `protobuf:"bytes,2,opt,name=immediate_caller_id,json=immediateCallerId,proto3" json:"immediate_caller_id,omitempty"` + Target *Target `protobuf:"bytes,3,opt,name=target,proto3" json:"target,omitempty"` + TransactionId int64 `protobuf:"varint,4,opt,name=transaction_id,json=transactionId,proto3" json:"transaction_id,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *CommitRequest) Reset() { @@ -2509,11 +2492,10 @@ func (x *CommitRequest) GetTransactionId() int64 { // CommitResponse is the returned value from Commit type CommitResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + ReservedId int64 `protobuf:"varint,1,opt,name=reserved_id,json=reservedId,proto3" json:"reserved_id,omitempty"` unknownFields protoimpl.UnknownFields - - ReservedId int64 `protobuf:"varint,1,opt,name=reserved_id,json=reservedId,proto3" json:"reserved_id,omitempty"` + sizeCache protoimpl.SizeCache } func (x *CommitResponse) Reset() { @@ -2555,14 +2537,13 @@ func (x *CommitResponse) GetReservedId() int64 { // RollbackRequest is the payload to Rollback type RollbackRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - EffectiveCallerId *vtrpc.CallerID `protobuf:"bytes,1,opt,name=effective_caller_id,json=effectiveCallerId,proto3" json:"effective_caller_id,omitempty"` - ImmediateCallerId *VTGateCallerID `protobuf:"bytes,2,opt,name=immediate_caller_id,json=immediateCallerId,proto3" json:"immediate_caller_id,omitempty"` - Target *Target `protobuf:"bytes,3,opt,name=target,proto3" json:"target,omitempty"` - TransactionId int64 `protobuf:"varint,4,opt,name=transaction_id,json=transactionId,proto3" json:"transaction_id,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + EffectiveCallerId *vtrpc.CallerID `protobuf:"bytes,1,opt,name=effective_caller_id,json=effectiveCallerId,proto3" json:"effective_caller_id,omitempty"` + ImmediateCallerId *VTGateCallerID `protobuf:"bytes,2,opt,name=immediate_caller_id,json=immediateCallerId,proto3" json:"immediate_caller_id,omitempty"` + Target *Target `protobuf:"bytes,3,opt,name=target,proto3" json:"target,omitempty"` + TransactionId int64 `protobuf:"varint,4,opt,name=transaction_id,json=transactionId,proto3" json:"transaction_id,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RollbackRequest) Reset() { @@ -2625,11 +2606,10 @@ func (x *RollbackRequest) GetTransactionId() int64 { // RollbackResponse is the returned value from Rollback type RollbackResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + ReservedId int64 `protobuf:"varint,1,opt,name=reserved_id,json=reservedId,proto3" json:"reserved_id,omitempty"` unknownFields protoimpl.UnknownFields - - ReservedId int64 `protobuf:"varint,1,opt,name=reserved_id,json=reservedId,proto3" json:"reserved_id,omitempty"` + sizeCache protoimpl.SizeCache } func (x *RollbackResponse) Reset() { @@ -2671,15 +2651,14 @@ func (x *RollbackResponse) GetReservedId() int64 { // PrepareRequest is the payload to Prepare type PrepareRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - EffectiveCallerId *vtrpc.CallerID `protobuf:"bytes,1,opt,name=effective_caller_id,json=effectiveCallerId,proto3" json:"effective_caller_id,omitempty"` - ImmediateCallerId *VTGateCallerID `protobuf:"bytes,2,opt,name=immediate_caller_id,json=immediateCallerId,proto3" json:"immediate_caller_id,omitempty"` - Target *Target `protobuf:"bytes,3,opt,name=target,proto3" json:"target,omitempty"` - TransactionId int64 `protobuf:"varint,4,opt,name=transaction_id,json=transactionId,proto3" json:"transaction_id,omitempty"` - Dtid string `protobuf:"bytes,5,opt,name=dtid,proto3" json:"dtid,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + EffectiveCallerId *vtrpc.CallerID `protobuf:"bytes,1,opt,name=effective_caller_id,json=effectiveCallerId,proto3" json:"effective_caller_id,omitempty"` + ImmediateCallerId *VTGateCallerID `protobuf:"bytes,2,opt,name=immediate_caller_id,json=immediateCallerId,proto3" json:"immediate_caller_id,omitempty"` + Target *Target `protobuf:"bytes,3,opt,name=target,proto3" json:"target,omitempty"` + TransactionId int64 `protobuf:"varint,4,opt,name=transaction_id,json=transactionId,proto3" json:"transaction_id,omitempty"` + Dtid string `protobuf:"bytes,5,opt,name=dtid,proto3" json:"dtid,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *PrepareRequest) Reset() { @@ -2749,9 +2728,9 @@ func (x *PrepareRequest) GetDtid() string { // PrepareResponse is the returned value from Prepare type PrepareResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *PrepareResponse) Reset() { @@ -2786,14 +2765,13 @@ func (*PrepareResponse) Descriptor() ([]byte, []int) { // CommitPreparedRequest is the payload to CommitPrepared type CommitPreparedRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - EffectiveCallerId *vtrpc.CallerID `protobuf:"bytes,1,opt,name=effective_caller_id,json=effectiveCallerId,proto3" json:"effective_caller_id,omitempty"` - ImmediateCallerId *VTGateCallerID `protobuf:"bytes,2,opt,name=immediate_caller_id,json=immediateCallerId,proto3" json:"immediate_caller_id,omitempty"` - Target *Target `protobuf:"bytes,3,opt,name=target,proto3" json:"target,omitempty"` - Dtid string `protobuf:"bytes,4,opt,name=dtid,proto3" json:"dtid,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + EffectiveCallerId *vtrpc.CallerID `protobuf:"bytes,1,opt,name=effective_caller_id,json=effectiveCallerId,proto3" json:"effective_caller_id,omitempty"` + ImmediateCallerId *VTGateCallerID `protobuf:"bytes,2,opt,name=immediate_caller_id,json=immediateCallerId,proto3" json:"immediate_caller_id,omitempty"` + Target *Target `protobuf:"bytes,3,opt,name=target,proto3" json:"target,omitempty"` + Dtid string `protobuf:"bytes,4,opt,name=dtid,proto3" json:"dtid,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *CommitPreparedRequest) Reset() { @@ -2856,9 +2834,9 @@ func (x *CommitPreparedRequest) GetDtid() string { // CommitPreparedResponse is the returned value from CommitPrepared type CommitPreparedResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *CommitPreparedResponse) Reset() { @@ -2893,15 +2871,14 @@ func (*CommitPreparedResponse) Descriptor() ([]byte, []int) { // RollbackPreparedRequest is the payload to RollbackPrepared type RollbackPreparedRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - EffectiveCallerId *vtrpc.CallerID `protobuf:"bytes,1,opt,name=effective_caller_id,json=effectiveCallerId,proto3" json:"effective_caller_id,omitempty"` - ImmediateCallerId *VTGateCallerID `protobuf:"bytes,2,opt,name=immediate_caller_id,json=immediateCallerId,proto3" json:"immediate_caller_id,omitempty"` - Target *Target `protobuf:"bytes,3,opt,name=target,proto3" json:"target,omitempty"` - TransactionId int64 `protobuf:"varint,4,opt,name=transaction_id,json=transactionId,proto3" json:"transaction_id,omitempty"` - Dtid string `protobuf:"bytes,5,opt,name=dtid,proto3" json:"dtid,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + EffectiveCallerId *vtrpc.CallerID `protobuf:"bytes,1,opt,name=effective_caller_id,json=effectiveCallerId,proto3" json:"effective_caller_id,omitempty"` + ImmediateCallerId *VTGateCallerID `protobuf:"bytes,2,opt,name=immediate_caller_id,json=immediateCallerId,proto3" json:"immediate_caller_id,omitempty"` + Target *Target `protobuf:"bytes,3,opt,name=target,proto3" json:"target,omitempty"` + TransactionId int64 `protobuf:"varint,4,opt,name=transaction_id,json=transactionId,proto3" json:"transaction_id,omitempty"` + Dtid string `protobuf:"bytes,5,opt,name=dtid,proto3" json:"dtid,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RollbackPreparedRequest) Reset() { @@ -2971,9 +2948,9 @@ func (x *RollbackPreparedRequest) GetDtid() string { // RollbackPreparedResponse is the returned value from RollbackPrepared type RollbackPreparedResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RollbackPreparedResponse) Reset() { @@ -3008,15 +2985,14 @@ func (*RollbackPreparedResponse) Descriptor() ([]byte, []int) { // CreateTransactionRequest is the payload to CreateTransaction type CreateTransactionRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - EffectiveCallerId *vtrpc.CallerID `protobuf:"bytes,1,opt,name=effective_caller_id,json=effectiveCallerId,proto3" json:"effective_caller_id,omitempty"` - ImmediateCallerId *VTGateCallerID `protobuf:"bytes,2,opt,name=immediate_caller_id,json=immediateCallerId,proto3" json:"immediate_caller_id,omitempty"` - Target *Target `protobuf:"bytes,3,opt,name=target,proto3" json:"target,omitempty"` - Dtid string `protobuf:"bytes,4,opt,name=dtid,proto3" json:"dtid,omitempty"` - Participants []*Target `protobuf:"bytes,5,rep,name=participants,proto3" json:"participants,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + EffectiveCallerId *vtrpc.CallerID `protobuf:"bytes,1,opt,name=effective_caller_id,json=effectiveCallerId,proto3" json:"effective_caller_id,omitempty"` + ImmediateCallerId *VTGateCallerID `protobuf:"bytes,2,opt,name=immediate_caller_id,json=immediateCallerId,proto3" json:"immediate_caller_id,omitempty"` + Target *Target `protobuf:"bytes,3,opt,name=target,proto3" json:"target,omitempty"` + Dtid string `protobuf:"bytes,4,opt,name=dtid,proto3" json:"dtid,omitempty"` + Participants []*Target `protobuf:"bytes,5,rep,name=participants,proto3" json:"participants,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *CreateTransactionRequest) Reset() { @@ -3086,9 +3062,9 @@ func (x *CreateTransactionRequest) GetParticipants() []*Target { // CreateTransactionResponse is the returned value from CreateTransaction type CreateTransactionResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *CreateTransactionResponse) Reset() { @@ -3123,15 +3099,14 @@ func (*CreateTransactionResponse) Descriptor() ([]byte, []int) { // StartCommitRequest is the payload to StartCommit type StartCommitRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - EffectiveCallerId *vtrpc.CallerID `protobuf:"bytes,1,opt,name=effective_caller_id,json=effectiveCallerId,proto3" json:"effective_caller_id,omitempty"` - ImmediateCallerId *VTGateCallerID `protobuf:"bytes,2,opt,name=immediate_caller_id,json=immediateCallerId,proto3" json:"immediate_caller_id,omitempty"` - Target *Target `protobuf:"bytes,3,opt,name=target,proto3" json:"target,omitempty"` - TransactionId int64 `protobuf:"varint,4,opt,name=transaction_id,json=transactionId,proto3" json:"transaction_id,omitempty"` - Dtid string `protobuf:"bytes,5,opt,name=dtid,proto3" json:"dtid,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + EffectiveCallerId *vtrpc.CallerID `protobuf:"bytes,1,opt,name=effective_caller_id,json=effectiveCallerId,proto3" json:"effective_caller_id,omitempty"` + ImmediateCallerId *VTGateCallerID `protobuf:"bytes,2,opt,name=immediate_caller_id,json=immediateCallerId,proto3" json:"immediate_caller_id,omitempty"` + Target *Target `protobuf:"bytes,3,opt,name=target,proto3" json:"target,omitempty"` + TransactionId int64 `protobuf:"varint,4,opt,name=transaction_id,json=transactionId,proto3" json:"transaction_id,omitempty"` + Dtid string `protobuf:"bytes,5,opt,name=dtid,proto3" json:"dtid,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *StartCommitRequest) Reset() { @@ -3201,11 +3176,10 @@ func (x *StartCommitRequest) GetDtid() string { // StartCommitResponse is the returned value from StartCommit type StartCommitResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + State StartCommitState `protobuf:"varint,1,opt,name=state,proto3,enum=query.StartCommitState" json:"state,omitempty"` unknownFields protoimpl.UnknownFields - - State StartCommitState `protobuf:"varint,1,opt,name=state,proto3,enum=query.StartCommitState" json:"state,omitempty"` + sizeCache protoimpl.SizeCache } func (x *StartCommitResponse) Reset() { @@ -3247,15 +3221,14 @@ func (x *StartCommitResponse) GetState() StartCommitState { // SetRollbackRequest is the payload to SetRollback type SetRollbackRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - EffectiveCallerId *vtrpc.CallerID `protobuf:"bytes,1,opt,name=effective_caller_id,json=effectiveCallerId,proto3" json:"effective_caller_id,omitempty"` - ImmediateCallerId *VTGateCallerID `protobuf:"bytes,2,opt,name=immediate_caller_id,json=immediateCallerId,proto3" json:"immediate_caller_id,omitempty"` - Target *Target `protobuf:"bytes,3,opt,name=target,proto3" json:"target,omitempty"` - TransactionId int64 `protobuf:"varint,4,opt,name=transaction_id,json=transactionId,proto3" json:"transaction_id,omitempty"` - Dtid string `protobuf:"bytes,5,opt,name=dtid,proto3" json:"dtid,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + EffectiveCallerId *vtrpc.CallerID `protobuf:"bytes,1,opt,name=effective_caller_id,json=effectiveCallerId,proto3" json:"effective_caller_id,omitempty"` + ImmediateCallerId *VTGateCallerID `protobuf:"bytes,2,opt,name=immediate_caller_id,json=immediateCallerId,proto3" json:"immediate_caller_id,omitempty"` + Target *Target `protobuf:"bytes,3,opt,name=target,proto3" json:"target,omitempty"` + TransactionId int64 `protobuf:"varint,4,opt,name=transaction_id,json=transactionId,proto3" json:"transaction_id,omitempty"` + Dtid string `protobuf:"bytes,5,opt,name=dtid,proto3" json:"dtid,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *SetRollbackRequest) Reset() { @@ -3325,9 +3298,9 @@ func (x *SetRollbackRequest) GetDtid() string { // SetRollbackResponse is the returned value from SetRollback type SetRollbackResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *SetRollbackResponse) Reset() { @@ -3362,14 +3335,13 @@ func (*SetRollbackResponse) Descriptor() ([]byte, []int) { // ConcludeTransactionRequest is the payload to ConcludeTransaction type ConcludeTransactionRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - EffectiveCallerId *vtrpc.CallerID `protobuf:"bytes,1,opt,name=effective_caller_id,json=effectiveCallerId,proto3" json:"effective_caller_id,omitempty"` - ImmediateCallerId *VTGateCallerID `protobuf:"bytes,2,opt,name=immediate_caller_id,json=immediateCallerId,proto3" json:"immediate_caller_id,omitempty"` - Target *Target `protobuf:"bytes,3,opt,name=target,proto3" json:"target,omitempty"` - Dtid string `protobuf:"bytes,4,opt,name=dtid,proto3" json:"dtid,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + EffectiveCallerId *vtrpc.CallerID `protobuf:"bytes,1,opt,name=effective_caller_id,json=effectiveCallerId,proto3" json:"effective_caller_id,omitempty"` + ImmediateCallerId *VTGateCallerID `protobuf:"bytes,2,opt,name=immediate_caller_id,json=immediateCallerId,proto3" json:"immediate_caller_id,omitempty"` + Target *Target `protobuf:"bytes,3,opt,name=target,proto3" json:"target,omitempty"` + Dtid string `protobuf:"bytes,4,opt,name=dtid,proto3" json:"dtid,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ConcludeTransactionRequest) Reset() { @@ -3432,9 +3404,9 @@ func (x *ConcludeTransactionRequest) GetDtid() string { // ConcludeTransactionResponse is the returned value from ConcludeTransaction type ConcludeTransactionResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ConcludeTransactionResponse) Reset() { @@ -3469,14 +3441,13 @@ func (*ConcludeTransactionResponse) Descriptor() ([]byte, []int) { // ReadTransactionRequest is the payload to ReadTransaction type ReadTransactionRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - EffectiveCallerId *vtrpc.CallerID `protobuf:"bytes,1,opt,name=effective_caller_id,json=effectiveCallerId,proto3" json:"effective_caller_id,omitempty"` - ImmediateCallerId *VTGateCallerID `protobuf:"bytes,2,opt,name=immediate_caller_id,json=immediateCallerId,proto3" json:"immediate_caller_id,omitempty"` - Target *Target `protobuf:"bytes,3,opt,name=target,proto3" json:"target,omitempty"` - Dtid string `protobuf:"bytes,4,opt,name=dtid,proto3" json:"dtid,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + EffectiveCallerId *vtrpc.CallerID `protobuf:"bytes,1,opt,name=effective_caller_id,json=effectiveCallerId,proto3" json:"effective_caller_id,omitempty"` + ImmediateCallerId *VTGateCallerID `protobuf:"bytes,2,opt,name=immediate_caller_id,json=immediateCallerId,proto3" json:"immediate_caller_id,omitempty"` + Target *Target `protobuf:"bytes,3,opt,name=target,proto3" json:"target,omitempty"` + Dtid string `protobuf:"bytes,4,opt,name=dtid,proto3" json:"dtid,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ReadTransactionRequest) Reset() { @@ -3539,11 +3510,10 @@ func (x *ReadTransactionRequest) GetDtid() string { // ReadTransactionResponse is the returned value from ReadTransaction type ReadTransactionResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Metadata *TransactionMetadata `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"` unknownFields protoimpl.UnknownFields - - Metadata *TransactionMetadata `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ReadTransactionResponse) Reset() { @@ -3585,14 +3555,13 @@ func (x *ReadTransactionResponse) GetMetadata() *TransactionMetadata { // UnresolvedTransactionsRequest is the payload to UnresolvedTransactions type UnresolvedTransactionsRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - EffectiveCallerId *vtrpc.CallerID `protobuf:"bytes,1,opt,name=effective_caller_id,json=effectiveCallerId,proto3" json:"effective_caller_id,omitempty"` - ImmediateCallerId *VTGateCallerID `protobuf:"bytes,2,opt,name=immediate_caller_id,json=immediateCallerId,proto3" json:"immediate_caller_id,omitempty"` - Target *Target `protobuf:"bytes,3,opt,name=target,proto3" json:"target,omitempty"` - AbandonAge int64 `protobuf:"varint,4,opt,name=abandon_age,json=abandonAge,proto3" json:"abandon_age,omitempty"` // Unresolved Transactions older than this (in seconds). + state protoimpl.MessageState `protogen:"open.v1"` + EffectiveCallerId *vtrpc.CallerID `protobuf:"bytes,1,opt,name=effective_caller_id,json=effectiveCallerId,proto3" json:"effective_caller_id,omitempty"` + ImmediateCallerId *VTGateCallerID `protobuf:"bytes,2,opt,name=immediate_caller_id,json=immediateCallerId,proto3" json:"immediate_caller_id,omitempty"` + Target *Target `protobuf:"bytes,3,opt,name=target,proto3" json:"target,omitempty"` + AbandonAge int64 `protobuf:"varint,4,opt,name=abandon_age,json=abandonAge,proto3" json:"abandon_age,omitempty"` // Unresolved Transactions older than this (in seconds). + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *UnresolvedTransactionsRequest) Reset() { @@ -3655,11 +3624,10 @@ func (x *UnresolvedTransactionsRequest) GetAbandonAge() int64 { // UnresolvedTransactionsResponse is the returned value from UnresolvedTransactions type UnresolvedTransactionsResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Transactions []*TransactionMetadata `protobuf:"bytes,1,rep,name=transactions,proto3" json:"transactions,omitempty"` unknownFields protoimpl.UnknownFields - - Transactions []*TransactionMetadata `protobuf:"bytes,1,rep,name=transactions,proto3" json:"transactions,omitempty"` + sizeCache protoimpl.SizeCache } func (x *UnresolvedTransactionsResponse) Reset() { @@ -3701,17 +3669,16 @@ func (x *UnresolvedTransactionsResponse) GetTransactions() []*TransactionMetadat // BeginExecuteRequest is the payload to BeginExecute type BeginExecuteRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - EffectiveCallerId *vtrpc.CallerID `protobuf:"bytes,1,opt,name=effective_caller_id,json=effectiveCallerId,proto3" json:"effective_caller_id,omitempty"` - ImmediateCallerId *VTGateCallerID `protobuf:"bytes,2,opt,name=immediate_caller_id,json=immediateCallerId,proto3" json:"immediate_caller_id,omitempty"` - Target *Target `protobuf:"bytes,3,opt,name=target,proto3" json:"target,omitempty"` - Query *BoundQuery `protobuf:"bytes,4,opt,name=query,proto3" json:"query,omitempty"` - Options *ExecuteOptions `protobuf:"bytes,5,opt,name=options,proto3" json:"options,omitempty"` - ReservedId int64 `protobuf:"varint,6,opt,name=reserved_id,json=reservedId,proto3" json:"reserved_id,omitempty"` - PreQueries []string `protobuf:"bytes,7,rep,name=pre_queries,json=preQueries,proto3" json:"pre_queries,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + EffectiveCallerId *vtrpc.CallerID `protobuf:"bytes,1,opt,name=effective_caller_id,json=effectiveCallerId,proto3" json:"effective_caller_id,omitempty"` + ImmediateCallerId *VTGateCallerID `protobuf:"bytes,2,opt,name=immediate_caller_id,json=immediateCallerId,proto3" json:"immediate_caller_id,omitempty"` + Target *Target `protobuf:"bytes,3,opt,name=target,proto3" json:"target,omitempty"` + Query *BoundQuery `protobuf:"bytes,4,opt,name=query,proto3" json:"query,omitempty"` + Options *ExecuteOptions `protobuf:"bytes,5,opt,name=options,proto3" json:"options,omitempty"` + ReservedId int64 `protobuf:"varint,6,opt,name=reserved_id,json=reservedId,proto3" json:"reserved_id,omitempty"` + PreQueries []string `protobuf:"bytes,7,rep,name=pre_queries,json=preQueries,proto3" json:"pre_queries,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *BeginExecuteRequest) Reset() { @@ -3795,10 +3762,7 @@ func (x *BeginExecuteRequest) GetPreQueries() []string { // BeginExecuteResponse is the returned value from BeginExecute type BeginExecuteResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // error contains an application level error if necessary. Note the // transaction_id may be set, even when an error is returned, if the begin // worked but the execute failed. @@ -3810,6 +3774,8 @@ type BeginExecuteResponse struct { // The session_state_changes might be set if the transaction is a snapshot transaction // and the MySQL implementation supports getting a start gtid on snapshot SessionStateChanges string `protobuf:"bytes,5,opt,name=session_state_changes,json=sessionStateChanges,proto3" json:"session_state_changes,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *BeginExecuteResponse) Reset() { @@ -3879,17 +3845,16 @@ func (x *BeginExecuteResponse) GetSessionStateChanges() string { // BeginStreamExecuteRequest is the payload to BeginStreamExecute type BeginStreamExecuteRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - EffectiveCallerId *vtrpc.CallerID `protobuf:"bytes,1,opt,name=effective_caller_id,json=effectiveCallerId,proto3" json:"effective_caller_id,omitempty"` - ImmediateCallerId *VTGateCallerID `protobuf:"bytes,2,opt,name=immediate_caller_id,json=immediateCallerId,proto3" json:"immediate_caller_id,omitempty"` - Target *Target `protobuf:"bytes,3,opt,name=target,proto3" json:"target,omitempty"` - Query *BoundQuery `protobuf:"bytes,4,opt,name=query,proto3" json:"query,omitempty"` - Options *ExecuteOptions `protobuf:"bytes,5,opt,name=options,proto3" json:"options,omitempty"` - PreQueries []string `protobuf:"bytes,6,rep,name=pre_queries,json=preQueries,proto3" json:"pre_queries,omitempty"` - ReservedId int64 `protobuf:"varint,7,opt,name=reserved_id,json=reservedId,proto3" json:"reserved_id,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + EffectiveCallerId *vtrpc.CallerID `protobuf:"bytes,1,opt,name=effective_caller_id,json=effectiveCallerId,proto3" json:"effective_caller_id,omitempty"` + ImmediateCallerId *VTGateCallerID `protobuf:"bytes,2,opt,name=immediate_caller_id,json=immediateCallerId,proto3" json:"immediate_caller_id,omitempty"` + Target *Target `protobuf:"bytes,3,opt,name=target,proto3" json:"target,omitempty"` + Query *BoundQuery `protobuf:"bytes,4,opt,name=query,proto3" json:"query,omitempty"` + Options *ExecuteOptions `protobuf:"bytes,5,opt,name=options,proto3" json:"options,omitempty"` + PreQueries []string `protobuf:"bytes,6,rep,name=pre_queries,json=preQueries,proto3" json:"pre_queries,omitempty"` + ReservedId int64 `protobuf:"varint,7,opt,name=reserved_id,json=reservedId,proto3" json:"reserved_id,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *BeginStreamExecuteRequest) Reset() { @@ -3973,10 +3938,7 @@ func (x *BeginStreamExecuteRequest) GetReservedId() int64 { // BeginStreamExecuteResponse is the returned value from BeginStreamExecute type BeginStreamExecuteResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // error contains an application level error if necessary. Note the // transaction_id may be set, even when an error is returned, if the begin // worked but the stream execute failed. @@ -3988,6 +3950,8 @@ type BeginStreamExecuteResponse struct { // The session_state_changes might be set if the transaction is a snapshot transaction // and the MySQL implementation supports getting a start gtid on snapshot SessionStateChanges string `protobuf:"bytes,5,opt,name=session_state_changes,json=sessionStateChanges,proto3" json:"session_state_changes,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *BeginStreamExecuteResponse) Reset() { @@ -4057,15 +4021,14 @@ func (x *BeginStreamExecuteResponse) GetSessionStateChanges() string { // MessageStreamRequest is the request payload for MessageStream. type MessageStreamRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - EffectiveCallerId *vtrpc.CallerID `protobuf:"bytes,1,opt,name=effective_caller_id,json=effectiveCallerId,proto3" json:"effective_caller_id,omitempty"` - ImmediateCallerId *VTGateCallerID `protobuf:"bytes,2,opt,name=immediate_caller_id,json=immediateCallerId,proto3" json:"immediate_caller_id,omitempty"` - Target *Target `protobuf:"bytes,3,opt,name=target,proto3" json:"target,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + EffectiveCallerId *vtrpc.CallerID `protobuf:"bytes,1,opt,name=effective_caller_id,json=effectiveCallerId,proto3" json:"effective_caller_id,omitempty"` + ImmediateCallerId *VTGateCallerID `protobuf:"bytes,2,opt,name=immediate_caller_id,json=immediateCallerId,proto3" json:"immediate_caller_id,omitempty"` + Target *Target `protobuf:"bytes,3,opt,name=target,proto3" json:"target,omitempty"` // name is the message table name. - Name string `protobuf:"bytes,4,opt,name=name,proto3" json:"name,omitempty"` + Name string `protobuf:"bytes,4,opt,name=name,proto3" json:"name,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *MessageStreamRequest) Reset() { @@ -4128,11 +4091,10 @@ func (x *MessageStreamRequest) GetName() string { // MessageStreamResponse is a response for MessageStream. type MessageStreamResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Result *QueryResult `protobuf:"bytes,1,opt,name=result,proto3" json:"result,omitempty"` unknownFields protoimpl.UnknownFields - - Result *QueryResult `protobuf:"bytes,1,opt,name=result,proto3" json:"result,omitempty"` + sizeCache protoimpl.SizeCache } func (x *MessageStreamResponse) Reset() { @@ -4174,16 +4136,15 @@ func (x *MessageStreamResponse) GetResult() *QueryResult { // MessageAckRequest is the request payload for MessageAck. type MessageAckRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - EffectiveCallerId *vtrpc.CallerID `protobuf:"bytes,1,opt,name=effective_caller_id,json=effectiveCallerId,proto3" json:"effective_caller_id,omitempty"` - ImmediateCallerId *VTGateCallerID `protobuf:"bytes,2,opt,name=immediate_caller_id,json=immediateCallerId,proto3" json:"immediate_caller_id,omitempty"` - Target *Target `protobuf:"bytes,3,opt,name=target,proto3" json:"target,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + EffectiveCallerId *vtrpc.CallerID `protobuf:"bytes,1,opt,name=effective_caller_id,json=effectiveCallerId,proto3" json:"effective_caller_id,omitempty"` + ImmediateCallerId *VTGateCallerID `protobuf:"bytes,2,opt,name=immediate_caller_id,json=immediateCallerId,proto3" json:"immediate_caller_id,omitempty"` + Target *Target `protobuf:"bytes,3,opt,name=target,proto3" json:"target,omitempty"` // name is the message table name. - Name string `protobuf:"bytes,4,opt,name=name,proto3" json:"name,omitempty"` - Ids []*Value `protobuf:"bytes,5,rep,name=ids,proto3" json:"ids,omitempty"` + Name string `protobuf:"bytes,4,opt,name=name,proto3" json:"name,omitempty"` + Ids []*Value `protobuf:"bytes,5,rep,name=ids,proto3" json:"ids,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *MessageAckRequest) Reset() { @@ -4253,14 +4214,13 @@ func (x *MessageAckRequest) GetIds() []*Value { // MessageAckResponse is the response for MessageAck. type MessageAckResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // result contains the result of the ack operation. // Since this acts like a DML, only // RowsAffected is returned in the result. - Result *QueryResult `protobuf:"bytes,1,opt,name=result,proto3" json:"result,omitempty"` + Result *QueryResult `protobuf:"bytes,1,opt,name=result,proto3" json:"result,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *MessageAckResponse) Reset() { @@ -4302,17 +4262,16 @@ func (x *MessageAckResponse) GetResult() *QueryResult { // ReserveExecuteRequest is the payload to ReserveExecute type ReserveExecuteRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - EffectiveCallerId *vtrpc.CallerID `protobuf:"bytes,1,opt,name=effective_caller_id,json=effectiveCallerId,proto3" json:"effective_caller_id,omitempty"` - ImmediateCallerId *VTGateCallerID `protobuf:"bytes,2,opt,name=immediate_caller_id,json=immediateCallerId,proto3" json:"immediate_caller_id,omitempty"` - Target *Target `protobuf:"bytes,3,opt,name=target,proto3" json:"target,omitempty"` - Query *BoundQuery `protobuf:"bytes,4,opt,name=query,proto3" json:"query,omitempty"` - TransactionId int64 `protobuf:"varint,5,opt,name=transaction_id,json=transactionId,proto3" json:"transaction_id,omitempty"` - Options *ExecuteOptions `protobuf:"bytes,6,opt,name=options,proto3" json:"options,omitempty"` - PreQueries []string `protobuf:"bytes,7,rep,name=pre_queries,json=preQueries,proto3" json:"pre_queries,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + EffectiveCallerId *vtrpc.CallerID `protobuf:"bytes,1,opt,name=effective_caller_id,json=effectiveCallerId,proto3" json:"effective_caller_id,omitempty"` + ImmediateCallerId *VTGateCallerID `protobuf:"bytes,2,opt,name=immediate_caller_id,json=immediateCallerId,proto3" json:"immediate_caller_id,omitempty"` + Target *Target `protobuf:"bytes,3,opt,name=target,proto3" json:"target,omitempty"` + Query *BoundQuery `protobuf:"bytes,4,opt,name=query,proto3" json:"query,omitempty"` + TransactionId int64 `protobuf:"varint,5,opt,name=transaction_id,json=transactionId,proto3" json:"transaction_id,omitempty"` + Options *ExecuteOptions `protobuf:"bytes,6,opt,name=options,proto3" json:"options,omitempty"` + PreQueries []string `protobuf:"bytes,7,rep,name=pre_queries,json=preQueries,proto3" json:"pre_queries,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ReserveExecuteRequest) Reset() { @@ -4396,15 +4355,14 @@ func (x *ReserveExecuteRequest) GetPreQueries() []string { // ReserveExecuteResponse is the returned value from ReserveExecute type ReserveExecuteResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Error *vtrpc.RPCError `protobuf:"bytes,1,opt,name=error,proto3" json:"error,omitempty"` - Result *QueryResult `protobuf:"bytes,2,opt,name=result,proto3" json:"result,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Error *vtrpc.RPCError `protobuf:"bytes,1,opt,name=error,proto3" json:"error,omitempty"` + Result *QueryResult `protobuf:"bytes,2,opt,name=result,proto3" json:"result,omitempty"` // The following fields might be non-zero even if an error is present. - ReservedId int64 `protobuf:"varint,3,opt,name=reserved_id,json=reservedId,proto3" json:"reserved_id,omitempty"` - TabletAlias *topodata.TabletAlias `protobuf:"bytes,4,opt,name=tablet_alias,json=tabletAlias,proto3" json:"tablet_alias,omitempty"` + ReservedId int64 `protobuf:"varint,3,opt,name=reserved_id,json=reservedId,proto3" json:"reserved_id,omitempty"` + TabletAlias *topodata.TabletAlias `protobuf:"bytes,4,opt,name=tablet_alias,json=tabletAlias,proto3" json:"tablet_alias,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ReserveExecuteResponse) Reset() { @@ -4467,17 +4425,16 @@ func (x *ReserveExecuteResponse) GetTabletAlias() *topodata.TabletAlias { // ReserveStreamExecuteRequest is the payload to ReserveStreamExecute type ReserveStreamExecuteRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - EffectiveCallerId *vtrpc.CallerID `protobuf:"bytes,1,opt,name=effective_caller_id,json=effectiveCallerId,proto3" json:"effective_caller_id,omitempty"` - ImmediateCallerId *VTGateCallerID `protobuf:"bytes,2,opt,name=immediate_caller_id,json=immediateCallerId,proto3" json:"immediate_caller_id,omitempty"` - Target *Target `protobuf:"bytes,3,opt,name=target,proto3" json:"target,omitempty"` - Query *BoundQuery `protobuf:"bytes,4,opt,name=query,proto3" json:"query,omitempty"` - Options *ExecuteOptions `protobuf:"bytes,5,opt,name=options,proto3" json:"options,omitempty"` - TransactionId int64 `protobuf:"varint,6,opt,name=transaction_id,json=transactionId,proto3" json:"transaction_id,omitempty"` - PreQueries []string `protobuf:"bytes,7,rep,name=pre_queries,json=preQueries,proto3" json:"pre_queries,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + EffectiveCallerId *vtrpc.CallerID `protobuf:"bytes,1,opt,name=effective_caller_id,json=effectiveCallerId,proto3" json:"effective_caller_id,omitempty"` + ImmediateCallerId *VTGateCallerID `protobuf:"bytes,2,opt,name=immediate_caller_id,json=immediateCallerId,proto3" json:"immediate_caller_id,omitempty"` + Target *Target `protobuf:"bytes,3,opt,name=target,proto3" json:"target,omitempty"` + Query *BoundQuery `protobuf:"bytes,4,opt,name=query,proto3" json:"query,omitempty"` + Options *ExecuteOptions `protobuf:"bytes,5,opt,name=options,proto3" json:"options,omitempty"` + TransactionId int64 `protobuf:"varint,6,opt,name=transaction_id,json=transactionId,proto3" json:"transaction_id,omitempty"` + PreQueries []string `protobuf:"bytes,7,rep,name=pre_queries,json=preQueries,proto3" json:"pre_queries,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ReserveStreamExecuteRequest) Reset() { @@ -4561,15 +4518,14 @@ func (x *ReserveStreamExecuteRequest) GetPreQueries() []string { // ReserveStreamExecuteResponse is the returned value from ReserveStreamExecute type ReserveStreamExecuteResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Error *vtrpc.RPCError `protobuf:"bytes,1,opt,name=error,proto3" json:"error,omitempty"` - Result *QueryResult `protobuf:"bytes,2,opt,name=result,proto3" json:"result,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Error *vtrpc.RPCError `protobuf:"bytes,1,opt,name=error,proto3" json:"error,omitempty"` + Result *QueryResult `protobuf:"bytes,2,opt,name=result,proto3" json:"result,omitempty"` // The following fields might be non-zero even if an error is present. - ReservedId int64 `protobuf:"varint,3,opt,name=reserved_id,json=reservedId,proto3" json:"reserved_id,omitempty"` - TabletAlias *topodata.TabletAlias `protobuf:"bytes,4,opt,name=tablet_alias,json=tabletAlias,proto3" json:"tablet_alias,omitempty"` + ReservedId int64 `protobuf:"varint,3,opt,name=reserved_id,json=reservedId,proto3" json:"reserved_id,omitempty"` + TabletAlias *topodata.TabletAlias `protobuf:"bytes,4,opt,name=tablet_alias,json=tabletAlias,proto3" json:"tablet_alias,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ReserveStreamExecuteResponse) Reset() { @@ -4632,17 +4588,16 @@ func (x *ReserveStreamExecuteResponse) GetTabletAlias() *topodata.TabletAlias { // ReserveBeginExecuteRequest is the payload to ReserveBeginExecute type ReserveBeginExecuteRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - EffectiveCallerId *vtrpc.CallerID `protobuf:"bytes,1,opt,name=effective_caller_id,json=effectiveCallerId,proto3" json:"effective_caller_id,omitempty"` - ImmediateCallerId *VTGateCallerID `protobuf:"bytes,2,opt,name=immediate_caller_id,json=immediateCallerId,proto3" json:"immediate_caller_id,omitempty"` - Target *Target `protobuf:"bytes,3,opt,name=target,proto3" json:"target,omitempty"` - Query *BoundQuery `protobuf:"bytes,4,opt,name=query,proto3" json:"query,omitempty"` - Options *ExecuteOptions `protobuf:"bytes,5,opt,name=options,proto3" json:"options,omitempty"` - PreQueries []string `protobuf:"bytes,6,rep,name=pre_queries,json=preQueries,proto3" json:"pre_queries,omitempty"` - PostBeginQueries []string `protobuf:"bytes,7,rep,name=post_begin_queries,json=postBeginQueries,proto3" json:"post_begin_queries,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + EffectiveCallerId *vtrpc.CallerID `protobuf:"bytes,1,opt,name=effective_caller_id,json=effectiveCallerId,proto3" json:"effective_caller_id,omitempty"` + ImmediateCallerId *VTGateCallerID `protobuf:"bytes,2,opt,name=immediate_caller_id,json=immediateCallerId,proto3" json:"immediate_caller_id,omitempty"` + Target *Target `protobuf:"bytes,3,opt,name=target,proto3" json:"target,omitempty"` + Query *BoundQuery `protobuf:"bytes,4,opt,name=query,proto3" json:"query,omitempty"` + Options *ExecuteOptions `protobuf:"bytes,5,opt,name=options,proto3" json:"options,omitempty"` + PreQueries []string `protobuf:"bytes,6,rep,name=pre_queries,json=preQueries,proto3" json:"pre_queries,omitempty"` + PostBeginQueries []string `protobuf:"bytes,7,rep,name=post_begin_queries,json=postBeginQueries,proto3" json:"post_begin_queries,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ReserveBeginExecuteRequest) Reset() { @@ -4726,10 +4681,7 @@ func (x *ReserveBeginExecuteRequest) GetPostBeginQueries() []string { // ReserveBeginExecuteResponse is the returned value from ReserveBeginExecute type ReserveBeginExecuteResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // error contains an application level error if necessary. Note the // transaction_id may be set, even when an error is returned, if the begin // worked but the execute failed. @@ -4742,6 +4694,8 @@ type ReserveBeginExecuteResponse struct { // The session_state_changes might be set if the transaction is a snapshot transaction // and the MySQL implementation supports getting a start gtid on snapshot SessionStateChanges string `protobuf:"bytes,6,opt,name=session_state_changes,json=sessionStateChanges,proto3" json:"session_state_changes,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ReserveBeginExecuteResponse) Reset() { @@ -4818,17 +4772,16 @@ func (x *ReserveBeginExecuteResponse) GetSessionStateChanges() string { // ReserveBeginStreamExecuteRequest is the payload to ReserveBeginStreamExecute type ReserveBeginStreamExecuteRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - EffectiveCallerId *vtrpc.CallerID `protobuf:"bytes,1,opt,name=effective_caller_id,json=effectiveCallerId,proto3" json:"effective_caller_id,omitempty"` - ImmediateCallerId *VTGateCallerID `protobuf:"bytes,2,opt,name=immediate_caller_id,json=immediateCallerId,proto3" json:"immediate_caller_id,omitempty"` - Target *Target `protobuf:"bytes,3,opt,name=target,proto3" json:"target,omitempty"` - Query *BoundQuery `protobuf:"bytes,4,opt,name=query,proto3" json:"query,omitempty"` - Options *ExecuteOptions `protobuf:"bytes,5,opt,name=options,proto3" json:"options,omitempty"` - PreQueries []string `protobuf:"bytes,6,rep,name=pre_queries,json=preQueries,proto3" json:"pre_queries,omitempty"` - PostBeginQueries []string `protobuf:"bytes,7,rep,name=post_begin_queries,json=postBeginQueries,proto3" json:"post_begin_queries,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + EffectiveCallerId *vtrpc.CallerID `protobuf:"bytes,1,opt,name=effective_caller_id,json=effectiveCallerId,proto3" json:"effective_caller_id,omitempty"` + ImmediateCallerId *VTGateCallerID `protobuf:"bytes,2,opt,name=immediate_caller_id,json=immediateCallerId,proto3" json:"immediate_caller_id,omitempty"` + Target *Target `protobuf:"bytes,3,opt,name=target,proto3" json:"target,omitempty"` + Query *BoundQuery `protobuf:"bytes,4,opt,name=query,proto3" json:"query,omitempty"` + Options *ExecuteOptions `protobuf:"bytes,5,opt,name=options,proto3" json:"options,omitempty"` + PreQueries []string `protobuf:"bytes,6,rep,name=pre_queries,json=preQueries,proto3" json:"pre_queries,omitempty"` + PostBeginQueries []string `protobuf:"bytes,7,rep,name=post_begin_queries,json=postBeginQueries,proto3" json:"post_begin_queries,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ReserveBeginStreamExecuteRequest) Reset() { @@ -4912,10 +4865,7 @@ func (x *ReserveBeginStreamExecuteRequest) GetPostBeginQueries() []string { // ReserveBeginStreamExecuteResponse is the returned value from ReserveBeginStreamExecute type ReserveBeginStreamExecuteResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // error contains an application level error if necessary. Note the // transaction_id may be set, even when an error is returned, if the begin // worked but the stream execute failed. @@ -4928,6 +4878,8 @@ type ReserveBeginStreamExecuteResponse struct { // The session_state_changes might be set if the transaction is a snapshot transaction // and the MySQL implementation supports getting a start gtid on snapshot SessionStateChanges string `protobuf:"bytes,6,opt,name=session_state_changes,json=sessionStateChanges,proto3" json:"session_state_changes,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ReserveBeginStreamExecuteResponse) Reset() { @@ -5004,15 +4956,14 @@ func (x *ReserveBeginStreamExecuteResponse) GetSessionStateChanges() string { // ReleaseRequest is the payload to Release type ReleaseRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - EffectiveCallerId *vtrpc.CallerID `protobuf:"bytes,1,opt,name=effective_caller_id,json=effectiveCallerId,proto3" json:"effective_caller_id,omitempty"` - ImmediateCallerId *VTGateCallerID `protobuf:"bytes,2,opt,name=immediate_caller_id,json=immediateCallerId,proto3" json:"immediate_caller_id,omitempty"` - Target *Target `protobuf:"bytes,3,opt,name=target,proto3" json:"target,omitempty"` - TransactionId int64 `protobuf:"varint,4,opt,name=transaction_id,json=transactionId,proto3" json:"transaction_id,omitempty"` - ReservedId int64 `protobuf:"varint,5,opt,name=reserved_id,json=reservedId,proto3" json:"reserved_id,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + EffectiveCallerId *vtrpc.CallerID `protobuf:"bytes,1,opt,name=effective_caller_id,json=effectiveCallerId,proto3" json:"effective_caller_id,omitempty"` + ImmediateCallerId *VTGateCallerID `protobuf:"bytes,2,opt,name=immediate_caller_id,json=immediateCallerId,proto3" json:"immediate_caller_id,omitempty"` + Target *Target `protobuf:"bytes,3,opt,name=target,proto3" json:"target,omitempty"` + TransactionId int64 `protobuf:"varint,4,opt,name=transaction_id,json=transactionId,proto3" json:"transaction_id,omitempty"` + ReservedId int64 `protobuf:"varint,5,opt,name=reserved_id,json=reservedId,proto3" json:"reserved_id,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ReleaseRequest) Reset() { @@ -5082,9 +5033,9 @@ func (x *ReleaseRequest) GetReservedId() int64 { // ReleaseResponse is the returned value from Release type ReleaseResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ReleaseResponse) Reset() { @@ -5119,9 +5070,9 @@ func (*ReleaseResponse) Descriptor() ([]byte, []int) { // StreamHealthRequest is the payload for StreamHealth type StreamHealthRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *StreamHealthRequest) Reset() { @@ -5157,10 +5108,7 @@ func (*StreamHealthRequest) Descriptor() ([]byte, []int) { // RealtimeStats contains information about the tablet status. // It is only valid for a single tablet. type RealtimeStats struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // health_error is the last error we got from health check, // or empty is the server is healthy. This is used for subset selection, // we do not send queries to servers that are not healthy. @@ -5193,8 +5141,10 @@ type RealtimeStats struct { // view_schema_changed is to provide list of views that have schema changes detected by the tablet. ViewSchemaChanged []string `protobuf:"bytes,8,rep,name=view_schema_changed,json=viewSchemaChanged,proto3" json:"view_schema_changed,omitempty"` // udfs_changed is used to signal that the UDFs have changed on the tablet. - UdfsChanged bool `protobuf:"varint,9,opt,name=udfs_changed,json=udfsChanged,proto3" json:"udfs_changed,omitempty"` - TxUnresolved bool `protobuf:"varint,10,opt,name=tx_unresolved,json=txUnresolved,proto3" json:"tx_unresolved,omitempty"` + UdfsChanged bool `protobuf:"varint,9,opt,name=udfs_changed,json=udfsChanged,proto3" json:"udfs_changed,omitempty"` + TxUnresolved bool `protobuf:"varint,10,opt,name=tx_unresolved,json=txUnresolved,proto3" json:"tx_unresolved,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RealtimeStats) Reset() { @@ -5302,10 +5252,7 @@ func (x *RealtimeStats) GetTxUnresolved() bool { // to another, or from the Gateway layer of a vtgate to the routing // layer. type AggregateStats struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // healthy_tablet_count is the number of healthy tablets in the group. HealthyTabletCount int32 `protobuf:"varint,1,opt,name=healthy_tablet_count,json=healthyTabletCount,proto3" json:"healthy_tablet_count,omitempty"` // unhealthy_tablet_count is the number of unhealthy tablets in the group. @@ -5318,6 +5265,8 @@ type AggregateStats struct { // replication_lag_seconds values of the healthy tablets. It is unset // if the tablet type is primary. ReplicationLagSecondsMax uint32 `protobuf:"varint,4,opt,name=replication_lag_seconds_max,json=replicationLagSecondsMax,proto3" json:"replication_lag_seconds_max,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *AggregateStats) Reset() { @@ -5384,10 +5333,7 @@ func (x *AggregateStats) GetReplicationLagSecondsMax() uint32 { // - realtime_stats is set. // - aggregate_stats is not set (deprecated) type StreamHealthResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // target is the current server type. Only queries with that exact Target // record will be accepted (the cell may not match, however). Target *Target `protobuf:"bytes,1,opt,name=target,proto3" json:"target,omitempty"` @@ -5435,7 +5381,9 @@ type StreamHealthResponse struct { // code uses it to verify that it's talking to the correct tablet and that it // hasn't changed in the meantime e.g. due to tablet restarts where ports or // ips have been reused but assigned differently. - TabletAlias *topodata.TabletAlias `protobuf:"bytes,5,opt,name=tablet_alias,json=tabletAlias,proto3" json:"tablet_alias,omitempty"` + TabletAlias *topodata.TabletAlias `protobuf:"bytes,5,opt,name=tablet_alias,json=tabletAlias,proto3" json:"tablet_alias,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *StreamHealthResponse) Reset() { @@ -5505,14 +5453,13 @@ func (x *StreamHealthResponse) GetTabletAlias() *topodata.TabletAlias { // TransactionMetadata contains the metadata for a distributed transaction. type TransactionMetadata struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Dtid string `protobuf:"bytes,1,opt,name=dtid,proto3" json:"dtid,omitempty"` + State TransactionState `protobuf:"varint,2,opt,name=state,proto3,enum=query.TransactionState" json:"state,omitempty"` + TimeCreated int64 `protobuf:"varint,3,opt,name=time_created,json=timeCreated,proto3" json:"time_created,omitempty"` + Participants []*Target `protobuf:"bytes,4,rep,name=participants,proto3" json:"participants,omitempty"` unknownFields protoimpl.UnknownFields - - Dtid string `protobuf:"bytes,1,opt,name=dtid,proto3" json:"dtid,omitempty"` - State TransactionState `protobuf:"varint,2,opt,name=state,proto3,enum=query.TransactionState" json:"state,omitempty"` - TimeCreated int64 `protobuf:"varint,3,opt,name=time_created,json=timeCreated,proto3" json:"time_created,omitempty"` - Participants []*Target `protobuf:"bytes,4,rep,name=participants,proto3" json:"participants,omitempty"` + sizeCache protoimpl.SizeCache } func (x *TransactionMetadata) Reset() { @@ -5575,13 +5522,12 @@ func (x *TransactionMetadata) GetParticipants() []*Target { // GetSchemaRequest is the payload to GetSchema type GetSchemaRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Target *Target `protobuf:"bytes,1,opt,name=target,proto3" json:"target,omitempty"` + TableType SchemaTableType `protobuf:"varint,2,opt,name=table_type,json=tableType,proto3,enum=query.SchemaTableType" json:"table_type,omitempty"` + TableNames []string `protobuf:"bytes,3,rep,name=table_names,json=tableNames,proto3" json:"table_names,omitempty"` unknownFields protoimpl.UnknownFields - - Target *Target `protobuf:"bytes,1,opt,name=target,proto3" json:"target,omitempty"` - TableType SchemaTableType `protobuf:"varint,2,opt,name=table_type,json=tableType,proto3,enum=query.SchemaTableType" json:"table_type,omitempty"` - TableNames []string `protobuf:"bytes,3,rep,name=table_names,json=tableNames,proto3" json:"table_names,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetSchemaRequest) Reset() { @@ -5637,13 +5583,12 @@ func (x *GetSchemaRequest) GetTableNames() []string { // UDFInfo represents the information about a UDF. type UDFInfo struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Aggregating bool `protobuf:"varint,2,opt,name=aggregating,proto3" json:"aggregating,omitempty"` + ReturnType Type `protobuf:"varint,3,opt,name=return_type,json=returnType,proto3,enum=query.Type" json:"return_type,omitempty"` unknownFields protoimpl.UnknownFields - - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - Aggregating bool `protobuf:"varint,2,opt,name=aggregating,proto3" json:"aggregating,omitempty"` - ReturnType Type `protobuf:"varint,3,opt,name=return_type,json=returnType,proto3,enum=query.Type" json:"return_type,omitempty"` + sizeCache protoimpl.SizeCache } func (x *UDFInfo) Reset() { @@ -5699,13 +5644,12 @@ func (x *UDFInfo) GetReturnType() Type { // GetSchemaResponse is the returned value from GetSchema type GetSchemaResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Udfs []*UDFInfo `protobuf:"bytes,1,rep,name=udfs,proto3" json:"udfs,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Udfs []*UDFInfo `protobuf:"bytes,1,rep,name=udfs,proto3" json:"udfs,omitempty"` // this is for the schema definition for the requested tables and views. - TableDefinition map[string]string `protobuf:"bytes,2,rep,name=table_definition,json=tableDefinition,proto3" json:"table_definition,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + TableDefinition map[string]string `protobuf:"bytes,2,rep,name=table_definition,json=tableDefinition,proto3" json:"table_definition,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GetSchemaResponse) Reset() { @@ -5754,10 +5698,7 @@ func (x *GetSchemaResponse) GetTableDefinition() map[string]string { // One individual Statement in a transaction. type StreamEvent_Statement struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Category StreamEvent_Statement_Category `protobuf:"varint,1,opt,name=category,proto3,enum=query.StreamEvent_Statement_Category" json:"category,omitempty"` // table_name, primary_key_fields and primary_key_values are set for DML. TableName string `protobuf:"bytes,2,opt,name=table_name,json=tableName,proto3" json:"table_name,omitempty"` @@ -5765,7 +5706,9 @@ type StreamEvent_Statement struct { PrimaryKeyValues []*Row `protobuf:"bytes,4,rep,name=primary_key_values,json=primaryKeyValues,proto3" json:"primary_key_values,omitempty"` // sql is set for all queries. // FIXME(alainjobart) we may not need it for DMLs. - Sql []byte `protobuf:"bytes,5,opt,name=sql,proto3" json:"sql,omitempty"` + Sql []byte `protobuf:"bytes,5,opt,name=sql,proto3" json:"sql,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *StreamEvent_Statement) Reset() { @@ -5835,7 +5778,7 @@ func (x *StreamEvent_Statement) GetSql() []byte { var File_query_proto protoreflect.FileDescriptor -var file_query_proto_rawDesc = []byte{ +var file_query_proto_rawDesc = string([]byte{ 0x0a, 0x0b, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x1a, 0x0e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x0b, 0x76, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, @@ -6804,16 +6747,16 @@ var file_query_proto_rawDesc = []byte{ 0x73, 0x73, 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x69, 0x74, 0x65, 0x73, 0x73, 0x2f, 0x67, 0x6f, 0x2f, 0x76, 0x74, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} +}) var ( file_query_proto_rawDescOnce sync.Once - file_query_proto_rawDescData = file_query_proto_rawDesc + file_query_proto_rawDescData []byte ) func file_query_proto_rawDescGZIP() []byte { file_query_proto_rawDescOnce.Do(func() { - file_query_proto_rawDescData = protoimpl.X.CompressGZIP(file_query_proto_rawDescData) + file_query_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_query_proto_rawDesc), len(file_query_proto_rawDesc))) }) return file_query_proto_rawDescData } @@ -7075,7 +7018,7 @@ func file_query_proto_init() { out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_query_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_query_proto_rawDesc), len(file_query_proto_rawDesc)), NumEnums: 13, NumMessages: 70, NumExtensions: 0, @@ -7087,7 +7030,6 @@ func file_query_proto_init() { MessageInfos: file_query_proto_msgTypes, }.Build() File_query_proto = out.File - file_query_proto_rawDesc = nil file_query_proto_goTypes = nil file_query_proto_depIdxs = nil } diff --git a/go/vt/proto/query/query_vtproto.pb.go b/go/vt/proto/query/query_vtproto.pb.go index 21ab8776fc5..91ac1050d2d 100644 --- a/go/vt/proto/query/query_vtproto.pb.go +++ b/go/vt/proto/query/query_vtproto.pb.go @@ -1,5 +1,5 @@ // Code generated by protoc-gen-go-vtproto. DO NOT EDIT. -// protoc-gen-go-vtproto version: v0.6.1-0.20241011083415-71c992bc3c87 +// protoc-gen-go-vtproto version: v0.6.1-0.20241121165744-79df5c4772f2 // source: query.proto package query diff --git a/go/vt/proto/queryservice/queryservice.pb.go b/go/vt/proto/queryservice/queryservice.pb.go index b44c6becd5d..30695928d1f 100644 --- a/go/vt/proto/queryservice/queryservice.pb.go +++ b/go/vt/proto/queryservice/queryservice.pb.go @@ -17,7 +17,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.35.1 +// protoc-gen-go v1.36.4 // protoc v3.21.3 // source: queryservice.proto @@ -27,6 +27,7 @@ import ( protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" reflect "reflect" + unsafe "unsafe" binlogdata "vitess.io/vitess/go/vt/proto/binlogdata" query "vitess.io/vitess/go/vt/proto/query" ) @@ -40,7 +41,7 @@ const ( var File_queryservice_proto protoreflect.FileDescriptor -var file_queryservice_proto_rawDesc = []byte{ +var file_queryservice_proto_rawDesc = string([]byte{ 0x0a, 0x12, 0x71, 0x75, 0x65, 0x72, 0x79, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0c, 0x71, 0x75, 0x65, 0x72, 0x79, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x1a, 0x0b, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, @@ -194,7 +195,7 @@ var file_queryservice_proto_rawDesc = []byte{ 0x65, 0x73, 0x73, 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x69, 0x74, 0x65, 0x73, 0x73, 0x2f, 0x67, 0x6f, 0x2f, 0x76, 0x74, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} +}) var file_queryservice_proto_goTypes = []any{ (*query.ExecuteRequest)(nil), // 0: query.ExecuteRequest @@ -331,7 +332,7 @@ func file_queryservice_proto_init() { out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_queryservice_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_queryservice_proto_rawDesc), len(file_queryservice_proto_rawDesc)), NumEnums: 0, NumMessages: 0, NumExtensions: 0, @@ -341,7 +342,6 @@ func file_queryservice_proto_init() { DependencyIndexes: file_queryservice_proto_depIdxs, }.Build() File_queryservice_proto = out.File - file_queryservice_proto_rawDesc = nil file_queryservice_proto_goTypes = nil file_queryservice_proto_depIdxs = nil } diff --git a/go/vt/proto/replicationdata/replicationdata.pb.go b/go/vt/proto/replicationdata/replicationdata.pb.go index d5462e1ea2b..d99881e2cad 100644 --- a/go/vt/proto/replicationdata/replicationdata.pb.go +++ b/go/vt/proto/replicationdata/replicationdata.pb.go @@ -17,7 +17,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.35.1 +// protoc-gen-go v1.36.4 // protoc v3.21.3 // source: replicationdata.proto @@ -28,6 +28,7 @@ import ( protoimpl "google.golang.org/protobuf/runtime/protoimpl" reflect "reflect" sync "sync" + unsafe "unsafe" ) const ( @@ -87,15 +88,12 @@ func (StopReplicationMode) EnumDescriptor() ([]byte, []int) { // Status is the replication status for MySQL/MariaDB/File-based. Returned by a // flavor-specific command and parsed into a Position and fields. type Status struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Position string `protobuf:"bytes,1,opt,name=position,proto3" json:"position,omitempty"` - ReplicationLagSeconds uint32 `protobuf:"varint,4,opt,name=replication_lag_seconds,json=replicationLagSeconds,proto3" json:"replication_lag_seconds,omitempty"` - SourceHost string `protobuf:"bytes,5,opt,name=source_host,json=sourceHost,proto3" json:"source_host,omitempty"` - SourcePort int32 `protobuf:"varint,6,opt,name=source_port,json=sourcePort,proto3" json:"source_port,omitempty"` - ConnectRetry int32 `protobuf:"varint,7,opt,name=connect_retry,json=connectRetry,proto3" json:"connect_retry,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Position string `protobuf:"bytes,1,opt,name=position,proto3" json:"position,omitempty"` + ReplicationLagSeconds uint32 `protobuf:"varint,4,opt,name=replication_lag_seconds,json=replicationLagSeconds,proto3" json:"replication_lag_seconds,omitempty"` + SourceHost string `protobuf:"bytes,5,opt,name=source_host,json=sourceHost,proto3" json:"source_host,omitempty"` + SourcePort int32 `protobuf:"varint,6,opt,name=source_port,json=sourcePort,proto3" json:"source_port,omitempty"` + ConnectRetry int32 `protobuf:"varint,7,opt,name=connect_retry,json=connectRetry,proto3" json:"connect_retry,omitempty"` // RelayLogPosition will be empty for flavors that do not support returning the full GTIDSet from the relay log, such as MariaDB. RelayLogPosition string `protobuf:"bytes,8,opt,name=relay_log_position,json=relayLogPosition,proto3" json:"relay_log_position,omitempty"` FilePosition string `protobuf:"bytes,9,opt,name=file_position,json=filePosition,proto3" json:"file_position,omitempty"` @@ -115,6 +113,8 @@ type Status struct { SslAllowed bool `protobuf:"varint,23,opt,name=ssl_allowed,json=sslAllowed,proto3" json:"ssl_allowed,omitempty"` ReplicationLagUnknown bool `protobuf:"varint,24,opt,name=replication_lag_unknown,json=replicationLagUnknown,proto3" json:"replication_lag_unknown,omitempty"` BackupRunning bool `protobuf:"varint,25,opt,name=backup_running,json=backupRunning,proto3" json:"backup_running,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Status) Reset() { @@ -310,14 +310,13 @@ func (x *Status) GetBackupRunning() bool { // Configuration holds replication configuration information gathered from performance_schema and global variables. type Configuration struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // HeartbeatInterval controls the heartbeat interval that the primary sends to the replica HeartbeatInterval float64 `protobuf:"fixed64,1,opt,name=heartbeat_interval,json=heartbeatInterval,proto3" json:"heartbeat_interval,omitempty"` // ReplicaNetTimeout specifies the number of seconds to wait for more data or a heartbeat signal from the source before the replica considers the connection broken ReplicaNetTimeout int32 `protobuf:"varint,2,opt,name=replica_net_timeout,json=replicaNetTimeout,proto3" json:"replica_net_timeout,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Configuration) Reset() { @@ -367,12 +366,11 @@ func (x *Configuration) GetReplicaNetTimeout() int32 { // StopReplicationStatus represents the replication status before calling StopReplication, and the replication status collected immediately after // calling StopReplication. type StopReplicationStatus struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Before *Status `protobuf:"bytes,1,opt,name=before,proto3" json:"before,omitempty"` + After *Status `protobuf:"bytes,2,opt,name=after,proto3" json:"after,omitempty"` unknownFields protoimpl.UnknownFields - - Before *Status `protobuf:"bytes,1,opt,name=before,proto3" json:"before,omitempty"` - After *Status `protobuf:"bytes,2,opt,name=after,proto3" json:"after,omitempty"` + sizeCache protoimpl.SizeCache } func (x *StopReplicationStatus) Reset() { @@ -421,13 +419,12 @@ func (x *StopReplicationStatus) GetAfter() *Status { // PrimaryStatus is the replication status for a MySQL primary (returned by 'show binary log status'). type PrimaryStatus struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Position string `protobuf:"bytes,1,opt,name=position,proto3" json:"position,omitempty"` + FilePosition string `protobuf:"bytes,2,opt,name=file_position,json=filePosition,proto3" json:"file_position,omitempty"` + ServerUuid string `protobuf:"bytes,3,opt,name=server_uuid,json=serverUuid,proto3" json:"server_uuid,omitempty"` unknownFields protoimpl.UnknownFields - - Position string `protobuf:"bytes,1,opt,name=position,proto3" json:"position,omitempty"` - FilePosition string `protobuf:"bytes,2,opt,name=file_position,json=filePosition,proto3" json:"file_position,omitempty"` - ServerUuid string `protobuf:"bytes,3,opt,name=server_uuid,json=serverUuid,proto3" json:"server_uuid,omitempty"` + sizeCache protoimpl.SizeCache } func (x *PrimaryStatus) Reset() { @@ -483,32 +480,32 @@ func (x *PrimaryStatus) GetServerUuid() string { // FullStatus contains the full status of MySQL including the replication information, semi-sync information, GTID information among others type FullStatus struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - ServerId uint32 `protobuf:"varint,1,opt,name=server_id,json=serverId,proto3" json:"server_id,omitempty"` - ServerUuid string `protobuf:"bytes,2,opt,name=server_uuid,json=serverUuid,proto3" json:"server_uuid,omitempty"` - ReplicationStatus *Status `protobuf:"bytes,3,opt,name=replication_status,json=replicationStatus,proto3" json:"replication_status,omitempty"` - PrimaryStatus *PrimaryStatus `protobuf:"bytes,4,opt,name=primary_status,json=primaryStatus,proto3" json:"primary_status,omitempty"` - GtidPurged string `protobuf:"bytes,5,opt,name=gtid_purged,json=gtidPurged,proto3" json:"gtid_purged,omitempty"` - Version string `protobuf:"bytes,6,opt,name=version,proto3" json:"version,omitempty"` - VersionComment string `protobuf:"bytes,7,opt,name=version_comment,json=versionComment,proto3" json:"version_comment,omitempty"` - ReadOnly bool `protobuf:"varint,8,opt,name=read_only,json=readOnly,proto3" json:"read_only,omitempty"` - GtidMode string `protobuf:"bytes,9,opt,name=gtid_mode,json=gtidMode,proto3" json:"gtid_mode,omitempty"` - BinlogFormat string `protobuf:"bytes,10,opt,name=binlog_format,json=binlogFormat,proto3" json:"binlog_format,omitempty"` - BinlogRowImage string `protobuf:"bytes,11,opt,name=binlog_row_image,json=binlogRowImage,proto3" json:"binlog_row_image,omitempty"` - LogBinEnabled bool `protobuf:"varint,12,opt,name=log_bin_enabled,json=logBinEnabled,proto3" json:"log_bin_enabled,omitempty"` - LogReplicaUpdates bool `protobuf:"varint,13,opt,name=log_replica_updates,json=logReplicaUpdates,proto3" json:"log_replica_updates,omitempty"` - SemiSyncPrimaryEnabled bool `protobuf:"varint,14,opt,name=semi_sync_primary_enabled,json=semiSyncPrimaryEnabled,proto3" json:"semi_sync_primary_enabled,omitempty"` - SemiSyncReplicaEnabled bool `protobuf:"varint,15,opt,name=semi_sync_replica_enabled,json=semiSyncReplicaEnabled,proto3" json:"semi_sync_replica_enabled,omitempty"` - SemiSyncPrimaryStatus bool `protobuf:"varint,16,opt,name=semi_sync_primary_status,json=semiSyncPrimaryStatus,proto3" json:"semi_sync_primary_status,omitempty"` - SemiSyncReplicaStatus bool `protobuf:"varint,17,opt,name=semi_sync_replica_status,json=semiSyncReplicaStatus,proto3" json:"semi_sync_replica_status,omitempty"` - SemiSyncPrimaryClients uint32 `protobuf:"varint,18,opt,name=semi_sync_primary_clients,json=semiSyncPrimaryClients,proto3" json:"semi_sync_primary_clients,omitempty"` - SemiSyncPrimaryTimeout uint64 `protobuf:"varint,19,opt,name=semi_sync_primary_timeout,json=semiSyncPrimaryTimeout,proto3" json:"semi_sync_primary_timeout,omitempty"` - SemiSyncWaitForReplicaCount uint32 `protobuf:"varint,20,opt,name=semi_sync_wait_for_replica_count,json=semiSyncWaitForReplicaCount,proto3" json:"semi_sync_wait_for_replica_count,omitempty"` - SuperReadOnly bool `protobuf:"varint,21,opt,name=super_read_only,json=superReadOnly,proto3" json:"super_read_only,omitempty"` - ReplicationConfiguration *Configuration `protobuf:"bytes,22,opt,name=replication_configuration,json=replicationConfiguration,proto3" json:"replication_configuration,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + ServerId uint32 `protobuf:"varint,1,opt,name=server_id,json=serverId,proto3" json:"server_id,omitempty"` + ServerUuid string `protobuf:"bytes,2,opt,name=server_uuid,json=serverUuid,proto3" json:"server_uuid,omitempty"` + ReplicationStatus *Status `protobuf:"bytes,3,opt,name=replication_status,json=replicationStatus,proto3" json:"replication_status,omitempty"` + PrimaryStatus *PrimaryStatus `protobuf:"bytes,4,opt,name=primary_status,json=primaryStatus,proto3" json:"primary_status,omitempty"` + GtidPurged string `protobuf:"bytes,5,opt,name=gtid_purged,json=gtidPurged,proto3" json:"gtid_purged,omitempty"` + Version string `protobuf:"bytes,6,opt,name=version,proto3" json:"version,omitempty"` + VersionComment string `protobuf:"bytes,7,opt,name=version_comment,json=versionComment,proto3" json:"version_comment,omitempty"` + ReadOnly bool `protobuf:"varint,8,opt,name=read_only,json=readOnly,proto3" json:"read_only,omitempty"` + GtidMode string `protobuf:"bytes,9,opt,name=gtid_mode,json=gtidMode,proto3" json:"gtid_mode,omitempty"` + BinlogFormat string `protobuf:"bytes,10,opt,name=binlog_format,json=binlogFormat,proto3" json:"binlog_format,omitempty"` + BinlogRowImage string `protobuf:"bytes,11,opt,name=binlog_row_image,json=binlogRowImage,proto3" json:"binlog_row_image,omitempty"` + LogBinEnabled bool `protobuf:"varint,12,opt,name=log_bin_enabled,json=logBinEnabled,proto3" json:"log_bin_enabled,omitempty"` + LogReplicaUpdates bool `protobuf:"varint,13,opt,name=log_replica_updates,json=logReplicaUpdates,proto3" json:"log_replica_updates,omitempty"` + SemiSyncPrimaryEnabled bool `protobuf:"varint,14,opt,name=semi_sync_primary_enabled,json=semiSyncPrimaryEnabled,proto3" json:"semi_sync_primary_enabled,omitempty"` + SemiSyncReplicaEnabled bool `protobuf:"varint,15,opt,name=semi_sync_replica_enabled,json=semiSyncReplicaEnabled,proto3" json:"semi_sync_replica_enabled,omitempty"` + SemiSyncPrimaryStatus bool `protobuf:"varint,16,opt,name=semi_sync_primary_status,json=semiSyncPrimaryStatus,proto3" json:"semi_sync_primary_status,omitempty"` + SemiSyncReplicaStatus bool `protobuf:"varint,17,opt,name=semi_sync_replica_status,json=semiSyncReplicaStatus,proto3" json:"semi_sync_replica_status,omitempty"` + SemiSyncPrimaryClients uint32 `protobuf:"varint,18,opt,name=semi_sync_primary_clients,json=semiSyncPrimaryClients,proto3" json:"semi_sync_primary_clients,omitempty"` + SemiSyncPrimaryTimeout uint64 `protobuf:"varint,19,opt,name=semi_sync_primary_timeout,json=semiSyncPrimaryTimeout,proto3" json:"semi_sync_primary_timeout,omitempty"` + SemiSyncWaitForReplicaCount uint32 `protobuf:"varint,20,opt,name=semi_sync_wait_for_replica_count,json=semiSyncWaitForReplicaCount,proto3" json:"semi_sync_wait_for_replica_count,omitempty"` + SuperReadOnly bool `protobuf:"varint,21,opt,name=super_read_only,json=superReadOnly,proto3" json:"super_read_only,omitempty"` + ReplicationConfiguration *Configuration `protobuf:"bytes,22,opt,name=replication_configuration,json=replicationConfiguration,proto3" json:"replication_configuration,omitempty"` + DiskStalled bool `protobuf:"varint,23,opt,name=disk_stalled,json=diskStalled,proto3" json:"disk_stalled,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *FullStatus) Reset() { @@ -695,9 +692,16 @@ func (x *FullStatus) GetReplicationConfiguration() *Configuration { return nil } +func (x *FullStatus) GetDiskStalled() bool { + if x != nil { + return x.DiskStalled + } + return false +} + var File_replicationdata_proto protoreflect.FileDescriptor -var file_replicationdata_proto_rawDesc = []byte{ +var file_replicationdata_proto_rawDesc = string([]byte{ 0x0a, 0x15, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0f, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x64, 0x61, 0x74, 0x61, 0x22, 0xbd, 0x07, 0x0a, 0x06, 0x53, 0x74, 0x61, @@ -782,7 +786,7 @@ var file_replicationdata_proto_rawDesc = []byte{ 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x66, 0x69, 0x6c, 0x65, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x75, 0x75, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x55, 0x75, 0x69, 0x64, 0x22, 0xc8, 0x08, 0x0a, 0x0a, 0x46, 0x75, 0x6c, 0x6c, 0x53, 0x74, 0x61, + 0x55, 0x75, 0x69, 0x64, 0x22, 0xeb, 0x08, 0x0a, 0x0a, 0x46, 0x75, 0x6c, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x75, 0x75, 0x69, 0x64, 0x18, @@ -850,25 +854,27 @@ var file_replicationdata_proto_rawDesc = []byte{ 0x16, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x18, 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2a, - 0x3b, 0x0a, 0x13, 0x53, 0x74, 0x6f, 0x70, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x12, 0x0a, 0x0e, 0x49, 0x4f, 0x41, 0x4e, 0x44, 0x53, - 0x51, 0x4c, 0x54, 0x48, 0x52, 0x45, 0x41, 0x44, 0x10, 0x00, 0x12, 0x10, 0x0a, 0x0c, 0x49, 0x4f, - 0x54, 0x48, 0x52, 0x45, 0x41, 0x44, 0x4f, 0x4e, 0x4c, 0x59, 0x10, 0x01, 0x42, 0x2e, 0x5a, 0x2c, - 0x76, 0x69, 0x74, 0x65, 0x73, 0x73, 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x69, 0x74, 0x65, 0x73, 0x73, - 0x2f, 0x67, 0x6f, 0x2f, 0x76, 0x74, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x72, 0x65, 0x70, - 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x64, 0x61, 0x74, 0x61, 0x62, 0x06, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x33, -} + 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x21, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x6b, 0x5f, 0x73, 0x74, 0x61, 0x6c, 0x6c, 0x65, 0x64, 0x18, + 0x17, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x64, 0x69, 0x73, 0x6b, 0x53, 0x74, 0x61, 0x6c, 0x6c, + 0x65, 0x64, 0x2a, 0x3b, 0x0a, 0x13, 0x53, 0x74, 0x6f, 0x70, 0x52, 0x65, 0x70, 0x6c, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x12, 0x0a, 0x0e, 0x49, 0x4f, 0x41, + 0x4e, 0x44, 0x53, 0x51, 0x4c, 0x54, 0x48, 0x52, 0x45, 0x41, 0x44, 0x10, 0x00, 0x12, 0x10, 0x0a, + 0x0c, 0x49, 0x4f, 0x54, 0x48, 0x52, 0x45, 0x41, 0x44, 0x4f, 0x4e, 0x4c, 0x59, 0x10, 0x01, 0x42, + 0x2e, 0x5a, 0x2c, 0x76, 0x69, 0x74, 0x65, 0x73, 0x73, 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x69, 0x74, + 0x65, 0x73, 0x73, 0x2f, 0x67, 0x6f, 0x2f, 0x76, 0x74, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, + 0x72, 0x65, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x64, 0x61, 0x74, 0x61, 0x62, + 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +}) var ( file_replicationdata_proto_rawDescOnce sync.Once - file_replicationdata_proto_rawDescData = file_replicationdata_proto_rawDesc + file_replicationdata_proto_rawDescData []byte ) func file_replicationdata_proto_rawDescGZIP() []byte { file_replicationdata_proto_rawDescOnce.Do(func() { - file_replicationdata_proto_rawDescData = protoimpl.X.CompressGZIP(file_replicationdata_proto_rawDescData) + file_replicationdata_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_replicationdata_proto_rawDesc), len(file_replicationdata_proto_rawDesc))) }) return file_replicationdata_proto_rawDescData } @@ -905,7 +911,7 @@ func file_replicationdata_proto_init() { out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_replicationdata_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_replicationdata_proto_rawDesc), len(file_replicationdata_proto_rawDesc)), NumEnums: 1, NumMessages: 5, NumExtensions: 0, @@ -917,7 +923,6 @@ func file_replicationdata_proto_init() { MessageInfos: file_replicationdata_proto_msgTypes, }.Build() File_replicationdata_proto = out.File - file_replicationdata_proto_rawDesc = nil file_replicationdata_proto_goTypes = nil file_replicationdata_proto_depIdxs = nil } diff --git a/go/vt/proto/replicationdata/replicationdata_vtproto.pb.go b/go/vt/proto/replicationdata/replicationdata_vtproto.pb.go index b3d638a1327..92f8e3074c3 100644 --- a/go/vt/proto/replicationdata/replicationdata_vtproto.pb.go +++ b/go/vt/proto/replicationdata/replicationdata_vtproto.pb.go @@ -1,5 +1,5 @@ // Code generated by protoc-gen-go-vtproto. DO NOT EDIT. -// protoc-gen-go-vtproto version: v0.6.1-0.20241011083415-71c992bc3c87 +// protoc-gen-go-vtproto version: v0.6.1-0.20241121165744-79df5c4772f2 // source: replicationdata.proto package replicationdata @@ -142,6 +142,7 @@ func (m *FullStatus) CloneVT() *FullStatus { r.SemiSyncWaitForReplicaCount = m.SemiSyncWaitForReplicaCount r.SuperReadOnly = m.SuperReadOnly r.ReplicationConfiguration = m.ReplicationConfiguration.CloneVT() + r.DiskStalled = m.DiskStalled if len(m.unknownFields) > 0 { r.unknownFields = make([]byte, len(m.unknownFields)) copy(r.unknownFields, m.unknownFields) @@ -552,6 +553,18 @@ func (m *FullStatus) MarshalToSizedBufferVT(dAtA []byte) (int, error) { i -= len(m.unknownFields) copy(dAtA[i:], m.unknownFields) } + if m.DiskStalled { + i-- + if m.DiskStalled { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x1 + i-- + dAtA[i] = 0xb8 + } if m.ReplicationConfiguration != nil { size, err := m.ReplicationConfiguration.MarshalToSizedBufferVT(dAtA[:i]) if err != nil { @@ -975,6 +988,9 @@ func (m *FullStatus) SizeVT() (n int) { l = m.ReplicationConfiguration.SizeVT() n += 2 + l + protohelpers.SizeOfVarint(uint64(l)) } + if m.DiskStalled { + n += 3 + } n += len(m.unknownFields) return n } @@ -2551,6 +2567,26 @@ func (m *FullStatus) UnmarshalVT(dAtA []byte) error { return err } iNdEx = postIndex + case 23: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field DiskStalled", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protohelpers.ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.DiskStalled = bool(v != 0) default: iNdEx = preIndex skippy, err := protohelpers.Skip(dAtA[iNdEx:]) diff --git a/go/vt/proto/tableacl/tableacl.pb.go b/go/vt/proto/tableacl/tableacl.pb.go index 44281419028..ccdf60777bc 100644 --- a/go/vt/proto/tableacl/tableacl.pb.go +++ b/go/vt/proto/tableacl/tableacl.pb.go @@ -17,7 +17,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.35.1 +// protoc-gen-go v1.36.4 // protoc v3.21.3 // source: tableacl.proto @@ -28,6 +28,7 @@ import ( protoimpl "google.golang.org/protobuf/runtime/protoimpl" reflect "reflect" sync "sync" + unsafe "unsafe" ) const ( @@ -39,16 +40,15 @@ const ( // TableGroupSpec defines ACLs for a group of tables. type TableGroupSpec struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` // either tables or a table name prefixes (if it ends in a %) TableNamesOrPrefixes []string `protobuf:"bytes,2,rep,name=table_names_or_prefixes,json=tableNamesOrPrefixes,proto3" json:"table_names_or_prefixes,omitempty"` Readers []string `protobuf:"bytes,3,rep,name=readers,proto3" json:"readers,omitempty"` Writers []string `protobuf:"bytes,4,rep,name=writers,proto3" json:"writers,omitempty"` Admins []string `protobuf:"bytes,5,rep,name=admins,proto3" json:"admins,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *TableGroupSpec) Reset() { @@ -117,11 +117,10 @@ func (x *TableGroupSpec) GetAdmins() []string { } type Config struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + TableGroups []*TableGroupSpec `protobuf:"bytes,1,rep,name=table_groups,json=tableGroups,proto3" json:"table_groups,omitempty"` unknownFields protoimpl.UnknownFields - - TableGroups []*TableGroupSpec `protobuf:"bytes,1,rep,name=table_groups,json=tableGroups,proto3" json:"table_groups,omitempty"` + sizeCache protoimpl.SizeCache } func (x *Config) Reset() { @@ -163,7 +162,7 @@ func (x *Config) GetTableGroups() []*TableGroupSpec { var File_tableacl_proto protoreflect.FileDescriptor -var file_tableacl_proto_rawDesc = []byte{ +var file_tableacl_proto_rawDesc = string([]byte{ 0x0a, 0x0e, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x61, 0x63, 0x6c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x08, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x61, 0x63, 0x6c, 0x22, 0xa7, 0x01, 0x0a, 0x0e, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x53, 0x70, 0x65, 0x63, 0x12, 0x12, 0x0a, @@ -184,16 +183,16 @@ var file_tableacl_proto_rawDesc = []byte{ 0x69, 0x74, 0x65, 0x73, 0x73, 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x69, 0x74, 0x65, 0x73, 0x73, 0x2f, 0x67, 0x6f, 0x2f, 0x76, 0x74, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x61, 0x63, 0x6c, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} +}) var ( file_tableacl_proto_rawDescOnce sync.Once - file_tableacl_proto_rawDescData = file_tableacl_proto_rawDesc + file_tableacl_proto_rawDescData []byte ) func file_tableacl_proto_rawDescGZIP() []byte { file_tableacl_proto_rawDescOnce.Do(func() { - file_tableacl_proto_rawDescData = protoimpl.X.CompressGZIP(file_tableacl_proto_rawDescData) + file_tableacl_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_tableacl_proto_rawDesc), len(file_tableacl_proto_rawDesc))) }) return file_tableacl_proto_rawDescData } @@ -221,7 +220,7 @@ func file_tableacl_proto_init() { out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_tableacl_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_tableacl_proto_rawDesc), len(file_tableacl_proto_rawDesc)), NumEnums: 0, NumMessages: 2, NumExtensions: 0, @@ -232,7 +231,6 @@ func file_tableacl_proto_init() { MessageInfos: file_tableacl_proto_msgTypes, }.Build() File_tableacl_proto = out.File - file_tableacl_proto_rawDesc = nil file_tableacl_proto_goTypes = nil file_tableacl_proto_depIdxs = nil } diff --git a/go/vt/proto/tableacl/tableacl_vtproto.pb.go b/go/vt/proto/tableacl/tableacl_vtproto.pb.go index 60c9294706f..2b16744f765 100644 --- a/go/vt/proto/tableacl/tableacl_vtproto.pb.go +++ b/go/vt/proto/tableacl/tableacl_vtproto.pb.go @@ -1,5 +1,5 @@ // Code generated by protoc-gen-go-vtproto. DO NOT EDIT. -// protoc-gen-go-vtproto version: v0.6.1-0.20241011083415-71c992bc3c87 +// protoc-gen-go-vtproto version: v0.6.1-0.20241121165744-79df5c4772f2 // source: tableacl.proto package tableacl diff --git a/go/vt/proto/tabletmanagerdata/tabletmanagerdata.pb.go b/go/vt/proto/tabletmanagerdata/tabletmanagerdata.pb.go index 1608272d9e5..93690d02140 100644 --- a/go/vt/proto/tabletmanagerdata/tabletmanagerdata.pb.go +++ b/go/vt/proto/tabletmanagerdata/tabletmanagerdata.pb.go @@ -18,7 +18,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.35.1 +// protoc-gen-go v1.36.4 // protoc v3.21.3 // source: tabletmanagerdata.proto @@ -29,6 +29,7 @@ import ( protoimpl "google.golang.org/protobuf/runtime/protoimpl" reflect "reflect" sync "sync" + unsafe "unsafe" binlogdata "vitess.io/vitess/go/vt/proto/binlogdata" logutil "vitess.io/vitess/go/vt/proto/logutil" mysqlctl "vitess.io/vitess/go/vt/proto/mysqlctl" @@ -156,10 +157,7 @@ func (CheckThrottlerResponseCode) EnumDescriptor() ([]byte, []int) { } type TableDefinition struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // the table name Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` // the SQL to run to create the table @@ -176,7 +174,9 @@ type TableDefinition struct { RowCount uint64 `protobuf:"varint,7,opt,name=row_count,json=rowCount,proto3" json:"row_count,omitempty"` // column names along with their types. // NOTE: this is a superset of columns. - Fields []*query.Field `protobuf:"bytes,8,rep,name=fields,proto3" json:"fields,omitempty"` + Fields []*query.Field `protobuf:"bytes,8,rep,name=fields,proto3" json:"fields,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *TableDefinition) Reset() { @@ -266,12 +266,11 @@ func (x *TableDefinition) GetFields() []*query.Field { } type SchemaDefinition struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - DatabaseSchema string `protobuf:"bytes,1,opt,name=database_schema,json=databaseSchema,proto3" json:"database_schema,omitempty"` - TableDefinitions []*TableDefinition `protobuf:"bytes,2,rep,name=table_definitions,json=tableDefinitions,proto3" json:"table_definitions,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + DatabaseSchema string `protobuf:"bytes,1,opt,name=database_schema,json=databaseSchema,proto3" json:"database_schema,omitempty"` + TableDefinitions []*TableDefinition `protobuf:"bytes,2,rep,name=table_definitions,json=tableDefinitions,proto3" json:"table_definitions,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *SchemaDefinition) Reset() { @@ -319,14 +318,13 @@ func (x *SchemaDefinition) GetTableDefinitions() []*TableDefinition { } type SchemaChangeResult struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // before_schema holds the schema before each change. BeforeSchema *SchemaDefinition `protobuf:"bytes,1,opt,name=before_schema,json=beforeSchema,proto3" json:"before_schema,omitempty"` // after_schema holds the schema after each change. - AfterSchema *SchemaDefinition `protobuf:"bytes,2,opt,name=after_schema,json=afterSchema,proto3" json:"after_schema,omitempty"` + AfterSchema *SchemaDefinition `protobuf:"bytes,2,opt,name=after_schema,json=afterSchema,proto3" json:"after_schema,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *SchemaChangeResult) Reset() { @@ -377,14 +375,13 @@ func (x *SchemaChangeResult) GetAfterSchema() *SchemaDefinition { // Primary key is Host+User // PasswordChecksum is the crc64 of the password, for security reasons type UserPermission struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Host string `protobuf:"bytes,1,opt,name=host,proto3" json:"host,omitempty"` - User string `protobuf:"bytes,2,opt,name=user,proto3" json:"user,omitempty"` - PasswordChecksum uint64 `protobuf:"varint,3,opt,name=password_checksum,json=passwordChecksum,proto3" json:"password_checksum,omitempty"` - Privileges map[string]string `protobuf:"bytes,4,rep,name=privileges,proto3" json:"privileges,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + state protoimpl.MessageState `protogen:"open.v1"` + Host string `protobuf:"bytes,1,opt,name=host,proto3" json:"host,omitempty"` + User string `protobuf:"bytes,2,opt,name=user,proto3" json:"user,omitempty"` + PasswordChecksum uint64 `protobuf:"varint,3,opt,name=password_checksum,json=passwordChecksum,proto3" json:"password_checksum,omitempty"` + Privileges map[string]string `protobuf:"bytes,4,rep,name=privileges,proto3" json:"privileges,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *UserPermission) Reset() { @@ -448,14 +445,13 @@ func (x *UserPermission) GetPrivileges() map[string]string { // DbPermission describes a single row in the mysql.db table // Primary key is Host+Db+User type DbPermission struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Host string `protobuf:"bytes,1,opt,name=host,proto3" json:"host,omitempty"` + Db string `protobuf:"bytes,2,opt,name=db,proto3" json:"db,omitempty"` + User string `protobuf:"bytes,3,opt,name=user,proto3" json:"user,omitempty"` + Privileges map[string]string `protobuf:"bytes,4,rep,name=privileges,proto3" json:"privileges,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` unknownFields protoimpl.UnknownFields - - Host string `protobuf:"bytes,1,opt,name=host,proto3" json:"host,omitempty"` - Db string `protobuf:"bytes,2,opt,name=db,proto3" json:"db,omitempty"` - User string `protobuf:"bytes,3,opt,name=user,proto3" json:"user,omitempty"` - Privileges map[string]string `protobuf:"bytes,4,rep,name=privileges,proto3" json:"privileges,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + sizeCache protoimpl.SizeCache } func (x *DbPermission) Reset() { @@ -519,12 +515,11 @@ func (x *DbPermission) GetPrivileges() map[string]string { // Permissions have all the rows in mysql.{user,db} tables, // (all rows are sorted by primary key) type Permissions struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - UserPermissions []*UserPermission `protobuf:"bytes,1,rep,name=user_permissions,json=userPermissions,proto3" json:"user_permissions,omitempty"` - DbPermissions []*DbPermission `protobuf:"bytes,2,rep,name=db_permissions,json=dbPermissions,proto3" json:"db_permissions,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + UserPermissions []*UserPermission `protobuf:"bytes,1,rep,name=user_permissions,json=userPermissions,proto3" json:"user_permissions,omitempty"` + DbPermissions []*DbPermission `protobuf:"bytes,2,rep,name=db_permissions,json=dbPermissions,proto3" json:"db_permissions,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Permissions) Reset() { @@ -572,11 +567,10 @@ func (x *Permissions) GetDbPermissions() []*DbPermission { } type PingRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Payload string `protobuf:"bytes,1,opt,name=payload,proto3" json:"payload,omitempty"` unknownFields protoimpl.UnknownFields - - Payload string `protobuf:"bytes,1,opt,name=payload,proto3" json:"payload,omitempty"` + sizeCache protoimpl.SizeCache } func (x *PingRequest) Reset() { @@ -617,11 +611,10 @@ func (x *PingRequest) GetPayload() string { } type PingResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Payload string `protobuf:"bytes,1,opt,name=payload,proto3" json:"payload,omitempty"` unknownFields protoimpl.UnknownFields - - Payload string `protobuf:"bytes,1,opt,name=payload,proto3" json:"payload,omitempty"` + sizeCache protoimpl.SizeCache } func (x *PingResponse) Reset() { @@ -662,12 +655,11 @@ func (x *PingResponse) GetPayload() string { } type SleepRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // duration is in nanoseconds - Duration int64 `protobuf:"varint,1,opt,name=duration,proto3" json:"duration,omitempty"` + Duration int64 `protobuf:"varint,1,opt,name=duration,proto3" json:"duration,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *SleepRequest) Reset() { @@ -708,9 +700,9 @@ func (x *SleepRequest) GetDuration() int64 { } type SleepResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *SleepResponse) Reset() { @@ -744,13 +736,12 @@ func (*SleepResponse) Descriptor() ([]byte, []int) { } type ExecuteHookRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Parameters []string `protobuf:"bytes,2,rep,name=parameters,proto3" json:"parameters,omitempty"` + ExtraEnv map[string]string `protobuf:"bytes,3,rep,name=extra_env,json=extraEnv,proto3" json:"extra_env,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` unknownFields protoimpl.UnknownFields - - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - Parameters []string `protobuf:"bytes,2,rep,name=parameters,proto3" json:"parameters,omitempty"` - ExtraEnv map[string]string `protobuf:"bytes,3,rep,name=extra_env,json=extraEnv,proto3" json:"extra_env,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + sizeCache protoimpl.SizeCache } func (x *ExecuteHookRequest) Reset() { @@ -805,13 +796,12 @@ func (x *ExecuteHookRequest) GetExtraEnv() map[string]string { } type ExecuteHookResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + ExitStatus int64 `protobuf:"varint,1,opt,name=exit_status,json=exitStatus,proto3" json:"exit_status,omitempty"` + Stdout string `protobuf:"bytes,2,opt,name=stdout,proto3" json:"stdout,omitempty"` + Stderr string `protobuf:"bytes,3,opt,name=stderr,proto3" json:"stderr,omitempty"` unknownFields protoimpl.UnknownFields - - ExitStatus int64 `protobuf:"varint,1,opt,name=exit_status,json=exitStatus,proto3" json:"exit_status,omitempty"` - Stdout string `protobuf:"bytes,2,opt,name=stdout,proto3" json:"stdout,omitempty"` - Stderr string `protobuf:"bytes,3,opt,name=stderr,proto3" json:"stderr,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ExecuteHookResponse) Reset() { @@ -866,16 +856,15 @@ func (x *ExecuteHookResponse) GetStderr() string { } type GetSchemaRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Tables []string `protobuf:"bytes,1,rep,name=tables,proto3" json:"tables,omitempty"` - IncludeViews bool `protobuf:"varint,2,opt,name=include_views,json=includeViews,proto3" json:"include_views,omitempty"` - ExcludeTables []string `protobuf:"bytes,3,rep,name=exclude_tables,json=excludeTables,proto3" json:"exclude_tables,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Tables []string `protobuf:"bytes,1,rep,name=tables,proto3" json:"tables,omitempty"` + IncludeViews bool `protobuf:"varint,2,opt,name=include_views,json=includeViews,proto3" json:"include_views,omitempty"` + ExcludeTables []string `protobuf:"bytes,3,rep,name=exclude_tables,json=excludeTables,proto3" json:"exclude_tables,omitempty"` // TableSchemaOnly specifies whether to limit the results to just table/view // schema definition (CREATE TABLE/VIEW statements) and skip column/field information TableSchemaOnly bool `protobuf:"varint,4,opt,name=table_schema_only,json=tableSchemaOnly,proto3" json:"table_schema_only,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GetSchemaRequest) Reset() { @@ -937,11 +926,10 @@ func (x *GetSchemaRequest) GetTableSchemaOnly() bool { } type GetSchemaResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - SchemaDefinition *SchemaDefinition `protobuf:"bytes,1,opt,name=schema_definition,json=schemaDefinition,proto3" json:"schema_definition,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + SchemaDefinition *SchemaDefinition `protobuf:"bytes,1,opt,name=schema_definition,json=schemaDefinition,proto3" json:"schema_definition,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GetSchemaResponse) Reset() { @@ -982,9 +970,9 @@ func (x *GetSchemaResponse) GetSchemaDefinition() *SchemaDefinition { } type GetPermissionsRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GetPermissionsRequest) Reset() { @@ -1018,11 +1006,10 @@ func (*GetPermissionsRequest) Descriptor() ([]byte, []int) { } type GetPermissionsResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Permissions *Permissions `protobuf:"bytes,1,opt,name=permissions,proto3" json:"permissions,omitempty"` unknownFields protoimpl.UnknownFields - - Permissions *Permissions `protobuf:"bytes,1,opt,name=permissions,proto3" json:"permissions,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetPermissionsResponse) Reset() { @@ -1063,11 +1050,10 @@ func (x *GetPermissionsResponse) GetPermissions() *Permissions { } type GetGlobalStatusVarsRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Variables []string `protobuf:"bytes,1,rep,name=variables,proto3" json:"variables,omitempty"` unknownFields protoimpl.UnknownFields - - Variables []string `protobuf:"bytes,1,rep,name=variables,proto3" json:"variables,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetGlobalStatusVarsRequest) Reset() { @@ -1108,11 +1094,10 @@ func (x *GetGlobalStatusVarsRequest) GetVariables() []string { } type GetGlobalStatusVarsResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + StatusValues map[string]string `protobuf:"bytes,1,rep,name=status_values,json=statusValues,proto3" json:"status_values,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` unknownFields protoimpl.UnknownFields - - StatusValues map[string]string `protobuf:"bytes,1,rep,name=status_values,json=statusValues,proto3" json:"status_values,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + sizeCache protoimpl.SizeCache } func (x *GetGlobalStatusVarsResponse) Reset() { @@ -1153,9 +1138,9 @@ func (x *GetGlobalStatusVarsResponse) GetStatusValues() map[string]string { } type SetReadOnlyRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *SetReadOnlyRequest) Reset() { @@ -1189,9 +1174,9 @@ func (*SetReadOnlyRequest) Descriptor() ([]byte, []int) { } type SetReadOnlyResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *SetReadOnlyResponse) Reset() { @@ -1225,9 +1210,9 @@ func (*SetReadOnlyResponse) Descriptor() ([]byte, []int) { } type SetReadWriteRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *SetReadWriteRequest) Reset() { @@ -1261,9 +1246,9 @@ func (*SetReadWriteRequest) Descriptor() ([]byte, []int) { } type SetReadWriteResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *SetReadWriteResponse) Reset() { @@ -1297,12 +1282,11 @@ func (*SetReadWriteResponse) Descriptor() ([]byte, []int) { } type ChangeTypeRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + TabletType topodata.TabletType `protobuf:"varint,1,opt,name=tablet_type,json=tabletType,proto3,enum=topodata.TabletType" json:"tablet_type,omitempty"` + SemiSync bool `protobuf:"varint,2,opt,name=semiSync,proto3" json:"semiSync,omitempty"` unknownFields protoimpl.UnknownFields - - TabletType topodata.TabletType `protobuf:"varint,1,opt,name=tablet_type,json=tabletType,proto3,enum=topodata.TabletType" json:"tablet_type,omitempty"` - SemiSync bool `protobuf:"varint,2,opt,name=semiSync,proto3" json:"semiSync,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ChangeTypeRequest) Reset() { @@ -1350,9 +1334,9 @@ func (x *ChangeTypeRequest) GetSemiSync() bool { } type ChangeTypeResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ChangeTypeResponse) Reset() { @@ -1386,9 +1370,9 @@ func (*ChangeTypeResponse) Descriptor() ([]byte, []int) { } type RefreshStateRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RefreshStateRequest) Reset() { @@ -1422,9 +1406,9 @@ func (*RefreshStateRequest) Descriptor() ([]byte, []int) { } type RefreshStateResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RefreshStateResponse) Reset() { @@ -1458,9 +1442,9 @@ func (*RefreshStateResponse) Descriptor() ([]byte, []int) { } type RunHealthCheckRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RunHealthCheckRequest) Reset() { @@ -1494,9 +1478,9 @@ func (*RunHealthCheckRequest) Descriptor() ([]byte, []int) { } type RunHealthCheckResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RunHealthCheckResponse) Reset() { @@ -1530,14 +1514,13 @@ func (*RunHealthCheckResponse) Descriptor() ([]byte, []int) { } type ReloadSchemaRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // wait_position allows scheduling a schema reload to occur after a // given DDL has replicated to this server, by specifying a replication // position to wait for. Leave empty to trigger the reload immediately. - WaitPosition string `protobuf:"bytes,1,opt,name=wait_position,json=waitPosition,proto3" json:"wait_position,omitempty"` + WaitPosition string `protobuf:"bytes,1,opt,name=wait_position,json=waitPosition,proto3" json:"wait_position,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ReloadSchemaRequest) Reset() { @@ -1578,9 +1561,9 @@ func (x *ReloadSchemaRequest) GetWaitPosition() string { } type ReloadSchemaResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ReloadSchemaResponse) Reset() { @@ -1614,11 +1597,10 @@ func (*ReloadSchemaResponse) Descriptor() ([]byte, []int) { } type PreflightSchemaRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Changes []string `protobuf:"bytes,1,rep,name=changes,proto3" json:"changes,omitempty"` unknownFields protoimpl.UnknownFields - - Changes []string `protobuf:"bytes,1,rep,name=changes,proto3" json:"changes,omitempty"` + sizeCache protoimpl.SizeCache } func (x *PreflightSchemaRequest) Reset() { @@ -1659,13 +1641,12 @@ func (x *PreflightSchemaRequest) GetChanges() []string { } type PreflightSchemaResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // change_results has for each change the schema before and after it. // The number of elements is identical to the length of "changes" in the request. ChangeResults []*SchemaChangeResult `protobuf:"bytes,1,rep,name=change_results,json=changeResults,proto3" json:"change_results,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *PreflightSchemaResponse) Reset() { @@ -1706,20 +1687,19 @@ func (x *PreflightSchemaResponse) GetChangeResults() []*SchemaChangeResult { } type ApplySchemaRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Sql string `protobuf:"bytes,1,opt,name=sql,proto3" json:"sql,omitempty"` - Force bool `protobuf:"varint,2,opt,name=force,proto3" json:"force,omitempty"` - AllowReplication bool `protobuf:"varint,3,opt,name=allow_replication,json=allowReplication,proto3" json:"allow_replication,omitempty"` - BeforeSchema *SchemaDefinition `protobuf:"bytes,4,opt,name=before_schema,json=beforeSchema,proto3" json:"before_schema,omitempty"` - AfterSchema *SchemaDefinition `protobuf:"bytes,5,opt,name=after_schema,json=afterSchema,proto3" json:"after_schema,omitempty"` - SqlMode string `protobuf:"bytes,6,opt,name=sql_mode,json=sqlMode,proto3" json:"sql_mode,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Sql string `protobuf:"bytes,1,opt,name=sql,proto3" json:"sql,omitempty"` + Force bool `protobuf:"varint,2,opt,name=force,proto3" json:"force,omitempty"` + AllowReplication bool `protobuf:"varint,3,opt,name=allow_replication,json=allowReplication,proto3" json:"allow_replication,omitempty"` + BeforeSchema *SchemaDefinition `protobuf:"bytes,4,opt,name=before_schema,json=beforeSchema,proto3" json:"before_schema,omitempty"` + AfterSchema *SchemaDefinition `protobuf:"bytes,5,opt,name=after_schema,json=afterSchema,proto3" json:"after_schema,omitempty"` + SqlMode string `protobuf:"bytes,6,opt,name=sql_mode,json=sqlMode,proto3" json:"sql_mode,omitempty"` // BatchSize indicates how many queries to apply together. BatchSize int64 `protobuf:"varint,7,opt,name=batch_size,json=batchSize,proto3" json:"batch_size,omitempty"` // DisableForeignKeyChecks will result in setting foreign_key_checks to off before applying the schema. DisableForeignKeyChecks bool `protobuf:"varint,8,opt,name=disable_foreign_key_checks,json=disableForeignKeyChecks,proto3" json:"disable_foreign_key_checks,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ApplySchemaRequest) Reset() { @@ -1809,12 +1789,11 @@ func (x *ApplySchemaRequest) GetDisableForeignKeyChecks() bool { } type ApplySchemaResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + BeforeSchema *SchemaDefinition `protobuf:"bytes,1,opt,name=before_schema,json=beforeSchema,proto3" json:"before_schema,omitempty"` + AfterSchema *SchemaDefinition `protobuf:"bytes,2,opt,name=after_schema,json=afterSchema,proto3" json:"after_schema,omitempty"` unknownFields protoimpl.UnknownFields - - BeforeSchema *SchemaDefinition `protobuf:"bytes,1,opt,name=before_schema,json=beforeSchema,proto3" json:"before_schema,omitempty"` - AfterSchema *SchemaDefinition `protobuf:"bytes,2,opt,name=after_schema,json=afterSchema,proto3" json:"after_schema,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ApplySchemaResponse) Reset() { @@ -1862,9 +1841,9 @@ func (x *ApplySchemaResponse) GetAfterSchema() *SchemaDefinition { } type LockTablesRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *LockTablesRequest) Reset() { @@ -1898,9 +1877,9 @@ func (*LockTablesRequest) Descriptor() ([]byte, []int) { } type LockTablesResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *LockTablesResponse) Reset() { @@ -1934,9 +1913,9 @@ func (*LockTablesResponse) Descriptor() ([]byte, []int) { } type UnlockTablesRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *UnlockTablesRequest) Reset() { @@ -1970,9 +1949,9 @@ func (*UnlockTablesRequest) Descriptor() ([]byte, []int) { } type UnlockTablesResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *UnlockTablesResponse) Reset() { @@ -2006,16 +1985,15 @@ func (*UnlockTablesResponse) Descriptor() ([]byte, []int) { } type ExecuteQueryRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Query []byte `protobuf:"bytes,1,opt,name=query,proto3" json:"query,omitempty"` - DbName string `protobuf:"bytes,2,opt,name=db_name,json=dbName,proto3" json:"db_name,omitempty"` - MaxRows uint64 `protobuf:"varint,3,opt,name=max_rows,json=maxRows,proto3" json:"max_rows,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Query []byte `protobuf:"bytes,1,opt,name=query,proto3" json:"query,omitempty"` + DbName string `protobuf:"bytes,2,opt,name=db_name,json=dbName,proto3" json:"db_name,omitempty"` + MaxRows uint64 `protobuf:"varint,3,opt,name=max_rows,json=maxRows,proto3" json:"max_rows,omitempty"` // caller_id identifies the caller. This is the effective caller ID, // set by the application to further identify the caller. - CallerId *vtrpc.CallerID `protobuf:"bytes,4,opt,name=caller_id,json=callerId,proto3" json:"caller_id,omitempty"` + CallerId *vtrpc.CallerID `protobuf:"bytes,4,opt,name=caller_id,json=callerId,proto3" json:"caller_id,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ExecuteQueryRequest) Reset() { @@ -2077,11 +2055,10 @@ func (x *ExecuteQueryRequest) GetCallerId() *vtrpc.CallerID { } type ExecuteQueryResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Result *query.QueryResult `protobuf:"bytes,1,opt,name=result,proto3" json:"result,omitempty"` unknownFields protoimpl.UnknownFields - - Result *query.QueryResult `protobuf:"bytes,1,opt,name=result,proto3" json:"result,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ExecuteQueryResponse) Reset() { @@ -2122,16 +2099,15 @@ func (x *ExecuteQueryResponse) GetResult() *query.QueryResult { } type ExecuteFetchAsDbaRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Query []byte `protobuf:"bytes,1,opt,name=query,proto3" json:"query,omitempty"` - DbName string `protobuf:"bytes,2,opt,name=db_name,json=dbName,proto3" json:"db_name,omitempty"` - MaxRows uint64 `protobuf:"varint,3,opt,name=max_rows,json=maxRows,proto3" json:"max_rows,omitempty"` - DisableBinlogs bool `protobuf:"varint,4,opt,name=disable_binlogs,json=disableBinlogs,proto3" json:"disable_binlogs,omitempty"` - ReloadSchema bool `protobuf:"varint,5,opt,name=reload_schema,json=reloadSchema,proto3" json:"reload_schema,omitempty"` - DisableForeignKeyChecks bool `protobuf:"varint,6,opt,name=disable_foreign_key_checks,json=disableForeignKeyChecks,proto3" json:"disable_foreign_key_checks,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Query []byte `protobuf:"bytes,1,opt,name=query,proto3" json:"query,omitempty"` + DbName string `protobuf:"bytes,2,opt,name=db_name,json=dbName,proto3" json:"db_name,omitempty"` + MaxRows uint64 `protobuf:"varint,3,opt,name=max_rows,json=maxRows,proto3" json:"max_rows,omitempty"` + DisableBinlogs bool `protobuf:"varint,4,opt,name=disable_binlogs,json=disableBinlogs,proto3" json:"disable_binlogs,omitempty"` + ReloadSchema bool `protobuf:"varint,5,opt,name=reload_schema,json=reloadSchema,proto3" json:"reload_schema,omitempty"` + DisableForeignKeyChecks bool `protobuf:"varint,6,opt,name=disable_foreign_key_checks,json=disableForeignKeyChecks,proto3" json:"disable_foreign_key_checks,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ExecuteFetchAsDbaRequest) Reset() { @@ -2207,11 +2183,10 @@ func (x *ExecuteFetchAsDbaRequest) GetDisableForeignKeyChecks() bool { } type ExecuteFetchAsDbaResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Result *query.QueryResult `protobuf:"bytes,1,opt,name=result,proto3" json:"result,omitempty"` unknownFields protoimpl.UnknownFields - - Result *query.QueryResult `protobuf:"bytes,1,opt,name=result,proto3" json:"result,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ExecuteFetchAsDbaResponse) Reset() { @@ -2252,16 +2227,15 @@ func (x *ExecuteFetchAsDbaResponse) GetResult() *query.QueryResult { } type ExecuteMultiFetchAsDbaRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Sql []byte `protobuf:"bytes,1,opt,name=sql,proto3" json:"sql,omitempty"` - DbName string `protobuf:"bytes,2,opt,name=db_name,json=dbName,proto3" json:"db_name,omitempty"` - MaxRows uint64 `protobuf:"varint,3,opt,name=max_rows,json=maxRows,proto3" json:"max_rows,omitempty"` - DisableBinlogs bool `protobuf:"varint,4,opt,name=disable_binlogs,json=disableBinlogs,proto3" json:"disable_binlogs,omitempty"` - ReloadSchema bool `protobuf:"varint,5,opt,name=reload_schema,json=reloadSchema,proto3" json:"reload_schema,omitempty"` - DisableForeignKeyChecks bool `protobuf:"varint,6,opt,name=disable_foreign_key_checks,json=disableForeignKeyChecks,proto3" json:"disable_foreign_key_checks,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Sql []byte `protobuf:"bytes,1,opt,name=sql,proto3" json:"sql,omitempty"` + DbName string `protobuf:"bytes,2,opt,name=db_name,json=dbName,proto3" json:"db_name,omitempty"` + MaxRows uint64 `protobuf:"varint,3,opt,name=max_rows,json=maxRows,proto3" json:"max_rows,omitempty"` + DisableBinlogs bool `protobuf:"varint,4,opt,name=disable_binlogs,json=disableBinlogs,proto3" json:"disable_binlogs,omitempty"` + ReloadSchema bool `protobuf:"varint,5,opt,name=reload_schema,json=reloadSchema,proto3" json:"reload_schema,omitempty"` + DisableForeignKeyChecks bool `protobuf:"varint,6,opt,name=disable_foreign_key_checks,json=disableForeignKeyChecks,proto3" json:"disable_foreign_key_checks,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ExecuteMultiFetchAsDbaRequest) Reset() { @@ -2337,11 +2311,10 @@ func (x *ExecuteMultiFetchAsDbaRequest) GetDisableForeignKeyChecks() bool { } type ExecuteMultiFetchAsDbaResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Results []*query.QueryResult `protobuf:"bytes,1,rep,name=results,proto3" json:"results,omitempty"` unknownFields protoimpl.UnknownFields - - Results []*query.QueryResult `protobuf:"bytes,1,rep,name=results,proto3" json:"results,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ExecuteMultiFetchAsDbaResponse) Reset() { @@ -2382,14 +2355,13 @@ func (x *ExecuteMultiFetchAsDbaResponse) GetResults() []*query.QueryResult { } type ExecuteFetchAsAllPrivsRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Query []byte `protobuf:"bytes,1,opt,name=query,proto3" json:"query,omitempty"` + DbName string `protobuf:"bytes,2,opt,name=db_name,json=dbName,proto3" json:"db_name,omitempty"` + MaxRows uint64 `protobuf:"varint,3,opt,name=max_rows,json=maxRows,proto3" json:"max_rows,omitempty"` + ReloadSchema bool `protobuf:"varint,4,opt,name=reload_schema,json=reloadSchema,proto3" json:"reload_schema,omitempty"` unknownFields protoimpl.UnknownFields - - Query []byte `protobuf:"bytes,1,opt,name=query,proto3" json:"query,omitempty"` - DbName string `protobuf:"bytes,2,opt,name=db_name,json=dbName,proto3" json:"db_name,omitempty"` - MaxRows uint64 `protobuf:"varint,3,opt,name=max_rows,json=maxRows,proto3" json:"max_rows,omitempty"` - ReloadSchema bool `protobuf:"varint,4,opt,name=reload_schema,json=reloadSchema,proto3" json:"reload_schema,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ExecuteFetchAsAllPrivsRequest) Reset() { @@ -2451,11 +2423,10 @@ func (x *ExecuteFetchAsAllPrivsRequest) GetReloadSchema() bool { } type ExecuteFetchAsAllPrivsResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Result *query.QueryResult `protobuf:"bytes,1,opt,name=result,proto3" json:"result,omitempty"` unknownFields protoimpl.UnknownFields - - Result *query.QueryResult `protobuf:"bytes,1,opt,name=result,proto3" json:"result,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ExecuteFetchAsAllPrivsResponse) Reset() { @@ -2496,12 +2467,11 @@ func (x *ExecuteFetchAsAllPrivsResponse) GetResult() *query.QueryResult { } type ExecuteFetchAsAppRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Query []byte `protobuf:"bytes,1,opt,name=query,proto3" json:"query,omitempty"` + MaxRows uint64 `protobuf:"varint,2,opt,name=max_rows,json=maxRows,proto3" json:"max_rows,omitempty"` unknownFields protoimpl.UnknownFields - - Query []byte `protobuf:"bytes,1,opt,name=query,proto3" json:"query,omitempty"` - MaxRows uint64 `protobuf:"varint,2,opt,name=max_rows,json=maxRows,proto3" json:"max_rows,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ExecuteFetchAsAppRequest) Reset() { @@ -2549,11 +2519,10 @@ func (x *ExecuteFetchAsAppRequest) GetMaxRows() uint64 { } type ExecuteFetchAsAppResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Result *query.QueryResult `protobuf:"bytes,1,opt,name=result,proto3" json:"result,omitempty"` unknownFields protoimpl.UnknownFields - - Result *query.QueryResult `protobuf:"bytes,1,opt,name=result,proto3" json:"result,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ExecuteFetchAsAppResponse) Reset() { @@ -2594,11 +2563,10 @@ func (x *ExecuteFetchAsAppResponse) GetResult() *query.QueryResult { } type GetUnresolvedTransactionsRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + AbandonAge int64 `protobuf:"varint,1,opt,name=abandon_age,json=abandonAge,proto3" json:"abandon_age,omitempty"` unknownFields protoimpl.UnknownFields - - AbandonAge int64 `protobuf:"varint,1,opt,name=abandon_age,json=abandonAge,proto3" json:"abandon_age,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetUnresolvedTransactionsRequest) Reset() { @@ -2639,11 +2607,10 @@ func (x *GetUnresolvedTransactionsRequest) GetAbandonAge() int64 { } type GetUnresolvedTransactionsResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Transactions []*query.TransactionMetadata `protobuf:"bytes,1,rep,name=transactions,proto3" json:"transactions,omitempty"` unknownFields protoimpl.UnknownFields - - Transactions []*query.TransactionMetadata `protobuf:"bytes,1,rep,name=transactions,proto3" json:"transactions,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetUnresolvedTransactionsResponse) Reset() { @@ -2684,11 +2651,10 @@ func (x *GetUnresolvedTransactionsResponse) GetTransactions() []*query.Transacti } type ReadTransactionRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Dtid string `protobuf:"bytes,1,opt,name=dtid,proto3" json:"dtid,omitempty"` unknownFields protoimpl.UnknownFields - - Dtid string `protobuf:"bytes,1,opt,name=dtid,proto3" json:"dtid,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ReadTransactionRequest) Reset() { @@ -2729,11 +2695,10 @@ func (x *ReadTransactionRequest) GetDtid() string { } type ReadTransactionResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Transaction *query.TransactionMetadata `protobuf:"bytes,1,opt,name=transaction,proto3" json:"transaction,omitempty"` unknownFields protoimpl.UnknownFields - - Transaction *query.TransactionMetadata `protobuf:"bytes,1,opt,name=transaction,proto3" json:"transaction,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ReadTransactionResponse) Reset() { @@ -2774,11 +2739,10 @@ func (x *ReadTransactionResponse) GetTransaction() *query.TransactionMetadata { } type GetTransactionInfoRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Dtid string `protobuf:"bytes,1,opt,name=dtid,proto3" json:"dtid,omitempty"` unknownFields protoimpl.UnknownFields - - Dtid string `protobuf:"bytes,1,opt,name=dtid,proto3" json:"dtid,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetTransactionInfoRequest) Reset() { @@ -2819,14 +2783,13 @@ func (x *GetTransactionInfoRequest) GetDtid() string { } type GetTransactionInfoResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + State string `protobuf:"bytes,1,opt,name=state,proto3" json:"state,omitempty"` + Message string `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"` + TimeCreated int64 `protobuf:"varint,3,opt,name=time_created,json=timeCreated,proto3" json:"time_created,omitempty"` + Statements []string `protobuf:"bytes,4,rep,name=statements,proto3" json:"statements,omitempty"` unknownFields protoimpl.UnknownFields - - State string `protobuf:"bytes,1,opt,name=state,proto3" json:"state,omitempty"` - Message string `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"` - TimeCreated int64 `protobuf:"varint,3,opt,name=time_created,json=timeCreated,proto3" json:"time_created,omitempty"` - Statements []string `protobuf:"bytes,4,rep,name=statements,proto3" json:"statements,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetTransactionInfoResponse) Reset() { @@ -2888,12 +2851,11 @@ func (x *GetTransactionInfoResponse) GetStatements() []string { } type ConcludeTransactionRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Dtid string `protobuf:"bytes,1,opt,name=dtid,proto3" json:"dtid,omitempty"` + Mm bool `protobuf:"varint,2,opt,name=mm,proto3" json:"mm,omitempty"` unknownFields protoimpl.UnknownFields - - Dtid string `protobuf:"bytes,1,opt,name=dtid,proto3" json:"dtid,omitempty"` - Mm bool `protobuf:"varint,2,opt,name=mm,proto3" json:"mm,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ConcludeTransactionRequest) Reset() { @@ -2941,9 +2903,9 @@ func (x *ConcludeTransactionRequest) GetMm() bool { } type ConcludeTransactionResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ConcludeTransactionResponse) Reset() { @@ -2977,9 +2939,9 @@ func (*ConcludeTransactionResponse) Descriptor() ([]byte, []int) { } type MysqlHostMetricsRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *MysqlHostMetricsRequest) Reset() { @@ -3013,11 +2975,10 @@ func (*MysqlHostMetricsRequest) Descriptor() ([]byte, []int) { } type MysqlHostMetricsResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + HostMetrics *mysqlctl.HostMetricsResponse `protobuf:"bytes,1,opt,name=HostMetrics,proto3" json:"HostMetrics,omitempty"` unknownFields protoimpl.UnknownFields - - HostMetrics *mysqlctl.HostMetricsResponse `protobuf:"bytes,1,opt,name=HostMetrics,proto3" json:"HostMetrics,omitempty"` + sizeCache protoimpl.SizeCache } func (x *MysqlHostMetricsResponse) Reset() { @@ -3058,9 +3019,9 @@ func (x *MysqlHostMetricsResponse) GetHostMetrics() *mysqlctl.HostMetricsRespons } type ReplicationStatusRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ReplicationStatusRequest) Reset() { @@ -3094,11 +3055,10 @@ func (*ReplicationStatusRequest) Descriptor() ([]byte, []int) { } type ReplicationStatusResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Status *replicationdata.Status `protobuf:"bytes,1,opt,name=status,proto3" json:"status,omitempty"` unknownFields protoimpl.UnknownFields - - Status *replicationdata.Status `protobuf:"bytes,1,opt,name=status,proto3" json:"status,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ReplicationStatusResponse) Reset() { @@ -3139,9 +3099,9 @@ func (x *ReplicationStatusResponse) GetStatus() *replicationdata.Status { } type PrimaryStatusRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *PrimaryStatusRequest) Reset() { @@ -3175,11 +3135,10 @@ func (*PrimaryStatusRequest) Descriptor() ([]byte, []int) { } type PrimaryStatusResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Status *replicationdata.PrimaryStatus `protobuf:"bytes,1,opt,name=status,proto3" json:"status,omitempty"` unknownFields protoimpl.UnknownFields - - Status *replicationdata.PrimaryStatus `protobuf:"bytes,1,opt,name=status,proto3" json:"status,omitempty"` + sizeCache protoimpl.SizeCache } func (x *PrimaryStatusResponse) Reset() { @@ -3220,9 +3179,9 @@ func (x *PrimaryStatusResponse) GetStatus() *replicationdata.PrimaryStatus { } type PrimaryPositionRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *PrimaryPositionRequest) Reset() { @@ -3256,11 +3215,10 @@ func (*PrimaryPositionRequest) Descriptor() ([]byte, []int) { } type PrimaryPositionResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Position string `protobuf:"bytes,1,opt,name=position,proto3" json:"position,omitempty"` unknownFields protoimpl.UnknownFields - - Position string `protobuf:"bytes,1,opt,name=position,proto3" json:"position,omitempty"` + sizeCache protoimpl.SizeCache } func (x *PrimaryPositionResponse) Reset() { @@ -3301,11 +3259,10 @@ func (x *PrimaryPositionResponse) GetPosition() string { } type WaitForPositionRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Position string `protobuf:"bytes,1,opt,name=position,proto3" json:"position,omitempty"` unknownFields protoimpl.UnknownFields - - Position string `protobuf:"bytes,1,opt,name=position,proto3" json:"position,omitempty"` + sizeCache protoimpl.SizeCache } func (x *WaitForPositionRequest) Reset() { @@ -3346,9 +3303,9 @@ func (x *WaitForPositionRequest) GetPosition() string { } type WaitForPositionResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *WaitForPositionResponse) Reset() { @@ -3382,9 +3339,9 @@ func (*WaitForPositionResponse) Descriptor() ([]byte, []int) { } type StopReplicationRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *StopReplicationRequest) Reset() { @@ -3418,9 +3375,9 @@ func (*StopReplicationRequest) Descriptor() ([]byte, []int) { } type StopReplicationResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *StopReplicationResponse) Reset() { @@ -3454,12 +3411,11 @@ func (*StopReplicationResponse) Descriptor() ([]byte, []int) { } type StopReplicationMinimumRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Position string `protobuf:"bytes,1,opt,name=position,proto3" json:"position,omitempty"` + WaitTimeout int64 `protobuf:"varint,2,opt,name=wait_timeout,json=waitTimeout,proto3" json:"wait_timeout,omitempty"` unknownFields protoimpl.UnknownFields - - Position string `protobuf:"bytes,1,opt,name=position,proto3" json:"position,omitempty"` - WaitTimeout int64 `protobuf:"varint,2,opt,name=wait_timeout,json=waitTimeout,proto3" json:"wait_timeout,omitempty"` + sizeCache protoimpl.SizeCache } func (x *StopReplicationMinimumRequest) Reset() { @@ -3507,11 +3463,10 @@ func (x *StopReplicationMinimumRequest) GetWaitTimeout() int64 { } type StopReplicationMinimumResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Position string `protobuf:"bytes,1,opt,name=position,proto3" json:"position,omitempty"` unknownFields protoimpl.UnknownFields - - Position string `protobuf:"bytes,1,opt,name=position,proto3" json:"position,omitempty"` + sizeCache protoimpl.SizeCache } func (x *StopReplicationMinimumResponse) Reset() { @@ -3552,11 +3507,10 @@ func (x *StopReplicationMinimumResponse) GetPosition() string { } type StartReplicationRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + SemiSync bool `protobuf:"varint,1,opt,name=semiSync,proto3" json:"semiSync,omitempty"` unknownFields protoimpl.UnknownFields - - SemiSync bool `protobuf:"varint,1,opt,name=semiSync,proto3" json:"semiSync,omitempty"` + sizeCache protoimpl.SizeCache } func (x *StartReplicationRequest) Reset() { @@ -3597,9 +3551,9 @@ func (x *StartReplicationRequest) GetSemiSync() bool { } type StartReplicationResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *StartReplicationResponse) Reset() { @@ -3633,12 +3587,11 @@ func (*StartReplicationResponse) Descriptor() ([]byte, []int) { } type StartReplicationUntilAfterRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Position string `protobuf:"bytes,1,opt,name=position,proto3" json:"position,omitempty"` + WaitTimeout int64 `protobuf:"varint,2,opt,name=wait_timeout,json=waitTimeout,proto3" json:"wait_timeout,omitempty"` unknownFields protoimpl.UnknownFields - - Position string `protobuf:"bytes,1,opt,name=position,proto3" json:"position,omitempty"` - WaitTimeout int64 `protobuf:"varint,2,opt,name=wait_timeout,json=waitTimeout,proto3" json:"wait_timeout,omitempty"` + sizeCache protoimpl.SizeCache } func (x *StartReplicationUntilAfterRequest) Reset() { @@ -3686,9 +3639,9 @@ func (x *StartReplicationUntilAfterRequest) GetWaitTimeout() int64 { } type StartReplicationUntilAfterResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *StartReplicationUntilAfterResponse) Reset() { @@ -3722,9 +3675,9 @@ func (*StartReplicationUntilAfterResponse) Descriptor() ([]byte, []int) { } type GetReplicasRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GetReplicasRequest) Reset() { @@ -3758,11 +3711,10 @@ func (*GetReplicasRequest) Descriptor() ([]byte, []int) { } type GetReplicasResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Addrs []string `protobuf:"bytes,1,rep,name=addrs,proto3" json:"addrs,omitempty"` unknownFields protoimpl.UnknownFields - - Addrs []string `protobuf:"bytes,1,rep,name=addrs,proto3" json:"addrs,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetReplicasResponse) Reset() { @@ -3803,9 +3755,9 @@ func (x *GetReplicasResponse) GetAddrs() []string { } type ResetReplicationRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ResetReplicationRequest) Reset() { @@ -3839,9 +3791,9 @@ func (*ResetReplicationRequest) Descriptor() ([]byte, []int) { } type ResetReplicationResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ResetReplicationResponse) Reset() { @@ -3875,11 +3827,10 @@ func (*ResetReplicationResponse) Descriptor() ([]byte, []int) { } type VReplicationExecRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Query string `protobuf:"bytes,1,opt,name=query,proto3" json:"query,omitempty"` unknownFields protoimpl.UnknownFields - - Query string `protobuf:"bytes,1,opt,name=query,proto3" json:"query,omitempty"` + sizeCache protoimpl.SizeCache } func (x *VReplicationExecRequest) Reset() { @@ -3920,11 +3871,10 @@ func (x *VReplicationExecRequest) GetQuery() string { } type VReplicationExecResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Result *query.QueryResult `protobuf:"bytes,1,opt,name=result,proto3" json:"result,omitempty"` unknownFields protoimpl.UnknownFields - - Result *query.QueryResult `protobuf:"bytes,1,opt,name=result,proto3" json:"result,omitempty"` + sizeCache protoimpl.SizeCache } func (x *VReplicationExecResponse) Reset() { @@ -3965,12 +3915,11 @@ func (x *VReplicationExecResponse) GetResult() *query.QueryResult { } type VReplicationWaitForPosRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Id int32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Position string `protobuf:"bytes,2,opt,name=position,proto3" json:"position,omitempty"` unknownFields protoimpl.UnknownFields - - Id int32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` - Position string `protobuf:"bytes,2,opt,name=position,proto3" json:"position,omitempty"` + sizeCache protoimpl.SizeCache } func (x *VReplicationWaitForPosRequest) Reset() { @@ -4018,9 +3967,9 @@ func (x *VReplicationWaitForPosRequest) GetPosition() string { } type VReplicationWaitForPosResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *VReplicationWaitForPosResponse) Reset() { @@ -4054,11 +4003,10 @@ func (*VReplicationWaitForPosResponse) Descriptor() ([]byte, []int) { } type InitPrimaryRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + SemiSync bool `protobuf:"varint,1,opt,name=semiSync,proto3" json:"semiSync,omitempty"` unknownFields protoimpl.UnknownFields - - SemiSync bool `protobuf:"varint,1,opt,name=semiSync,proto3" json:"semiSync,omitempty"` + sizeCache protoimpl.SizeCache } func (x *InitPrimaryRequest) Reset() { @@ -4099,11 +4047,10 @@ func (x *InitPrimaryRequest) GetSemiSync() bool { } type InitPrimaryResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Position string `protobuf:"bytes,1,opt,name=position,proto3" json:"position,omitempty"` unknownFields protoimpl.UnknownFields - - Position string `protobuf:"bytes,1,opt,name=position,proto3" json:"position,omitempty"` + sizeCache protoimpl.SizeCache } func (x *InitPrimaryResponse) Reset() { @@ -4144,14 +4091,13 @@ func (x *InitPrimaryResponse) GetPosition() string { } type PopulateReparentJournalRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - TimeCreatedNs int64 `protobuf:"varint,1,opt,name=time_created_ns,json=timeCreatedNs,proto3" json:"time_created_ns,omitempty"` - ActionName string `protobuf:"bytes,2,opt,name=action_name,json=actionName,proto3" json:"action_name,omitempty"` - PrimaryAlias *topodata.TabletAlias `protobuf:"bytes,3,opt,name=primary_alias,json=primaryAlias,proto3" json:"primary_alias,omitempty"` - ReplicationPosition string `protobuf:"bytes,4,opt,name=replication_position,json=replicationPosition,proto3" json:"replication_position,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + TimeCreatedNs int64 `protobuf:"varint,1,opt,name=time_created_ns,json=timeCreatedNs,proto3" json:"time_created_ns,omitempty"` + ActionName string `protobuf:"bytes,2,opt,name=action_name,json=actionName,proto3" json:"action_name,omitempty"` + PrimaryAlias *topodata.TabletAlias `protobuf:"bytes,3,opt,name=primary_alias,json=primaryAlias,proto3" json:"primary_alias,omitempty"` + ReplicationPosition string `protobuf:"bytes,4,opt,name=replication_position,json=replicationPosition,proto3" json:"replication_position,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *PopulateReparentJournalRequest) Reset() { @@ -4213,9 +4159,9 @@ func (x *PopulateReparentJournalRequest) GetReplicationPosition() string { } type PopulateReparentJournalResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *PopulateReparentJournalResponse) Reset() { @@ -4249,9 +4195,9 @@ func (*PopulateReparentJournalResponse) Descriptor() ([]byte, []int) { } type ReadReparentJournalInfoRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ReadReparentJournalInfoRequest) Reset() { @@ -4285,11 +4231,10 @@ func (*ReadReparentJournalInfoRequest) Descriptor() ([]byte, []int) { } type ReadReparentJournalInfoResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Length int32 `protobuf:"varint,1,opt,name=length,proto3" json:"length,omitempty"` unknownFields protoimpl.UnknownFields - - Length int32 `protobuf:"varint,1,opt,name=length,proto3" json:"length,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ReadReparentJournalInfoResponse) Reset() { @@ -4330,14 +4275,13 @@ func (x *ReadReparentJournalInfoResponse) GetLength() int32 { } type InitReplicaRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Parent *topodata.TabletAlias `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` - ReplicationPosition string `protobuf:"bytes,2,opt,name=replication_position,json=replicationPosition,proto3" json:"replication_position,omitempty"` - TimeCreatedNs int64 `protobuf:"varint,3,opt,name=time_created_ns,json=timeCreatedNs,proto3" json:"time_created_ns,omitempty"` - SemiSync bool `protobuf:"varint,4,opt,name=semiSync,proto3" json:"semiSync,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Parent *topodata.TabletAlias `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` + ReplicationPosition string `protobuf:"bytes,2,opt,name=replication_position,json=replicationPosition,proto3" json:"replication_position,omitempty"` + TimeCreatedNs int64 `protobuf:"varint,3,opt,name=time_created_ns,json=timeCreatedNs,proto3" json:"time_created_ns,omitempty"` + SemiSync bool `protobuf:"varint,4,opt,name=semiSync,proto3" json:"semiSync,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *InitReplicaRequest) Reset() { @@ -4399,9 +4343,9 @@ func (x *InitReplicaRequest) GetSemiSync() bool { } type InitReplicaResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *InitReplicaResponse) Reset() { @@ -4435,9 +4379,9 @@ func (*InitReplicaResponse) Descriptor() ([]byte, []int) { } type DemotePrimaryRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *DemotePrimaryRequest) Reset() { @@ -4471,12 +4415,11 @@ func (*DemotePrimaryRequest) Descriptor() ([]byte, []int) { } type DemotePrimaryResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // PrimaryStatus represents the response from calling `SHOW BINARY LOG STATUS` on a primary that has been demoted. PrimaryStatus *replicationdata.PrimaryStatus `protobuf:"bytes,2,opt,name=primary_status,json=primaryStatus,proto3" json:"primary_status,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *DemotePrimaryResponse) Reset() { @@ -4517,11 +4460,10 @@ func (x *DemotePrimaryResponse) GetPrimaryStatus() *replicationdata.PrimaryStatu } type UndoDemotePrimaryRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + SemiSync bool `protobuf:"varint,1,opt,name=semiSync,proto3" json:"semiSync,omitempty"` unknownFields protoimpl.UnknownFields - - SemiSync bool `protobuf:"varint,1,opt,name=semiSync,proto3" json:"semiSync,omitempty"` + sizeCache protoimpl.SizeCache } func (x *UndoDemotePrimaryRequest) Reset() { @@ -4562,9 +4504,9 @@ func (x *UndoDemotePrimaryRequest) GetSemiSync() bool { } type UndoDemotePrimaryResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *UndoDemotePrimaryResponse) Reset() { @@ -4598,9 +4540,9 @@ func (*UndoDemotePrimaryResponse) Descriptor() ([]byte, []int) { } type ReplicaWasPromotedRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ReplicaWasPromotedRequest) Reset() { @@ -4634,9 +4576,9 @@ func (*ReplicaWasPromotedRequest) Descriptor() ([]byte, []int) { } type ReplicaWasPromotedResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ReplicaWasPromotedResponse) Reset() { @@ -4670,9 +4612,9 @@ func (*ReplicaWasPromotedResponse) Descriptor() ([]byte, []int) { } type ResetReplicationParametersRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ResetReplicationParametersRequest) Reset() { @@ -4706,9 +4648,9 @@ func (*ResetReplicationParametersRequest) Descriptor() ([]byte, []int) { } type ResetReplicationParametersResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ResetReplicationParametersResponse) Reset() { @@ -4742,9 +4684,9 @@ func (*ResetReplicationParametersResponse) Descriptor() ([]byte, []int) { } type FullStatusRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *FullStatusRequest) Reset() { @@ -4778,11 +4720,10 @@ func (*FullStatusRequest) Descriptor() ([]byte, []int) { } type FullStatusResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Status *replicationdata.FullStatus `protobuf:"bytes,1,opt,name=status,proto3" json:"status,omitempty"` unknownFields protoimpl.UnknownFields - - Status *replicationdata.FullStatus `protobuf:"bytes,1,opt,name=status,proto3" json:"status,omitempty"` + sizeCache protoimpl.SizeCache } func (x *FullStatusResponse) Reset() { @@ -4823,16 +4764,15 @@ func (x *FullStatusResponse) GetStatus() *replicationdata.FullStatus { } type SetReplicationSourceRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Parent *topodata.TabletAlias `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` - TimeCreatedNs int64 `protobuf:"varint,2,opt,name=time_created_ns,json=timeCreatedNs,proto3" json:"time_created_ns,omitempty"` - ForceStartReplication bool `protobuf:"varint,3,opt,name=force_start_replication,json=forceStartReplication,proto3" json:"force_start_replication,omitempty"` - WaitPosition string `protobuf:"bytes,4,opt,name=wait_position,json=waitPosition,proto3" json:"wait_position,omitempty"` - SemiSync bool `protobuf:"varint,5,opt,name=semiSync,proto3" json:"semiSync,omitempty"` - HeartbeatInterval float64 `protobuf:"fixed64,6,opt,name=heartbeat_interval,json=heartbeatInterval,proto3" json:"heartbeat_interval,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Parent *topodata.TabletAlias `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` + TimeCreatedNs int64 `protobuf:"varint,2,opt,name=time_created_ns,json=timeCreatedNs,proto3" json:"time_created_ns,omitempty"` + ForceStartReplication bool `protobuf:"varint,3,opt,name=force_start_replication,json=forceStartReplication,proto3" json:"force_start_replication,omitempty"` + WaitPosition string `protobuf:"bytes,4,opt,name=wait_position,json=waitPosition,proto3" json:"wait_position,omitempty"` + SemiSync bool `protobuf:"varint,5,opt,name=semiSync,proto3" json:"semiSync,omitempty"` + HeartbeatInterval float64 `protobuf:"fixed64,6,opt,name=heartbeat_interval,json=heartbeatInterval,proto3" json:"heartbeat_interval,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *SetReplicationSourceRequest) Reset() { @@ -4908,9 +4848,9 @@ func (x *SetReplicationSourceRequest) GetHeartbeatInterval() float64 { } type SetReplicationSourceResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *SetReplicationSourceResponse) Reset() { @@ -4944,12 +4884,11 @@ func (*SetReplicationSourceResponse) Descriptor() ([]byte, []int) { } type ReplicaWasRestartedRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // the parent alias the tablet should have - Parent *topodata.TabletAlias `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` + Parent *topodata.TabletAlias `protobuf:"bytes,1,opt,name=parent,proto3" json:"parent,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ReplicaWasRestartedRequest) Reset() { @@ -4990,9 +4929,9 @@ func (x *ReplicaWasRestartedRequest) GetParent() *topodata.TabletAlias { } type ReplicaWasRestartedResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ReplicaWasRestartedResponse) Reset() { @@ -5026,11 +4965,10 @@ func (*ReplicaWasRestartedResponse) Descriptor() ([]byte, []int) { } type StopReplicationAndGetStatusRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` StopReplicationMode replicationdata.StopReplicationMode `protobuf:"varint,1,opt,name=stop_replication_mode,json=stopReplicationMode,proto3,enum=replicationdata.StopReplicationMode" json:"stop_replication_mode,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *StopReplicationAndGetStatusRequest) Reset() { @@ -5071,12 +5009,11 @@ func (x *StopReplicationAndGetStatusRequest) GetStopReplicationMode() replicatio } type StopReplicationAndGetStatusResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Status represents the replication status call right before, and right after telling the replica to stop. - Status *replicationdata.StopReplicationStatus `protobuf:"bytes,2,opt,name=status,proto3" json:"status,omitempty"` + Status *replicationdata.StopReplicationStatus `protobuf:"bytes,2,opt,name=status,proto3" json:"status,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *StopReplicationAndGetStatusResponse) Reset() { @@ -5117,11 +5054,10 @@ func (x *StopReplicationAndGetStatusResponse) GetStatus() *replicationdata.StopR } type PromoteReplicaRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + SemiSync bool `protobuf:"varint,1,opt,name=semiSync,proto3" json:"semiSync,omitempty"` unknownFields protoimpl.UnknownFields - - SemiSync bool `protobuf:"varint,1,opt,name=semiSync,proto3" json:"semiSync,omitempty"` + sizeCache protoimpl.SizeCache } func (x *PromoteReplicaRequest) Reset() { @@ -5162,11 +5098,10 @@ func (x *PromoteReplicaRequest) GetSemiSync() bool { } type PromoteReplicaResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Position string `protobuf:"bytes,1,opt,name=position,proto3" json:"position,omitempty"` unknownFields protoimpl.UnknownFields - - Position string `protobuf:"bytes,1,opt,name=position,proto3" json:"position,omitempty"` + sizeCache protoimpl.SizeCache } func (x *PromoteReplicaResponse) Reset() { @@ -5207,12 +5142,9 @@ func (x *PromoteReplicaResponse) GetPosition() string { } type BackupRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Concurrency int32 `protobuf:"varint,1,opt,name=concurrency,proto3" json:"concurrency,omitempty"` - AllowPrimary bool `protobuf:"varint,2,opt,name=allow_primary,json=allowPrimary,proto3" json:"allow_primary,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Concurrency int32 `protobuf:"varint,1,opt,name=concurrency,proto3" json:"concurrency,omitempty"` + AllowPrimary bool `protobuf:"varint,2,opt,name=allow_primary,json=allowPrimary,proto3" json:"allow_primary,omitempty"` // IncrementalFromPos indicates a position of a previous backup. When this value is non-empty // then the backup becomes incremental and applies as of given position. IncrementalFromPos string `protobuf:"bytes,3,opt,name=incremental_from_pos,json=incrementalFromPos,proto3" json:"incremental_from_pos,omitempty"` @@ -5220,7 +5152,9 @@ type BackupRequest struct { // so that it's a backup that can be used for an upgrade. UpgradeSafe bool `protobuf:"varint,4,opt,name=upgrade_safe,json=upgradeSafe,proto3" json:"upgrade_safe,omitempty"` // BackupEngine specifies if we want to use a particular backup engine for this backup request - BackupEngine *string `protobuf:"bytes,5,opt,name=backup_engine,json=backupEngine,proto3,oneof" json:"backup_engine,omitempty"` + BackupEngine *string `protobuf:"bytes,5,opt,name=backup_engine,json=backupEngine,proto3,oneof" json:"backup_engine,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *BackupRequest) Reset() { @@ -5289,11 +5223,10 @@ func (x *BackupRequest) GetBackupEngine() string { } type BackupResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Event *logutil.Event `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` unknownFields protoimpl.UnknownFields - - Event *logutil.Event `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` + sizeCache protoimpl.SizeCache } func (x *BackupResponse) Reset() { @@ -5334,11 +5267,8 @@ func (x *BackupResponse) GetEvent() *logutil.Event { } type RestoreFromBackupRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - BackupTime *vttime.Time `protobuf:"bytes,1,opt,name=backup_time,json=backupTime,proto3" json:"backup_time,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + BackupTime *vttime.Time `protobuf:"bytes,1,opt,name=backup_time,json=backupTime,proto3" json:"backup_time,omitempty"` // RestoreToPos indicates a position for a point-in-time recovery. The recovery // is expected to utilize one full backup, followed by zero or more incremental backups, // that reach the precise desired position @@ -5350,6 +5280,8 @@ type RestoreFromBackupRequest struct { RestoreToTimestamp *vttime.Time `protobuf:"bytes,4,opt,name=restore_to_timestamp,json=restoreToTimestamp,proto3" json:"restore_to_timestamp,omitempty"` // AllowedBackupEngines, if present will filter out any backups taken with engines not included in the list AllowedBackupEngines []string `protobuf:"bytes,5,rep,name=allowed_backup_engines,json=allowedBackupEngines,proto3" json:"allowed_backup_engines,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RestoreFromBackupRequest) Reset() { @@ -5418,11 +5350,10 @@ func (x *RestoreFromBackupRequest) GetAllowedBackupEngines() []string { } type RestoreFromBackupResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Event *logutil.Event `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` unknownFields protoimpl.UnknownFields - - Event *logutil.Event `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` + sizeCache protoimpl.SizeCache } func (x *RestoreFromBackupResponse) Reset() { @@ -5463,10 +5394,7 @@ func (x *RestoreFromBackupResponse) GetEvent() *logutil.Event { } type CreateVReplicationWorkflowRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Workflow string `protobuf:"bytes,1,opt,name=workflow,proto3" json:"workflow,omitempty"` BinlogSource []*binlogdata.BinlogSource `protobuf:"bytes,2,rep,name=binlog_source,json=binlogSource,proto3" json:"binlog_source,omitempty"` // Optional parameters. @@ -5484,6 +5412,8 @@ type CreateVReplicationWorkflowRequest struct { // Should the workflow stop after the copy phase. StopAfterCopy bool `protobuf:"varint,10,opt,name=stop_after_copy,json=stopAfterCopy,proto3" json:"stop_after_copy,omitempty"` Options string `protobuf:"bytes,11,opt,name=options,proto3" json:"options,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *CreateVReplicationWorkflowRequest) Reset() { @@ -5594,11 +5524,10 @@ func (x *CreateVReplicationWorkflowRequest) GetOptions() string { } type CreateVReplicationWorkflowResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Result *query.QueryResult `protobuf:"bytes,1,opt,name=result,proto3" json:"result,omitempty"` unknownFields protoimpl.UnknownFields - - Result *query.QueryResult `protobuf:"bytes,1,opt,name=result,proto3" json:"result,omitempty"` + sizeCache protoimpl.SizeCache } func (x *CreateVReplicationWorkflowResponse) Reset() { @@ -5639,16 +5568,15 @@ func (x *CreateVReplicationWorkflowResponse) GetResult() *query.QueryResult { } type DeleteTableDataRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The key is the table that we want to delete data from. // The value is the filter or WHERE clause to use when deleting // data in the table. - TableFilters map[string]string `protobuf:"bytes,1,rep,name=table_filters,json=tableFilters,proto3" json:"table_filters,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + TableFilters map[string]string `protobuf:"bytes,1,rep,name=table_filters,json=tableFilters,proto3" json:"table_filters,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` // BatchSize is the number of rows to delete in a single batch. - BatchSize int64 `protobuf:"varint,2,opt,name=batch_size,json=batchSize,proto3" json:"batch_size,omitempty"` + BatchSize int64 `protobuf:"varint,2,opt,name=batch_size,json=batchSize,proto3" json:"batch_size,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *DeleteTableDataRequest) Reset() { @@ -5696,9 +5624,9 @@ func (x *DeleteTableDataRequest) GetBatchSize() int64 { } type DeleteTableDataResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *DeleteTableDataResponse) Reset() { @@ -5732,11 +5660,10 @@ func (*DeleteTableDataResponse) Descriptor() ([]byte, []int) { } type DeleteVReplicationWorkflowRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Workflow string `protobuf:"bytes,1,opt,name=workflow,proto3" json:"workflow,omitempty"` unknownFields protoimpl.UnknownFields - - Workflow string `protobuf:"bytes,1,opt,name=workflow,proto3" json:"workflow,omitempty"` + sizeCache protoimpl.SizeCache } func (x *DeleteVReplicationWorkflowRequest) Reset() { @@ -5777,11 +5704,10 @@ func (x *DeleteVReplicationWorkflowRequest) GetWorkflow() string { } type DeleteVReplicationWorkflowResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Result *query.QueryResult `protobuf:"bytes,1,opt,name=result,proto3" json:"result,omitempty"` unknownFields protoimpl.UnknownFields - - Result *query.QueryResult `protobuf:"bytes,1,opt,name=result,proto3" json:"result,omitempty"` + sizeCache protoimpl.SizeCache } func (x *DeleteVReplicationWorkflowResponse) Reset() { @@ -5822,9 +5748,9 @@ func (x *DeleteVReplicationWorkflowResponse) GetResult() *query.QueryResult { } type HasVReplicationWorkflowsRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *HasVReplicationWorkflowsRequest) Reset() { @@ -5858,11 +5784,10 @@ func (*HasVReplicationWorkflowsRequest) Descriptor() ([]byte, []int) { } type HasVReplicationWorkflowsResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Has bool `protobuf:"varint,1,opt,name=has,proto3" json:"has,omitempty"` unknownFields protoimpl.UnknownFields - - Has bool `protobuf:"varint,1,opt,name=has,proto3" json:"has,omitempty"` + sizeCache protoimpl.SizeCache } func (x *HasVReplicationWorkflowsResponse) Reset() { @@ -5903,16 +5828,15 @@ func (x *HasVReplicationWorkflowsResponse) GetHas() bool { } type ReadVReplicationWorkflowsRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` IncludeIds []int32 `protobuf:"varint,1,rep,packed,name=include_ids,json=includeIds,proto3" json:"include_ids,omitempty"` IncludeWorkflows []string `protobuf:"bytes,2,rep,name=include_workflows,json=includeWorkflows,proto3" json:"include_workflows,omitempty"` IncludeStates []binlogdata.VReplicationWorkflowState `protobuf:"varint,3,rep,packed,name=include_states,json=includeStates,proto3,enum=binlogdata.VReplicationWorkflowState" json:"include_states,omitempty"` ExcludeWorkflows []string `protobuf:"bytes,4,rep,name=exclude_workflows,json=excludeWorkflows,proto3" json:"exclude_workflows,omitempty"` ExcludeStates []binlogdata.VReplicationWorkflowState `protobuf:"varint,5,rep,packed,name=exclude_states,json=excludeStates,proto3,enum=binlogdata.VReplicationWorkflowState" json:"exclude_states,omitempty"` ExcludeFrozen bool `protobuf:"varint,6,opt,name=exclude_frozen,json=excludeFrozen,proto3" json:"exclude_frozen,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ReadVReplicationWorkflowsRequest) Reset() { @@ -5988,11 +5912,10 @@ func (x *ReadVReplicationWorkflowsRequest) GetExcludeFrozen() bool { } type ReadVReplicationWorkflowsResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Workflows []*ReadVReplicationWorkflowResponse `protobuf:"bytes,1,rep,name=workflows,proto3" json:"workflows,omitempty"` unknownFields protoimpl.UnknownFields - - Workflows []*ReadVReplicationWorkflowResponse `protobuf:"bytes,1,rep,name=workflows,proto3" json:"workflows,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ReadVReplicationWorkflowsResponse) Reset() { @@ -6033,11 +5956,10 @@ func (x *ReadVReplicationWorkflowsResponse) GetWorkflows() []*ReadVReplicationWo } type ReadVReplicationWorkflowRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Workflow string `protobuf:"bytes,1,opt,name=workflow,proto3" json:"workflow,omitempty"` unknownFields protoimpl.UnknownFields - - Workflow string `protobuf:"bytes,1,opt,name=workflow,proto3" json:"workflow,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ReadVReplicationWorkflowRequest) Reset() { @@ -6078,10 +6000,7 @@ func (x *ReadVReplicationWorkflowRequest) GetWorkflow() string { } type ReadVReplicationWorkflowResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Workflow string `protobuf:"bytes,2,opt,name=workflow,proto3" json:"workflow,omitempty"` Cells string `protobuf:"bytes,3,opt,name=cells,proto3" json:"cells,omitempty"` TabletTypes []topodata.TabletType `protobuf:"varint,4,rep,packed,name=tablet_types,json=tabletTypes,proto3,enum=topodata.TabletType" json:"tablet_types,omitempty"` @@ -6093,7 +6012,9 @@ type ReadVReplicationWorkflowResponse struct { DeferSecondaryKeys bool `protobuf:"varint,10,opt,name=defer_secondary_keys,json=deferSecondaryKeys,proto3" json:"defer_secondary_keys,omitempty"` Streams []*ReadVReplicationWorkflowResponse_Stream `protobuf:"bytes,11,rep,name=streams,proto3" json:"streams,omitempty"` Options string `protobuf:"bytes,12,opt,name=options,proto3" json:"options,omitempty"` - ConfigOverrides map[string]string `protobuf:"bytes,13,rep,name=config_overrides,json=configOverrides,proto3" json:"config_overrides,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + ConfigOverrides map[string]string `protobuf:"bytes,13,rep,name=config_overrides,json=configOverrides,proto3" json:"config_overrides,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ReadVReplicationWorkflowResponse) Reset() { @@ -6211,9 +6132,9 @@ func (x *ReadVReplicationWorkflowResponse) GetConfigOverrides() map[string]strin } type ValidateVReplicationPermissionsRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ValidateVReplicationPermissionsRequest) Reset() { @@ -6247,15 +6168,14 @@ func (*ValidateVReplicationPermissionsRequest) Descriptor() ([]byte, []int) { } type ValidateVReplicationPermissionsResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The --db_filtered_user on the tablet. User string `protobuf:"bytes,1,opt,name=user,proto3" json:"user,omitempty"` // Does the user have the minimum privileges needed to manage // vreplication metadata. - Ok bool `protobuf:"varint,2,opt,name=ok,proto3" json:"ok,omitempty"` + Ok bool `protobuf:"varint,2,opt,name=ok,proto3" json:"ok,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ValidateVReplicationPermissionsResponse) Reset() { @@ -6303,16 +6223,15 @@ func (x *ValidateVReplicationPermissionsResponse) GetOk() bool { } type VDiffRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"` + Workflow string `protobuf:"bytes,2,opt,name=workflow,proto3" json:"workflow,omitempty"` + Action string `protobuf:"bytes,3,opt,name=action,proto3" json:"action,omitempty"` + ActionArg string `protobuf:"bytes,4,opt,name=action_arg,json=actionArg,proto3" json:"action_arg,omitempty"` + VdiffUuid string `protobuf:"bytes,5,opt,name=vdiff_uuid,json=vdiffUuid,proto3" json:"vdiff_uuid,omitempty"` + Options *VDiffOptions `protobuf:"bytes,6,opt,name=options,proto3" json:"options,omitempty"` unknownFields protoimpl.UnknownFields - - Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"` - Workflow string `protobuf:"bytes,2,opt,name=workflow,proto3" json:"workflow,omitempty"` - Action string `protobuf:"bytes,3,opt,name=action,proto3" json:"action,omitempty"` - ActionArg string `protobuf:"bytes,4,opt,name=action_arg,json=actionArg,proto3" json:"action_arg,omitempty"` - VdiffUuid string `protobuf:"bytes,5,opt,name=vdiff_uuid,json=vdiffUuid,proto3" json:"vdiff_uuid,omitempty"` - Options *VDiffOptions `protobuf:"bytes,6,opt,name=options,proto3" json:"options,omitempty"` + sizeCache protoimpl.SizeCache } func (x *VDiffRequest) Reset() { @@ -6388,13 +6307,12 @@ func (x *VDiffRequest) GetOptions() *VDiffOptions { } type VDiffResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Id int64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Output *query.QueryResult `protobuf:"bytes,2,opt,name=output,proto3" json:"output,omitempty"` + VdiffUuid string `protobuf:"bytes,3,opt,name=vdiff_uuid,json=vdiffUuid,proto3" json:"vdiff_uuid,omitempty"` unknownFields protoimpl.UnknownFields - - Id int64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` - Output *query.QueryResult `protobuf:"bytes,2,opt,name=output,proto3" json:"output,omitempty"` - VdiffUuid string `protobuf:"bytes,3,opt,name=vdiff_uuid,json=vdiffUuid,proto3" json:"vdiff_uuid,omitempty"` + sizeCache protoimpl.SizeCache } func (x *VDiffResponse) Reset() { @@ -6450,13 +6368,12 @@ func (x *VDiffResponse) GetVdiffUuid() string { // options that influence the tablet selected by the picker for streaming data from type VDiffPickerOptions struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + TabletTypes string `protobuf:"bytes,1,opt,name=tablet_types,json=tabletTypes,proto3" json:"tablet_types,omitempty"` + SourceCell string `protobuf:"bytes,2,opt,name=source_cell,json=sourceCell,proto3" json:"source_cell,omitempty"` + TargetCell string `protobuf:"bytes,3,opt,name=target_cell,json=targetCell,proto3" json:"target_cell,omitempty"` unknownFields protoimpl.UnknownFields - - TabletTypes string `protobuf:"bytes,1,opt,name=tablet_types,json=tabletTypes,proto3" json:"tablet_types,omitempty"` - SourceCell string `protobuf:"bytes,2,opt,name=source_cell,json=sourceCell,proto3" json:"source_cell,omitempty"` - TargetCell string `protobuf:"bytes,3,opt,name=target_cell,json=targetCell,proto3" json:"target_cell,omitempty"` + sizeCache protoimpl.SizeCache } func (x *VDiffPickerOptions) Reset() { @@ -6512,15 +6429,14 @@ func (x *VDiffPickerOptions) GetTargetCell() string { // options that only influence how vdiff differences are reported type VDiffReportOptions struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - OnlyPks bool `protobuf:"varint,1,opt,name=only_pks,json=onlyPks,proto3" json:"only_pks,omitempty"` - DebugQuery bool `protobuf:"varint,2,opt,name=debug_query,json=debugQuery,proto3" json:"debug_query,omitempty"` - Format string `protobuf:"bytes,3,opt,name=format,proto3" json:"format,omitempty"` - MaxSampleRows int64 `protobuf:"varint,4,opt,name=max_sample_rows,json=maxSampleRows,proto3" json:"max_sample_rows,omitempty"` - RowDiffColumnTruncateAt int64 `protobuf:"varint,5,opt,name=row_diff_column_truncate_at,json=rowDiffColumnTruncateAt,proto3" json:"row_diff_column_truncate_at,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + OnlyPks bool `protobuf:"varint,1,opt,name=only_pks,json=onlyPks,proto3" json:"only_pks,omitempty"` + DebugQuery bool `protobuf:"varint,2,opt,name=debug_query,json=debugQuery,proto3" json:"debug_query,omitempty"` + Format string `protobuf:"bytes,3,opt,name=format,proto3" json:"format,omitempty"` + MaxSampleRows int64 `protobuf:"varint,4,opt,name=max_sample_rows,json=maxSampleRows,proto3" json:"max_sample_rows,omitempty"` + RowDiffColumnTruncateAt int64 `protobuf:"varint,5,opt,name=row_diff_column_truncate_at,json=rowDiffColumnTruncateAt,proto3" json:"row_diff_column_truncate_at,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *VDiffReportOptions) Reset() { @@ -6589,20 +6505,19 @@ func (x *VDiffReportOptions) GetRowDiffColumnTruncateAt() int64 { } type VDiffCoreOptions struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Tables string `protobuf:"bytes,1,opt,name=tables,proto3" json:"tables,omitempty"` - AutoRetry bool `protobuf:"varint,2,opt,name=auto_retry,json=autoRetry,proto3" json:"auto_retry,omitempty"` - MaxRows int64 `protobuf:"varint,3,opt,name=max_rows,json=maxRows,proto3" json:"max_rows,omitempty"` - Checksum bool `protobuf:"varint,4,opt,name=checksum,proto3" json:"checksum,omitempty"` - SamplePct int64 `protobuf:"varint,5,opt,name=sample_pct,json=samplePct,proto3" json:"sample_pct,omitempty"` - TimeoutSeconds int64 `protobuf:"varint,6,opt,name=timeout_seconds,json=timeoutSeconds,proto3" json:"timeout_seconds,omitempty"` - MaxExtraRowsToCompare int64 `protobuf:"varint,7,opt,name=max_extra_rows_to_compare,json=maxExtraRowsToCompare,proto3" json:"max_extra_rows_to_compare,omitempty"` - UpdateTableStats bool `protobuf:"varint,8,opt,name=update_table_stats,json=updateTableStats,proto3" json:"update_table_stats,omitempty"` - MaxDiffSeconds int64 `protobuf:"varint,9,opt,name=max_diff_seconds,json=maxDiffSeconds,proto3" json:"max_diff_seconds,omitempty"` - AutoStart *bool `protobuf:"varint,10,opt,name=auto_start,json=autoStart,proto3,oneof" json:"auto_start,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Tables string `protobuf:"bytes,1,opt,name=tables,proto3" json:"tables,omitempty"` + AutoRetry bool `protobuf:"varint,2,opt,name=auto_retry,json=autoRetry,proto3" json:"auto_retry,omitempty"` + MaxRows int64 `protobuf:"varint,3,opt,name=max_rows,json=maxRows,proto3" json:"max_rows,omitempty"` + Checksum bool `protobuf:"varint,4,opt,name=checksum,proto3" json:"checksum,omitempty"` + SamplePct int64 `protobuf:"varint,5,opt,name=sample_pct,json=samplePct,proto3" json:"sample_pct,omitempty"` + TimeoutSeconds int64 `protobuf:"varint,6,opt,name=timeout_seconds,json=timeoutSeconds,proto3" json:"timeout_seconds,omitempty"` + MaxExtraRowsToCompare int64 `protobuf:"varint,7,opt,name=max_extra_rows_to_compare,json=maxExtraRowsToCompare,proto3" json:"max_extra_rows_to_compare,omitempty"` + UpdateTableStats bool `protobuf:"varint,8,opt,name=update_table_stats,json=updateTableStats,proto3" json:"update_table_stats,omitempty"` + MaxDiffSeconds int64 `protobuf:"varint,9,opt,name=max_diff_seconds,json=maxDiffSeconds,proto3" json:"max_diff_seconds,omitempty"` + AutoStart *bool `protobuf:"varint,10,opt,name=auto_start,json=autoStart,proto3,oneof" json:"auto_start,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *VDiffCoreOptions) Reset() { @@ -6706,13 +6621,12 @@ func (x *VDiffCoreOptions) GetAutoStart() bool { } type VDiffOptions struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + PickerOptions *VDiffPickerOptions `protobuf:"bytes,1,opt,name=picker_options,json=pickerOptions,proto3" json:"picker_options,omitempty"` + CoreOptions *VDiffCoreOptions `protobuf:"bytes,2,opt,name=core_options,json=coreOptions,proto3" json:"core_options,omitempty"` + ReportOptions *VDiffReportOptions `protobuf:"bytes,3,opt,name=report_options,json=reportOptions,proto3" json:"report_options,omitempty"` unknownFields protoimpl.UnknownFields - - PickerOptions *VDiffPickerOptions `protobuf:"bytes,1,opt,name=picker_options,json=pickerOptions,proto3" json:"picker_options,omitempty"` - CoreOptions *VDiffCoreOptions `protobuf:"bytes,2,opt,name=core_options,json=coreOptions,proto3" json:"core_options,omitempty"` - ReportOptions *VDiffReportOptions `protobuf:"bytes,3,opt,name=report_options,json=reportOptions,proto3" json:"report_options,omitempty"` + sizeCache protoimpl.SizeCache } func (x *VDiffOptions) Reset() { @@ -6767,14 +6681,13 @@ func (x *VDiffOptions) GetReportOptions() *VDiffReportOptions { } type VDiffTableLastPK struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Target *query.QueryResult `protobuf:"bytes,1,opt,name=target,proto3" json:"target,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Target *query.QueryResult `protobuf:"bytes,1,opt,name=target,proto3" json:"target,omitempty"` // If the source value is nil then it's the same as the target // and the target value should be used for both. - Source *query.QueryResult `protobuf:"bytes,2,opt,name=source,proto3,oneof" json:"source,omitempty"` + Source *query.QueryResult `protobuf:"bytes,2,opt,name=source,proto3,oneof" json:"source,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *VDiffTableLastPK) Reset() { @@ -6828,10 +6741,7 @@ func (x *VDiffTableLastPK) GetSource() *query.QueryResult { // TODO: leverage the optional modifier for these fields rather than using SimulatedNull // values: https://github.com/vitessio/vitess/issues/15627 type UpdateVReplicationWorkflowRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Workflow string `protobuf:"bytes,1,opt,name=workflow,proto3" json:"workflow,omitempty"` Cells []string `protobuf:"bytes,2,rep,name=cells,proto3" json:"cells,omitempty"` TabletTypes []topodata.TabletType `protobuf:"varint,3,rep,packed,name=tablet_types,json=tabletTypes,proto3,enum=topodata.TabletType" json:"tablet_types,omitempty"` @@ -6839,8 +6749,10 @@ type UpdateVReplicationWorkflowRequest struct { OnDdl *binlogdata.OnDDLAction `protobuf:"varint,5,opt,name=on_ddl,json=onDdl,proto3,enum=binlogdata.OnDDLAction,oneof" json:"on_ddl,omitempty"` State *binlogdata.VReplicationWorkflowState `protobuf:"varint,6,opt,name=state,proto3,enum=binlogdata.VReplicationWorkflowState,oneof" json:"state,omitempty"` Shards []string `protobuf:"bytes,7,rep,name=shards,proto3" json:"shards,omitempty"` - ConfigOverrides map[string]string `protobuf:"bytes,8,rep,name=config_overrides,json=configOverrides,proto3" json:"config_overrides,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + ConfigOverrides map[string]string `protobuf:"bytes,8,rep,name=config_overrides,json=configOverrides,proto3" json:"config_overrides,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` Message *string `protobuf:"bytes,9,opt,name=message,proto3,oneof" json:"message,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *UpdateVReplicationWorkflowRequest) Reset() { @@ -6937,11 +6849,10 @@ func (x *UpdateVReplicationWorkflowRequest) GetMessage() string { } type UpdateVReplicationWorkflowResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Result *query.QueryResult `protobuf:"bytes,1,opt,name=result,proto3" json:"result,omitempty"` unknownFields protoimpl.UnknownFields - - Result *query.QueryResult `protobuf:"bytes,1,opt,name=result,proto3" json:"result,omitempty"` + sizeCache protoimpl.SizeCache } func (x *UpdateVReplicationWorkflowResponse) Reset() { @@ -6988,16 +6899,15 @@ func (x *UpdateVReplicationWorkflowResponse) GetResult() *query.QueryResult { // TODO: leverage the optional modifier for these fields rather than using SimulatedNull // values: https://github.com/vitessio/vitess/issues/15627 type UpdateVReplicationWorkflowsRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` AllWorkflows bool `protobuf:"varint,1,opt,name=all_workflows,json=allWorkflows,proto3" json:"all_workflows,omitempty"` IncludeWorkflows []string `protobuf:"bytes,2,rep,name=include_workflows,json=includeWorkflows,proto3" json:"include_workflows,omitempty"` ExcludeWorkflows []string `protobuf:"bytes,3,rep,name=exclude_workflows,json=excludeWorkflows,proto3" json:"exclude_workflows,omitempty"` State *binlogdata.VReplicationWorkflowState `protobuf:"varint,4,opt,name=state,proto3,enum=binlogdata.VReplicationWorkflowState,oneof" json:"state,omitempty"` Message *string `protobuf:"bytes,5,opt,name=message,proto3,oneof" json:"message,omitempty"` StopPosition *string `protobuf:"bytes,6,opt,name=stop_position,json=stopPosition,proto3,oneof" json:"stop_position,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *UpdateVReplicationWorkflowsRequest) Reset() { @@ -7073,11 +6983,10 @@ func (x *UpdateVReplicationWorkflowsRequest) GetStopPosition() string { } type UpdateVReplicationWorkflowsResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Result *query.QueryResult `protobuf:"bytes,1,opt,name=result,proto3" json:"result,omitempty"` unknownFields protoimpl.UnknownFields - - Result *query.QueryResult `protobuf:"bytes,1,opt,name=result,proto3" json:"result,omitempty"` + sizeCache protoimpl.SizeCache } func (x *UpdateVReplicationWorkflowsResponse) Reset() { @@ -7118,11 +7027,10 @@ func (x *UpdateVReplicationWorkflowsResponse) GetResult() *query.QueryResult { } type ResetSequencesRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Tables []string `protobuf:"bytes,1,rep,name=tables,proto3" json:"tables,omitempty"` unknownFields protoimpl.UnknownFields - - Tables []string `protobuf:"bytes,1,rep,name=tables,proto3" json:"tables,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ResetSequencesRequest) Reset() { @@ -7163,9 +7071,9 @@ func (x *ResetSequencesRequest) GetTables() []string { } type ResetSequencesResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ResetSequencesResponse) Reset() { @@ -7199,12 +7107,9 @@ func (*ResetSequencesResponse) Descriptor() ([]byte, []int) { } type CheckThrottlerRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - AppName string `protobuf:"bytes,1,opt,name=app_name,json=appName,proto3" json:"app_name,omitempty"` - Scope string `protobuf:"bytes,2,opt,name=scope,proto3" json:"scope,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + AppName string `protobuf:"bytes,1,opt,name=app_name,json=appName,proto3" json:"app_name,omitempty"` + Scope string `protobuf:"bytes,2,opt,name=scope,proto3" json:"scope,omitempty"` // SkipRequestHeartbeats ensures this check does not renew heartbeat lease SkipRequestHeartbeats bool `protobuf:"varint,3,opt,name=skip_request_heartbeats,json=skipRequestHeartbeats,proto3" json:"skip_request_heartbeats,omitempty"` // OKIfNotExists asks the throttler to return OK even if the metric does not exist @@ -7212,6 +7117,8 @@ type CheckThrottlerRequest struct { // MultiMetricsEnabled is always set to "true" and is how a multi-metrics enabled replica // throttler knows its being probed by a multi-metrics enabled primary vttablet. MultiMetricsEnabled bool `protobuf:"varint,5,opt,name=multi_metrics_enabled,json=multiMetricsEnabled,proto3" json:"multi_metrics_enabled,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *CheckThrottlerRequest) Reset() { @@ -7280,10 +7187,7 @@ func (x *CheckThrottlerRequest) GetMultiMetricsEnabled() bool { } type CheckThrottlerResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // StatusCode is HTTP compliant response code (e.g. 200 for OK) StatusCode int32 `protobuf:"varint,1,opt,name=status_code,json=statusCode,proto3" json:"status_code,omitempty"` // Value is the metric value collected by the tablet @@ -7299,13 +7203,15 @@ type CheckThrottlerResponse struct { RecentlyChecked bool `protobuf:"varint,6,opt,name=recently_checked,json=recentlyChecked,proto3" json:"recently_checked,omitempty"` // Metrics is a map (metric name -> metric value/error) so that the client has as much // information as possible about all the checked metrics. - Metrics map[string]*CheckThrottlerResponse_Metric `protobuf:"bytes,7,rep,name=metrics,proto3" json:"metrics,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Metrics map[string]*CheckThrottlerResponse_Metric `protobuf:"bytes,7,rep,name=metrics,proto3" json:"metrics,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` // AppName is the name of app that was matched by the throttler AppName string `protobuf:"bytes,8,opt,name=app_name,json=appName,proto3" json:"app_name,omitempty"` // Summary is a human readable analysis of the result Summary string `protobuf:"bytes,9,opt,name=summary,proto3" json:"summary,omitempty"` // ResponseCode is the enum representation of the response - ResponseCode CheckThrottlerResponseCode `protobuf:"varint,10,opt,name=response_code,json=responseCode,proto3,enum=tabletmanagerdata.CheckThrottlerResponseCode" json:"response_code,omitempty"` + ResponseCode CheckThrottlerResponseCode `protobuf:"varint,10,opt,name=response_code,json=responseCode,proto3,enum=tabletmanagerdata.CheckThrottlerResponseCode" json:"response_code,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *CheckThrottlerResponse) Reset() { @@ -7409,9 +7315,9 @@ func (x *CheckThrottlerResponse) GetResponseCode() CheckThrottlerResponseCode { } type GetThrottlerStatusRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GetThrottlerStatusRequest) Reset() { @@ -7445,10 +7351,7 @@ func (*GetThrottlerStatusRequest) Descriptor() ([]byte, []int) { } type GetThrottlerStatusResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // TabletAlias of probed tablet TabletAlias string `protobuf:"bytes,1,opt,name=tablet_alias,json=tabletAlias,proto3" json:"tablet_alias,omitempty"` Keyspace string `protobuf:"bytes,2,opt,name=keyspace,proto3" json:"keyspace,omitempty"` @@ -7473,18 +7376,20 @@ type GetThrottlerStatusResponse struct { MetricNameUsedAsDefault string `protobuf:"bytes,11,opt,name=metric_name_used_as_default,json=metricNameUsedAsDefault,proto3" json:"metric_name_used_as_default,omitempty"` // AggregatedMetrics is a map of metric names to their values/errors // Names are, for example, "self", "self/lag", "shard/lag", "shard/loadavg", etc. - AggregatedMetrics map[string]*GetThrottlerStatusResponse_MetricResult `protobuf:"bytes,12,rep,name=aggregated_metrics,json=aggregatedMetrics,proto3" json:"aggregated_metrics,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + AggregatedMetrics map[string]*GetThrottlerStatusResponse_MetricResult `protobuf:"bytes,12,rep,name=aggregated_metrics,json=aggregatedMetrics,proto3" json:"aggregated_metrics,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` // MetricThresholds is a map of metric names to their thresholds. - MetricThresholds map[string]float64 `protobuf:"bytes,13,rep,name=metric_thresholds,json=metricThresholds,proto3" json:"metric_thresholds,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"fixed64,2,opt,name=value,proto3"` + MetricThresholds map[string]float64 `protobuf:"bytes,13,rep,name=metric_thresholds,json=metricThresholds,proto3" json:"metric_thresholds,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"fixed64,2,opt,name=value"` // MetricsHealth is a map of metric names to their health status. - MetricsHealth map[string]*GetThrottlerStatusResponse_MetricHealth `protobuf:"bytes,14,rep,name=metrics_health,json=metricsHealth,proto3" json:"metrics_health,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + MetricsHealth map[string]*GetThrottlerStatusResponse_MetricHealth `protobuf:"bytes,14,rep,name=metrics_health,json=metricsHealth,proto3" json:"metrics_health,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` // ThrottledApps is a map of app names to their throttling rules - ThrottledApps map[string]*topodata.ThrottledAppRule `protobuf:"bytes,15,rep,name=throttled_apps,json=throttledApps,proto3" json:"throttled_apps,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + ThrottledApps map[string]*topodata.ThrottledAppRule `protobuf:"bytes,15,rep,name=throttled_apps,json=throttledApps,proto3" json:"throttled_apps,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` // AppCheckedMetrics is a map of app names to their assigned metrics - AppCheckedMetrics map[string]string `protobuf:"bytes,16,rep,name=app_checked_metrics,json=appCheckedMetrics,proto3" json:"app_checked_metrics,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + AppCheckedMetrics map[string]string `protobuf:"bytes,16,rep,name=app_checked_metrics,json=appCheckedMetrics,proto3" json:"app_checked_metrics,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` RecentlyChecked bool `protobuf:"varint,17,opt,name=recently_checked,json=recentlyChecked,proto3" json:"recently_checked,omitempty"` // RecentApps is a map of app names to their recent check status - RecentApps map[string]*GetThrottlerStatusResponse_RecentApp `protobuf:"bytes,18,rep,name=recent_apps,json=recentApps,proto3" json:"recent_apps,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + RecentApps map[string]*GetThrottlerStatusResponse_RecentApp `protobuf:"bytes,18,rep,name=recent_apps,json=recentApps,proto3" json:"recent_apps,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GetThrottlerStatusResponse) Reset() { @@ -7644,12 +7549,11 @@ func (x *GetThrottlerStatusResponse) GetRecentApps() map[string]*GetThrottlerSta } type ChangeTagsRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Tags map[string]string `protobuf:"bytes,1,rep,name=tags,proto3" json:"tags,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + Replace bool `protobuf:"varint,2,opt,name=replace,proto3" json:"replace,omitempty"` unknownFields protoimpl.UnknownFields - - Tags map[string]string `protobuf:"bytes,1,rep,name=tags,proto3" json:"tags,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - Replace bool `protobuf:"varint,2,opt,name=replace,proto3" json:"replace,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ChangeTagsRequest) Reset() { @@ -7697,11 +7601,10 @@ func (x *ChangeTagsRequest) GetReplace() bool { } type ChangeTagsResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Tags map[string]string `protobuf:"bytes,1,rep,name=tags,proto3" json:"tags,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` unknownFields protoimpl.UnknownFields - - Tags map[string]string `protobuf:"bytes,1,rep,name=tags,proto3" json:"tags,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + sizeCache protoimpl.SizeCache } func (x *ChangeTagsResponse) Reset() { @@ -7742,10 +7645,7 @@ func (x *ChangeTagsResponse) GetTags() map[string]string { } type ReadVReplicationWorkflowResponse_Stream struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Id int32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` Bls *binlogdata.BinlogSource `protobuf:"bytes,2,opt,name=bls,proto3" json:"bls,omitempty"` Pos string `protobuf:"bytes,3,opt,name=pos,proto3" json:"pos,omitempty"` @@ -7760,6 +7660,8 @@ type ReadVReplicationWorkflowResponse_Stream struct { TimeHeartbeat *vttime.Time `protobuf:"bytes,12,opt,name=time_heartbeat,json=timeHeartbeat,proto3" json:"time_heartbeat,omitempty"` TimeThrottled *vttime.Time `protobuf:"bytes,13,opt,name=time_throttled,json=timeThrottled,proto3" json:"time_throttled,omitempty"` ComponentThrottled string `protobuf:"bytes,14,opt,name=component_throttled,json=componentThrottled,proto3" json:"component_throttled,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ReadVReplicationWorkflowResponse_Stream) Reset() { @@ -7891,10 +7793,7 @@ func (x *ReadVReplicationWorkflowResponse_Stream) GetComponentThrottled() string } type CheckThrottlerResponse_Metric struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Name of the metric Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` // StatusCode is HTTP compliant response code (e.g. 200 for OK) @@ -7910,7 +7809,9 @@ type CheckThrottlerResponse_Metric struct { // Scope used in this check Scope string `protobuf:"bytes,7,opt,name=scope,proto3" json:"scope,omitempty"` // ResponseCode is the enum representation of the response - ResponseCode CheckThrottlerResponseCode `protobuf:"varint,8,opt,name=response_code,json=responseCode,proto3,enum=tabletmanagerdata.CheckThrottlerResponseCode" json:"response_code,omitempty"` + ResponseCode CheckThrottlerResponseCode `protobuf:"varint,8,opt,name=response_code,json=responseCode,proto3,enum=tabletmanagerdata.CheckThrottlerResponseCode" json:"response_code,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *CheckThrottlerResponse_Metric) Reset() { @@ -8000,12 +7901,11 @@ func (x *CheckThrottlerResponse_Metric) GetResponseCode() CheckThrottlerResponse } type GetThrottlerStatusResponse_MetricResult struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Value float64 `protobuf:"fixed64,1,opt,name=value,proto3" json:"value,omitempty"` + Error string `protobuf:"bytes,2,opt,name=error,proto3" json:"error,omitempty"` unknownFields protoimpl.UnknownFields - - Value float64 `protobuf:"fixed64,1,opt,name=value,proto3" json:"value,omitempty"` - Error string `protobuf:"bytes,2,opt,name=error,proto3" json:"error,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetThrottlerStatusResponse_MetricResult) Reset() { @@ -8053,12 +7953,11 @@ func (x *GetThrottlerStatusResponse_MetricResult) GetError() string { } type GetThrottlerStatusResponse_MetricHealth struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - LastHealthyAt *vttime.Time `protobuf:"bytes,1,opt,name=last_healthy_at,json=lastHealthyAt,proto3" json:"last_healthy_at,omitempty"` - SecondsSinceLastHealthy int64 `protobuf:"varint,2,opt,name=seconds_since_last_healthy,json=secondsSinceLastHealthy,proto3" json:"seconds_since_last_healthy,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + LastHealthyAt *vttime.Time `protobuf:"bytes,1,opt,name=last_healthy_at,json=lastHealthyAt,proto3" json:"last_healthy_at,omitempty"` + SecondsSinceLastHealthy int64 `protobuf:"varint,2,opt,name=seconds_since_last_healthy,json=secondsSinceLastHealthy,proto3" json:"seconds_since_last_healthy,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GetThrottlerStatusResponse_MetricHealth) Reset() { @@ -8106,14 +8005,13 @@ func (x *GetThrottlerStatusResponse_MetricHealth) GetSecondsSinceLastHealthy() i } type GetThrottlerStatusResponse_RecentApp struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - CheckedAt *vttime.Time `protobuf:"bytes,1,opt,name=checked_at,json=checkedAt,proto3" json:"checked_at,omitempty"` - StatusCode int32 `protobuf:"varint,2,opt,name=status_code,json=statusCode,proto3" json:"status_code,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + CheckedAt *vttime.Time `protobuf:"bytes,1,opt,name=checked_at,json=checkedAt,proto3" json:"checked_at,omitempty"` + StatusCode int32 `protobuf:"varint,2,opt,name=status_code,json=statusCode,proto3" json:"status_code,omitempty"` // ResponseCode is the enum representation of the response - ResponseCode CheckThrottlerResponseCode `protobuf:"varint,3,opt,name=response_code,json=responseCode,proto3,enum=tabletmanagerdata.CheckThrottlerResponseCode" json:"response_code,omitempty"` + ResponseCode CheckThrottlerResponseCode `protobuf:"varint,3,opt,name=response_code,json=responseCode,proto3,enum=tabletmanagerdata.CheckThrottlerResponseCode" json:"response_code,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GetThrottlerStatusResponse_RecentApp) Reset() { @@ -8169,7 +8067,7 @@ func (x *GetThrottlerStatusResponse_RecentApp) GetResponseCode() CheckThrottlerR var File_tabletmanagerdata_proto protoreflect.FileDescriptor -var file_tabletmanagerdata_proto_rawDesc = []byte{ +var file_tabletmanagerdata_proto_rawDesc = string([]byte{ 0x0a, 0x17, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x11, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x10, 0x62, 0x69, @@ -9354,16 +9252,16 @@ var file_tabletmanagerdata_proto_rawDesc = []byte{ 0x74, 0x65, 0x73, 0x73, 0x2f, 0x67, 0x6f, 0x2f, 0x76, 0x74, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x64, 0x61, 0x74, 0x61, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} +}) var ( file_tabletmanagerdata_proto_rawDescOnce sync.Once - file_tabletmanagerdata_proto_rawDescData = file_tabletmanagerdata_proto_rawDesc + file_tabletmanagerdata_proto_rawDescData []byte ) func file_tabletmanagerdata_proto_rawDescGZIP() []byte { file_tabletmanagerdata_proto_rawDescOnce.Do(func() { - file_tabletmanagerdata_proto_rawDescData = protoimpl.X.CompressGZIP(file_tabletmanagerdata_proto_rawDescData) + file_tabletmanagerdata_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_tabletmanagerdata_proto_rawDesc), len(file_tabletmanagerdata_proto_rawDesc))) }) return file_tabletmanagerdata_proto_rawDescData } @@ -9681,7 +9579,7 @@ func file_tabletmanagerdata_proto_init() { out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_tabletmanagerdata_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_tabletmanagerdata_proto_rawDesc), len(file_tabletmanagerdata_proto_rawDesc)), NumEnums: 2, NumMessages: 166, NumExtensions: 0, @@ -9693,7 +9591,6 @@ func file_tabletmanagerdata_proto_init() { MessageInfos: file_tabletmanagerdata_proto_msgTypes, }.Build() File_tabletmanagerdata_proto = out.File - file_tabletmanagerdata_proto_rawDesc = nil file_tabletmanagerdata_proto_goTypes = nil file_tabletmanagerdata_proto_depIdxs = nil } diff --git a/go/vt/proto/tabletmanagerdata/tabletmanagerdata_vtproto.pb.go b/go/vt/proto/tabletmanagerdata/tabletmanagerdata_vtproto.pb.go index f56895605ab..dc7f132ec2e 100644 --- a/go/vt/proto/tabletmanagerdata/tabletmanagerdata_vtproto.pb.go +++ b/go/vt/proto/tabletmanagerdata/tabletmanagerdata_vtproto.pb.go @@ -1,5 +1,5 @@ // Code generated by protoc-gen-go-vtproto. DO NOT EDIT. -// protoc-gen-go-vtproto version: v0.6.1-0.20241011083415-71c992bc3c87 +// protoc-gen-go-vtproto version: v0.6.1-0.20241121165744-79df5c4772f2 // source: tabletmanagerdata.proto package tabletmanagerdata diff --git a/go/vt/proto/tabletmanagerservice/tabletmanagerservice.pb.go b/go/vt/proto/tabletmanagerservice/tabletmanagerservice.pb.go index 7fc337a9da2..9b2db955f19 100644 --- a/go/vt/proto/tabletmanagerservice/tabletmanagerservice.pb.go +++ b/go/vt/proto/tabletmanagerservice/tabletmanagerservice.pb.go @@ -18,7 +18,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.35.1 +// protoc-gen-go v1.36.4 // protoc v3.21.3 // source: tabletmanagerservice.proto @@ -28,6 +28,7 @@ import ( protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" reflect "reflect" + unsafe "unsafe" tabletmanagerdata "vitess.io/vitess/go/vt/proto/tabletmanagerdata" ) @@ -40,7 +41,7 @@ const ( var File_tabletmanagerservice_proto protoreflect.FileDescriptor -var file_tabletmanagerservice_proto_rawDesc = []byte{ +var file_tabletmanagerservice_proto_rawDesc = string([]byte{ 0x0a, 0x1a, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x14, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x73, 0x65, 0x72, 0x76, 0x69, @@ -524,7 +525,7 @@ var file_tabletmanagerservice_proto_rawDesc = []byte{ 0x76, 0x74, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x74, 0x6d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} +}) var file_tabletmanagerservice_proto_goTypes = []any{ (*tabletmanagerdata.PingRequest)(nil), // 0: tabletmanagerdata.PingRequest @@ -813,7 +814,7 @@ func file_tabletmanagerservice_proto_init() { out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_tabletmanagerservice_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_tabletmanagerservice_proto_rawDesc), len(file_tabletmanagerservice_proto_rawDesc)), NumEnums: 0, NumMessages: 0, NumExtensions: 0, @@ -823,7 +824,6 @@ func file_tabletmanagerservice_proto_init() { DependencyIndexes: file_tabletmanagerservice_proto_depIdxs, }.Build() File_tabletmanagerservice_proto = out.File - file_tabletmanagerservice_proto_rawDesc = nil file_tabletmanagerservice_proto_goTypes = nil file_tabletmanagerservice_proto_depIdxs = nil } diff --git a/go/vt/proto/throttlerdata/throttlerdata.pb.go b/go/vt/proto/throttlerdata/throttlerdata.pb.go index 9a51319692f..fdbd091e45b 100644 --- a/go/vt/proto/throttlerdata/throttlerdata.pb.go +++ b/go/vt/proto/throttlerdata/throttlerdata.pb.go @@ -17,7 +17,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.35.1 +// protoc-gen-go v1.36.4 // protoc v3.21.3 // source: throttlerdata.proto @@ -28,6 +28,7 @@ import ( protoimpl "google.golang.org/protobuf/runtime/protoimpl" reflect "reflect" sync "sync" + unsafe "unsafe" ) const ( @@ -39,9 +40,9 @@ const ( // MaxRatesRequest is the payload for the MaxRates RPC. type MaxRatesRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *MaxRatesRequest) Reset() { @@ -76,13 +77,12 @@ func (*MaxRatesRequest) Descriptor() ([]byte, []int) { // MaxRatesResponse is returned by the MaxRates RPC. type MaxRatesResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // max_rates returns the max rate for each throttler. It's keyed by the // throttler name. - Rates map[string]int64 `protobuf:"bytes,1,rep,name=rates,proto3" json:"rates,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` + Rates map[string]int64 `protobuf:"bytes,1,rep,name=rates,proto3" json:"rates,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *MaxRatesResponse) Reset() { @@ -124,11 +124,10 @@ func (x *MaxRatesResponse) GetRates() map[string]int64 { // SetMaxRateRequest is the payload for the SetMaxRate RPC. type SetMaxRateRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Rate int64 `protobuf:"varint,1,opt,name=rate,proto3" json:"rate,omitempty"` unknownFields protoimpl.UnknownFields - - Rate int64 `protobuf:"varint,1,opt,name=rate,proto3" json:"rate,omitempty"` + sizeCache protoimpl.SizeCache } func (x *SetMaxRateRequest) Reset() { @@ -170,12 +169,11 @@ func (x *SetMaxRateRequest) GetRate() int64 { // SetMaxRateResponse is returned by the SetMaxRate RPC. type SetMaxRateResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // names is the list of throttler names which were updated. - Names []string `protobuf:"bytes,1,rep,name=names,proto3" json:"names,omitempty"` + Names []string `protobuf:"bytes,1,rep,name=names,proto3" json:"names,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *SetMaxRateResponse) Reset() { @@ -219,10 +217,7 @@ func (x *SetMaxRateResponse) GetNames() []string { // MaxReplicationLagModule which adaptively adjusts the throttling rate based on // the observed replication lag across all replicas. type Configuration struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // target_replication_lag_sec is the replication lag (in seconds) the // MaxReplicationLagModule tries to aim for. // If it is within the target, it tries to increase the throttler @@ -300,6 +295,8 @@ type Configuration struct { // rate must exceed 100*max_rate_approach_threshold for the throttler to increase the current // limit. MaxRateApproachThreshold float64 `protobuf:"fixed64,14,opt,name=max_rate_approach_threshold,json=maxRateApproachThreshold,proto3" json:"max_rate_approach_threshold,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Configuration) Reset() { @@ -432,13 +429,12 @@ func (x *Configuration) GetMaxRateApproachThreshold() float64 { // GetConfigurationRequest is the payload for the GetConfiguration RPC. type GetConfigurationRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // throttler_name specifies which throttler to select. If empty, all active // throttlers will be selected. ThrottlerName string `protobuf:"bytes,1,opt,name=throttler_name,json=throttlerName,proto3" json:"throttler_name,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GetConfigurationRequest) Reset() { @@ -480,13 +476,12 @@ func (x *GetConfigurationRequest) GetThrottlerName() string { // GetConfigurationResponse is returned by the GetConfiguration RPC. type GetConfigurationResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // max_rates returns the configurations for each throttler. // It's keyed by the throttler name. - Configurations map[string]*Configuration `protobuf:"bytes,1,rep,name=configurations,proto3" json:"configurations,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Configurations map[string]*Configuration `protobuf:"bytes,1,rep,name=configurations,proto3" json:"configurations,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GetConfigurationResponse) Reset() { @@ -528,10 +523,7 @@ func (x *GetConfigurationResponse) GetConfigurations() map[string]*Configuration // UpdateConfigurationRequest is the payload for the UpdateConfiguration RPC. type UpdateConfigurationRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // throttler_name specifies which throttler to update. If empty, all active // throttlers will be updated. ThrottlerName string `protobuf:"bytes,1,opt,name=throttler_name,json=throttlerName,proto3" json:"throttler_name,omitempty"` @@ -540,6 +532,8 @@ type UpdateConfigurationRequest struct { // copy_zero_values specifies whether fields with zero values should be copied // as well. CopyZeroValues bool `protobuf:"varint,3,opt,name=copy_zero_values,json=copyZeroValues,proto3" json:"copy_zero_values,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *UpdateConfigurationRequest) Reset() { @@ -595,12 +589,11 @@ func (x *UpdateConfigurationRequest) GetCopyZeroValues() bool { // UpdateConfigurationResponse is returned by the UpdateConfiguration RPC. type UpdateConfigurationResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // names is the list of throttler names which were updated. - Names []string `protobuf:"bytes,1,rep,name=names,proto3" json:"names,omitempty"` + Names []string `protobuf:"bytes,1,rep,name=names,proto3" json:"names,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *UpdateConfigurationResponse) Reset() { @@ -642,13 +635,12 @@ func (x *UpdateConfigurationResponse) GetNames() []string { // ResetConfigurationRequest is the payload for the ResetConfiguration RPC. type ResetConfigurationRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // throttler_name specifies which throttler to reset. If empty, all active // throttlers will be reset. ThrottlerName string `protobuf:"bytes,1,opt,name=throttler_name,json=throttlerName,proto3" json:"throttler_name,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ResetConfigurationRequest) Reset() { @@ -690,12 +682,11 @@ func (x *ResetConfigurationRequest) GetThrottlerName() string { // ResetConfigurationResponse is returned by the ResetConfiguration RPC. type ResetConfigurationResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // names is the list of throttler names which were updated. - Names []string `protobuf:"bytes,1,rep,name=names,proto3" json:"names,omitempty"` + Names []string `protobuf:"bytes,1,rep,name=names,proto3" json:"names,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ResetConfigurationResponse) Reset() { @@ -737,7 +728,7 @@ func (x *ResetConfigurationResponse) GetNames() []string { var File_throttlerdata_proto protoreflect.FileDescriptor -var file_throttlerdata_proto_rawDesc = []byte{ +var file_throttlerdata_proto_rawDesc = string([]byte{ 0x0a, 0x13, 0x74, 0x68, 0x72, 0x6f, 0x74, 0x74, 0x6c, 0x65, 0x72, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0d, 0x74, 0x68, 0x72, 0x6f, 0x74, 0x74, 0x6c, 0x65, 0x72, 0x64, 0x61, 0x74, 0x61, 0x22, 0x11, 0x0a, 0x0f, 0x4d, 0x61, 0x78, 0x52, 0x61, 0x74, 0x65, 0x73, @@ -851,16 +842,16 @@ var file_throttlerdata_proto_rawDesc = []byte{ 0x74, 0x65, 0x73, 0x73, 0x2f, 0x67, 0x6f, 0x2f, 0x76, 0x74, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x74, 0x68, 0x72, 0x6f, 0x74, 0x74, 0x6c, 0x65, 0x72, 0x64, 0x61, 0x74, 0x61, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} +}) var ( file_throttlerdata_proto_rawDescOnce sync.Once - file_throttlerdata_proto_rawDescData = file_throttlerdata_proto_rawDesc + file_throttlerdata_proto_rawDescData []byte ) func file_throttlerdata_proto_rawDescGZIP() []byte { file_throttlerdata_proto_rawDescOnce.Do(func() { - file_throttlerdata_proto_rawDescData = protoimpl.X.CompressGZIP(file_throttlerdata_proto_rawDescData) + file_throttlerdata_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_throttlerdata_proto_rawDesc), len(file_throttlerdata_proto_rawDesc))) }) return file_throttlerdata_proto_rawDescData } @@ -902,7 +893,7 @@ func file_throttlerdata_proto_init() { out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_throttlerdata_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_throttlerdata_proto_rawDesc), len(file_throttlerdata_proto_rawDesc)), NumEnums: 0, NumMessages: 13, NumExtensions: 0, @@ -913,7 +904,6 @@ func file_throttlerdata_proto_init() { MessageInfos: file_throttlerdata_proto_msgTypes, }.Build() File_throttlerdata_proto = out.File - file_throttlerdata_proto_rawDesc = nil file_throttlerdata_proto_goTypes = nil file_throttlerdata_proto_depIdxs = nil } diff --git a/go/vt/proto/throttlerdata/throttlerdata_vtproto.pb.go b/go/vt/proto/throttlerdata/throttlerdata_vtproto.pb.go index cdfb6ee66f8..870d23fe2a4 100644 --- a/go/vt/proto/throttlerdata/throttlerdata_vtproto.pb.go +++ b/go/vt/proto/throttlerdata/throttlerdata_vtproto.pb.go @@ -1,5 +1,5 @@ // Code generated by protoc-gen-go-vtproto. DO NOT EDIT. -// protoc-gen-go-vtproto version: v0.6.1-0.20241011083415-71c992bc3c87 +// protoc-gen-go-vtproto version: v0.6.1-0.20241121165744-79df5c4772f2 // source: throttlerdata.proto package throttlerdata diff --git a/go/vt/proto/throttlerservice/throttlerservice.pb.go b/go/vt/proto/throttlerservice/throttlerservice.pb.go index ffa3808cf6b..b5256ae3430 100644 --- a/go/vt/proto/throttlerservice/throttlerservice.pb.go +++ b/go/vt/proto/throttlerservice/throttlerservice.pb.go @@ -18,7 +18,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.35.1 +// protoc-gen-go v1.36.4 // protoc v3.21.3 // source: throttlerservice.proto @@ -28,6 +28,7 @@ import ( protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" reflect "reflect" + unsafe "unsafe" throttlerdata "vitess.io/vitess/go/vt/proto/throttlerdata" ) @@ -40,7 +41,7 @@ const ( var File_throttlerservice_proto protoreflect.FileDescriptor -var file_throttlerservice_proto_rawDesc = []byte{ +var file_throttlerservice_proto_rawDesc = string([]byte{ 0x0a, 0x16, 0x74, 0x68, 0x72, 0x6f, 0x74, 0x74, 0x6c, 0x65, 0x72, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x10, 0x74, 0x68, 0x72, 0x6f, 0x74, 0x74, 0x6c, 0x65, 0x72, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x1a, 0x13, 0x74, 0x68, 0x72, 0x6f, @@ -80,7 +81,7 @@ var file_throttlerservice_proto_rawDesc = []byte{ 0x69, 0x6f, 0x2f, 0x76, 0x69, 0x74, 0x65, 0x73, 0x73, 0x2f, 0x67, 0x6f, 0x2f, 0x76, 0x74, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x74, 0x68, 0x72, 0x6f, 0x74, 0x74, 0x6c, 0x65, 0x72, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} +}) var file_throttlerservice_proto_goTypes = []any{ (*throttlerdata.MaxRatesRequest)(nil), // 0: throttlerdata.MaxRatesRequest @@ -121,7 +122,7 @@ func file_throttlerservice_proto_init() { out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_throttlerservice_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_throttlerservice_proto_rawDesc), len(file_throttlerservice_proto_rawDesc)), NumEnums: 0, NumMessages: 0, NumExtensions: 0, @@ -131,7 +132,6 @@ func file_throttlerservice_proto_init() { DependencyIndexes: file_throttlerservice_proto_depIdxs, }.Build() File_throttlerservice_proto = out.File - file_throttlerservice_proto_rawDesc = nil file_throttlerservice_proto_goTypes = nil file_throttlerservice_proto_depIdxs = nil } diff --git a/go/vt/proto/topodata/cached_size.go b/go/vt/proto/topodata/cached_size.go index 3feead01bae..165c9ee4226 100644 --- a/go/vt/proto/topodata/cached_size.go +++ b/go/vt/proto/topodata/cached_size.go @@ -27,10 +27,6 @@ func (cached *KeyRange) CachedSize(alloc bool) int64 { if alloc { size += int64(96) } - // field unknownFields google.golang.org/protobuf/runtime/protoimpl.UnknownFields - { - size += hack.RuntimeAllocSize(int64(cap(cached.unknownFields))) - } // field Start []byte { size += hack.RuntimeAllocSize(int64(cap(cached.Start))) @@ -39,6 +35,10 @@ func (cached *KeyRange) CachedSize(alloc bool) int64 { { size += hack.RuntimeAllocSize(int64(cap(cached.End))) } + // field unknownFields google.golang.org/protobuf/runtime/protoimpl.UnknownFields + { + size += hack.RuntimeAllocSize(int64(cap(cached.unknownFields))) + } return size } func (cached *ThrottledAppRule) CachedSize(alloc bool) int64 { @@ -49,13 +49,13 @@ func (cached *ThrottledAppRule) CachedSize(alloc bool) int64 { if alloc { size += int64(80) } - // field unknownFields google.golang.org/protobuf/runtime/protoimpl.UnknownFields - { - size += hack.RuntimeAllocSize(int64(cap(cached.unknownFields))) - } // field Name string size += hack.RuntimeAllocSize(int64(len(cached.Name))) // field ExpiresAt *vitess.io/vitess/go/vt/proto/vttime.Time size += cached.ExpiresAt.CachedSize(true) + // field unknownFields google.golang.org/protobuf/runtime/protoimpl.UnknownFields + { + size += hack.RuntimeAllocSize(int64(cap(cached.unknownFields))) + } return size } diff --git a/go/vt/proto/topodata/topodata.pb.go b/go/vt/proto/topodata/topodata.pb.go index fb0d8ec0ab8..15c25dd3a31 100644 --- a/go/vt/proto/topodata/topodata.pb.go +++ b/go/vt/proto/topodata/topodata.pb.go @@ -20,7 +20,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.35.1 +// protoc-gen-go v1.36.4 // protoc v3.21.3 // source: topodata.proto @@ -31,6 +31,7 @@ import ( protoimpl "google.golang.org/protobuf/runtime/protoimpl" reflect "reflect" sync "sync" + unsafe "unsafe" vttime "vitess.io/vitess/go/vt/proto/vttime" ) @@ -244,12 +245,11 @@ func (ShardReplicationError_Type) EnumDescriptor() ([]byte, []int) { // KeyRange describes a range of sharding keys, when range-based // sharding is used. type KeyRange struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Start []byte `protobuf:"bytes,1,opt,name=start,proto3" json:"start,omitempty"` + End []byte `protobuf:"bytes,2,opt,name=end,proto3" json:"end,omitempty"` unknownFields protoimpl.UnknownFields - - Start []byte `protobuf:"bytes,1,opt,name=start,proto3" json:"start,omitempty"` - End []byte `protobuf:"bytes,2,opt,name=end,proto3" json:"end,omitempty"` + sizeCache protoimpl.SizeCache } func (x *KeyRange) Reset() { @@ -298,15 +298,14 @@ func (x *KeyRange) GetEnd() []byte { // TabletAlias is a globally unique tablet identifier. type TabletAlias struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // cell is the cell (or datacenter) the tablet is in Cell string `protobuf:"bytes,1,opt,name=cell,proto3" json:"cell,omitempty"` // uid is a unique id for this tablet within the shard // (this is the MySQL server id as well). - Uid uint32 `protobuf:"varint,2,opt,name=uid,proto3" json:"uid,omitempty"` + Uid uint32 `protobuf:"varint,2,opt,name=uid,proto3" json:"uid,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *TabletAlias) Reset() { @@ -355,10 +354,7 @@ func (x *TabletAlias) GetUid() uint32 { // Tablet represents information about a running instance of vttablet. type Tablet struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // alias is the unique name of the tablet. Alias *TabletAlias `protobuf:"bytes,1,opt,name=alias,proto3" json:"alias,omitempty"` // Fully qualified domain name of the host. @@ -369,7 +365,7 @@ type Tablet struct { // For accessing mysql port, use topoproto.MysqlPort to fetch, and // topoproto.SetMysqlPort to set. These wrappers will ensure // legacy behavior is supported. - PortMap map[string]int32 `protobuf:"bytes,4,rep,name=port_map,json=portMap,proto3" json:"port_map,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` + PortMap map[string]int32 `protobuf:"bytes,4,rep,name=port_map,json=portMap,proto3" json:"port_map,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"` // Keyspace name. Keyspace string `protobuf:"bytes,5,opt,name=keyspace,proto3" json:"keyspace,omitempty"` // Shard name. If range based sharding is used, it should match @@ -383,7 +379,7 @@ type Tablet struct { // normal "vt_" + keyspace. DbNameOverride string `protobuf:"bytes,9,opt,name=db_name_override,json=dbNameOverride,proto3" json:"db_name_override,omitempty"` // tablet tags - Tags map[string]string `protobuf:"bytes,10,rep,name=tags,proto3" json:"tags,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Tags map[string]string `protobuf:"bytes,10,rep,name=tags,proto3" json:"tags,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` // MySQL hostname. MysqlHostname string `protobuf:"bytes,12,opt,name=mysql_hostname,json=mysqlHostname,proto3" json:"mysql_hostname,omitempty"` // MySQL port. Use topoproto.MysqlPort and topoproto.SetMysqlPort @@ -401,6 +397,8 @@ type Tablet struct { PrimaryTermStartTime *vttime.Time `protobuf:"bytes,14,opt,name=primary_term_start_time,json=primaryTermStartTime,proto3" json:"primary_term_start_time,omitempty"` // default_conn_collation is the default connection collation used by this tablet. DefaultConnCollation uint32 `protobuf:"varint,16,opt,name=default_conn_collation,json=defaultConnCollation,proto3" json:"default_conn_collation,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Tablet) Reset() { @@ -526,10 +524,7 @@ func (x *Tablet) GetDefaultConnCollation() uint32 { // A Shard contains data about a subset of the data whithin a keyspace. type Shard struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // primary_alias is the tablet alias of the primary for the shard. // If it is unset, then there is no primary in this shard yet. // No lock is necessary to update this field, when for instance @@ -568,6 +563,8 @@ type Shard struct { // is_primary_serving sets whether this shard primary is serving traffic or not. // The keyspace lock is always taken when changing this. IsPrimaryServing bool `protobuf:"varint,7,opt,name=is_primary_serving,json=isPrimaryServing,proto3" json:"is_primary_serving,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Shard) Reset() { @@ -644,10 +641,7 @@ func (x *Shard) GetIsPrimaryServing() bool { // A Keyspace contains data about a keyspace. type Keyspace struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // keyspace_type will determine how this keyspace is treated by // vtgate / vschema. Normal keyspaces are routable by // any query. Snapshot keyspaces are only accessible @@ -671,6 +665,8 @@ type Keyspace struct { // used for various system metadata that is stored in each // tablet's mysqld instance. SidecarDbName string `protobuf:"bytes,10,opt,name=sidecar_db_name,json=sidecarDbName,proto3" json:"sidecar_db_name,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Keyspace) Reset() { @@ -748,13 +744,12 @@ func (x *Keyspace) GetSidecarDbName() string { // ShardReplication describes the MySQL replication relationships // whithin a cell. type ShardReplication struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Note there can be only one Node in this array // for a given tablet. - Nodes []*ShardReplication_Node `protobuf:"bytes,1,rep,name=nodes,proto3" json:"nodes,omitempty"` + Nodes []*ShardReplication_Node `protobuf:"bytes,1,rep,name=nodes,proto3" json:"nodes,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ShardReplication) Reset() { @@ -797,14 +792,13 @@ func (x *ShardReplication) GetNodes() []*ShardReplication_Node { // ShardReplicationError describes the error being fixed by // ShardReplicationFix. type ShardReplicationError struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Type is the category of problem being fixed. Type ShardReplicationError_Type `protobuf:"varint,1,opt,name=type,proto3,enum=topodata.ShardReplicationError_Type" json:"type,omitempty"` // TabletAlias is the tablet record that has the problem. - TabletAlias *TabletAlias `protobuf:"bytes,2,opt,name=tablet_alias,json=tabletAlias,proto3" json:"tablet_alias,omitempty"` + TabletAlias *TabletAlias `protobuf:"bytes,2,opt,name=tablet_alias,json=tabletAlias,proto3" json:"tablet_alias,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ShardReplicationError) Reset() { @@ -853,13 +847,12 @@ func (x *ShardReplicationError) GetTabletAlias() *TabletAlias { // ShardReference is used as a pointer from a SrvKeyspace to a Shard type ShardReference struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Copied from Shard. - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - KeyRange *KeyRange `protobuf:"bytes,2,opt,name=key_range,json=keyRange,proto3" json:"key_range,omitempty"` // Disable query serving in this shard + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + KeyRange *KeyRange `protobuf:"bytes,2,opt,name=key_range,json=keyRange,proto3" json:"key_range,omitempty"` // Disable query serving in this shard + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ShardReference) Reset() { @@ -908,15 +901,14 @@ func (x *ShardReference) GetKeyRange() *KeyRange { // ShardTabletControl is used as a pointer from a SrvKeyspace to a Shard type ShardTabletControl struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Copied from Shard. Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` KeyRange *KeyRange `protobuf:"bytes,2,opt,name=key_range,json=keyRange,proto3" json:"key_range,omitempty"` // Disable query serving in this shard QueryServiceDisabled bool `protobuf:"varint,3,opt,name=query_service_disabled,json=queryServiceDisabled,proto3" json:"query_service_disabled,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ShardTabletControl) Reset() { @@ -972,10 +964,7 @@ func (x *ShardTabletControl) GetQueryServiceDisabled() bool { // ThrottledAppRule defines an app-specific throttling rule, with expiration. type ThrottledAppRule struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Name of the app to be throttled, e.g. "vreplication" or "online-ddl" Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` // Ratio defines how much the app should be throttled, range [0.0...1.0]. 1.0 means fully throttled. 0.0 means not throttled at all. @@ -984,7 +973,9 @@ type ThrottledAppRule struct { // ExpiresAt is the time at which the rule expires. ExpiresAt *vttime.Time `protobuf:"bytes,3,opt,name=expires_at,json=expiresAt,proto3" json:"expires_at,omitempty"` // Exempt indicates the app should never be throttled, even if the throttler is, in general, throttling other apps. - Exempt bool `protobuf:"varint,4,opt,name=exempt,proto3" json:"exempt,omitempty"` + Exempt bool `protobuf:"varint,4,opt,name=exempt,proto3" json:"exempt,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ThrottledAppRule) Reset() { @@ -1046,10 +1037,7 @@ func (x *ThrottledAppRule) GetExempt() bool { } type ThrottlerConfig struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Enabled indicates that the throttler is actually checking state for // requests. When disabled, it automatically returns 200 OK for all // checks. @@ -1064,11 +1052,13 @@ type ThrottlerConfig struct { // should behave like a /check-self. CheckAsCheckSelf bool `protobuf:"varint,4,opt,name=check_as_check_self,json=checkAsCheckSelf,proto3" json:"check_as_check_self,omitempty"` // ThrottledApps is a map of rules for app-specific throttling - ThrottledApps map[string]*ThrottledAppRule `protobuf:"bytes,5,rep,name=throttled_apps,json=throttledApps,proto3" json:"throttled_apps,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + ThrottledApps map[string]*ThrottledAppRule `protobuf:"bytes,5,rep,name=throttled_apps,json=throttledApps,proto3" json:"throttled_apps,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` // AppCheckedMetrics maps app names to the list of metrics that should be checked for that app - AppCheckedMetrics map[string]*ThrottlerConfig_MetricNames `protobuf:"bytes,6,rep,name=app_checked_metrics,json=appCheckedMetrics,proto3" json:"app_checked_metrics,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + AppCheckedMetrics map[string]*ThrottlerConfig_MetricNames `protobuf:"bytes,6,rep,name=app_checked_metrics,json=appCheckedMetrics,proto3" json:"app_checked_metrics,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` // MetricThresholds maps metric names to the threshold values that should be used for that metric - MetricThresholds map[string]float64 `protobuf:"bytes,7,rep,name=metric_thresholds,json=metricThresholds,proto3" json:"metric_thresholds,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"fixed64,2,opt,name=value,proto3"` + MetricThresholds map[string]float64 `protobuf:"bytes,7,rep,name=metric_thresholds,json=metricThresholds,proto3" json:"metric_thresholds,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"fixed64,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ThrottlerConfig) Reset() { @@ -1152,10 +1142,7 @@ func (x *ThrottlerConfig) GetMetricThresholds() map[string]float64 { // SrvKeyspace is a rollup node for the keyspace itself. type SrvKeyspace struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The partitions this keyspace is serving, per tablet type. Partitions []*SrvKeyspace_KeyspacePartition `protobuf:"bytes,1,rep,name=partitions,proto3" json:"partitions,omitempty"` // ThrottlerConfig has the configuration for the tablet server's @@ -1163,6 +1150,8 @@ type SrvKeyspace struct { // shards and tablets. This is copied from the global keyspace // object. ThrottlerConfig *ThrottlerConfig `protobuf:"bytes,6,opt,name=throttler_config,json=throttlerConfig,proto3" json:"throttler_config,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *SrvKeyspace) Reset() { @@ -1213,10 +1202,7 @@ func (x *SrvKeyspace) GetThrottlerConfig() *ThrottlerConfig { // stored in the global topology server, and describe how to reach // local topology servers. type CellInfo struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // ServerAddress contains the address of the server for the cell. // The syntax of this field is topology implementation specific. // For instance, for Zookeeper, it is a comma-separated list of @@ -1224,7 +1210,9 @@ type CellInfo struct { ServerAddress string `protobuf:"bytes,1,opt,name=server_address,json=serverAddress,proto3" json:"server_address,omitempty"` // Root is the path to store data in. It is only used when talking // to server_address. - Root string `protobuf:"bytes,2,opt,name=root,proto3" json:"root,omitempty"` + Root string `protobuf:"bytes,2,opt,name=root,proto3" json:"root,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *CellInfo) Reset() { @@ -1273,12 +1261,11 @@ func (x *CellInfo) GetRoot() string { // CellsAlias type CellsAlias struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Cells that map to this alias - Cells []string `protobuf:"bytes,2,rep,name=cells,proto3" json:"cells,omitempty"` + Cells []string `protobuf:"bytes,2,rep,name=cells,proto3" json:"cells,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *CellsAlias) Reset() { @@ -1319,13 +1306,12 @@ func (x *CellsAlias) GetCells() []string { } type TopoConfig struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + TopoType string `protobuf:"bytes,1,opt,name=topo_type,json=topoType,proto3" json:"topo_type,omitempty"` + Server string `protobuf:"bytes,2,opt,name=server,proto3" json:"server,omitempty"` + Root string `protobuf:"bytes,3,opt,name=root,proto3" json:"root,omitempty"` unknownFields protoimpl.UnknownFields - - TopoType string `protobuf:"bytes,1,opt,name=topo_type,json=topoType,proto3" json:"topo_type,omitempty"` - Server string `protobuf:"bytes,2,opt,name=server,proto3" json:"server,omitempty"` - Root string `protobuf:"bytes,3,opt,name=root,proto3" json:"root,omitempty"` + sizeCache protoimpl.SizeCache } func (x *TopoConfig) Reset() { @@ -1380,11 +1366,10 @@ func (x *TopoConfig) GetRoot() string { } type ExternalVitessCluster struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + TopoConfig *TopoConfig `protobuf:"bytes,1,opt,name=topo_config,json=topoConfig,proto3" json:"topo_config,omitempty"` unknownFields protoimpl.UnknownFields - - TopoConfig *TopoConfig `protobuf:"bytes,1,opt,name=topo_config,json=topoConfig,proto3" json:"topo_config,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ExternalVitessCluster) Reset() { @@ -1426,11 +1411,10 @@ func (x *ExternalVitessCluster) GetTopoConfig() *TopoConfig { // ExternalClusters type ExternalClusters struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` VitessCluster []*ExternalVitessCluster `protobuf:"bytes,1,rep,name=vitess_cluster,json=vitessCluster,proto3" json:"vitess_cluster,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ExternalClusters) Reset() { @@ -1474,10 +1458,7 @@ func (x *ExternalClusters) GetVitessCluster() []*ExternalVitessCluster { // across shards. When this is used in a destination shard, the primary // of that shard will run filtered replication. type Shard_SourceShard struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Uid is the unique ID for this SourceShard object. Uid int32 `protobuf:"varint,1,opt,name=uid,proto3" json:"uid,omitempty"` // the source keyspace @@ -1487,7 +1468,9 @@ type Shard_SourceShard struct { // the source shard keyrange KeyRange *KeyRange `protobuf:"bytes,4,opt,name=key_range,json=keyRange,proto3" json:"key_range,omitempty"` // the source table list to replicate - Tables []string `protobuf:"bytes,5,rep,name=tables,proto3" json:"tables,omitempty"` + Tables []string `protobuf:"bytes,5,rep,name=tables,proto3" json:"tables,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Shard_SourceShard) Reset() { @@ -1557,17 +1540,16 @@ func (x *Shard_SourceShard) GetTables() []string { // TabletControl controls tablet's behavior type Shard_TabletControl struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // which tablet type is affected TabletType TabletType `protobuf:"varint,1,opt,name=tablet_type,json=tabletType,proto3,enum=topodata.TabletType" json:"tablet_type,omitempty"` Cells []string `protobuf:"bytes,2,rep,name=cells,proto3" json:"cells,omitempty"` DeniedTables []string `protobuf:"bytes,4,rep,name=denied_tables,json=deniedTables,proto3" json:"denied_tables,omitempty"` // frozen is set if we've started failing over traffic for // the primary. If set, this record should not be removed. - Frozen bool `protobuf:"varint,5,opt,name=frozen,proto3" json:"frozen,omitempty"` + Frozen bool `protobuf:"varint,5,opt,name=frozen,proto3" json:"frozen,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Shard_TabletControl) Reset() { @@ -1630,11 +1612,10 @@ func (x *Shard_TabletControl) GetFrozen() bool { // Node describes a tablet instance within the cell type ShardReplication_Node struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + TabletAlias *TabletAlias `protobuf:"bytes,1,opt,name=tablet_alias,json=tabletAlias,proto3" json:"tablet_alias,omitempty"` unknownFields protoimpl.UnknownFields - - TabletAlias *TabletAlias `protobuf:"bytes,1,opt,name=tablet_alias,json=tabletAlias,proto3" json:"tablet_alias,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ShardReplication_Node) Reset() { @@ -1675,11 +1656,10 @@ func (x *ShardReplication_Node) GetTabletAlias() *TabletAlias { } type ThrottlerConfig_MetricNames struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Names []string `protobuf:"bytes,1,rep,name=names,proto3" json:"names,omitempty"` unknownFields protoimpl.UnknownFields - - Names []string `protobuf:"bytes,1,rep,name=names,proto3" json:"names,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ThrottlerConfig_MetricNames) Reset() { @@ -1720,16 +1700,15 @@ func (x *ThrottlerConfig_MetricNames) GetNames() []string { } type SrvKeyspace_KeyspacePartition struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The type this partition applies to. ServedType TabletType `protobuf:"varint,1,opt,name=served_type,json=servedType,proto3,enum=topodata.TabletType" json:"served_type,omitempty"` // List of non-overlapping continuous shards sorted by range. ShardReferences []*ShardReference `protobuf:"bytes,2,rep,name=shard_references,json=shardReferences,proto3" json:"shard_references,omitempty"` // List of shard tablet controls ShardTabletControls []*ShardTabletControl `protobuf:"bytes,3,rep,name=shard_tablet_controls,json=shardTabletControls,proto3" json:"shard_tablet_controls,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *SrvKeyspace_KeyspacePartition) Reset() { @@ -1785,7 +1764,7 @@ func (x *SrvKeyspace_KeyspacePartition) GetShardTabletControls() []*ShardTabletC var File_topodata_proto protoreflect.FileDescriptor -var file_topodata_proto_rawDesc = []byte{ +var file_topodata_proto_rawDesc = string([]byte{ 0x0a, 0x0e, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x08, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x0c, 0x76, 0x74, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x32, 0x0a, 0x08, 0x4b, 0x65, 0x79, 0x52, @@ -2061,16 +2040,16 @@ var file_topodata_proto_rawDesc = []byte{ 0x73, 0x73, 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x69, 0x74, 0x65, 0x73, 0x73, 0x2f, 0x67, 0x6f, 0x2f, 0x76, 0x74, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x74, 0x6f, 0x70, 0x6f, 0x64, 0x61, 0x74, 0x61, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} +}) var ( file_topodata_proto_rawDescOnce sync.Once - file_topodata_proto_rawDescData = file_topodata_proto_rawDesc + file_topodata_proto_rawDescData []byte ) func file_topodata_proto_rawDescGZIP() []byte { file_topodata_proto_rawDescOnce.Do(func() { - file_topodata_proto_rawDescData = protoimpl.X.CompressGZIP(file_topodata_proto_rawDescData) + file_topodata_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_topodata_proto_rawDesc), len(file_topodata_proto_rawDesc))) }) return file_topodata_proto_rawDescData } @@ -2162,7 +2141,7 @@ func file_topodata_proto_init() { out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_topodata_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_topodata_proto_rawDesc), len(file_topodata_proto_rawDesc)), NumEnums: 3, NumMessages: 27, NumExtensions: 0, @@ -2174,7 +2153,6 @@ func file_topodata_proto_init() { MessageInfos: file_topodata_proto_msgTypes, }.Build() File_topodata_proto = out.File - file_topodata_proto_rawDesc = nil file_topodata_proto_goTypes = nil file_topodata_proto_depIdxs = nil } diff --git a/go/vt/proto/topodata/topodata_vtproto.pb.go b/go/vt/proto/topodata/topodata_vtproto.pb.go index 564a55ea82b..9c13a6f5882 100644 --- a/go/vt/proto/topodata/topodata_vtproto.pb.go +++ b/go/vt/proto/topodata/topodata_vtproto.pb.go @@ -1,5 +1,5 @@ // Code generated by protoc-gen-go-vtproto. DO NOT EDIT. -// protoc-gen-go-vtproto version: v0.6.1-0.20241011083415-71c992bc3c87 +// protoc-gen-go-vtproto version: v0.6.1-0.20241121165744-79df5c4772f2 // source: topodata.proto package topodata diff --git a/go/vt/proto/vschema/vschema.pb.go b/go/vt/proto/vschema/vschema.pb.go index c4348cae92d..60edc17e446 100644 --- a/go/vt/proto/vschema/vschema.pb.go +++ b/go/vt/proto/vschema/vschema.pb.go @@ -17,7 +17,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.35.1 +// protoc-gen-go v1.36.4 // protoc v3.21.3 // source: vschema.proto @@ -28,6 +28,7 @@ import ( protoimpl "google.golang.org/protobuf/runtime/protoimpl" reflect "reflect" sync "sync" + unsafe "unsafe" query "vitess.io/vitess/go/vt/proto/query" ) @@ -92,14 +93,13 @@ func (Keyspace_ForeignKeyMode) EnumDescriptor() ([]byte, []int) { // RoutingRules specify the high level routing rules for the VSchema. type RoutingRules struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // rules should ideally be a map. However protos dont't allow // repeated fields as elements of a map. So, we use a list // instead. - Rules []*RoutingRule `protobuf:"bytes,1,rep,name=rules,proto3" json:"rules,omitempty"` + Rules []*RoutingRule `protobuf:"bytes,1,rep,name=rules,proto3" json:"rules,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RoutingRules) Reset() { @@ -141,12 +141,11 @@ func (x *RoutingRules) GetRules() []*RoutingRule { // RoutingRule specifies a routing rule. type RoutingRule struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + FromTable string `protobuf:"bytes,1,opt,name=from_table,json=fromTable,proto3" json:"from_table,omitempty"` + ToTables []string `protobuf:"bytes,2,rep,name=to_tables,json=toTables,proto3" json:"to_tables,omitempty"` unknownFields protoimpl.UnknownFields - - FromTable string `protobuf:"bytes,1,opt,name=from_table,json=fromTable,proto3" json:"from_table,omitempty"` - ToTables []string `protobuf:"bytes,2,rep,name=to_tables,json=toTables,proto3" json:"to_tables,omitempty"` + sizeCache protoimpl.SizeCache } func (x *RoutingRule) Reset() { @@ -195,20 +194,19 @@ func (x *RoutingRule) GetToTables() []string { // Keyspace is the vschema for a keyspace. type Keyspace struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // If sharded is false, vindexes and tables are ignored. Sharded bool `protobuf:"varint,1,opt,name=sharded,proto3" json:"sharded,omitempty"` - Vindexes map[string]*Vindex `protobuf:"bytes,2,rep,name=vindexes,proto3" json:"vindexes,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - Tables map[string]*Table `protobuf:"bytes,3,rep,name=tables,proto3" json:"tables,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Vindexes map[string]*Vindex `protobuf:"bytes,2,rep,name=vindexes,proto3" json:"vindexes,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + Tables map[string]*Table `protobuf:"bytes,3,rep,name=tables,proto3" json:"tables,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` // If require_explicit_routing is true, vindexes and tables are not added to global routing RequireExplicitRouting bool `protobuf:"varint,4,opt,name=require_explicit_routing,json=requireExplicitRouting,proto3" json:"require_explicit_routing,omitempty"` // foreign_key_mode dictates how Vitess should handle foreign keys for this keyspace. ForeignKeyMode Keyspace_ForeignKeyMode `protobuf:"varint,5,opt,name=foreign_key_mode,json=foreignKeyMode,proto3,enum=vschema.Keyspace_ForeignKeyMode" json:"foreign_key_mode,omitempty"` // multi_tenant_mode specifies that the keyspace is multi-tenant. Currently used during migrations with MoveTables. MultiTenantSpec *MultiTenantSpec `protobuf:"bytes,6,opt,name=multi_tenant_spec,json=multiTenantSpec,proto3" json:"multi_tenant_spec,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Keyspace) Reset() { @@ -284,14 +282,13 @@ func (x *Keyspace) GetMultiTenantSpec() *MultiTenantSpec { } type MultiTenantSpec struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // tenant_column is the name of the column that specifies the tenant id. TenantIdColumnName string `protobuf:"bytes,1,opt,name=tenant_id_column_name,json=tenantIdColumnName,proto3" json:"tenant_id_column_name,omitempty"` // tenant_column_type is the type of the column that specifies the tenant id. TenantIdColumnType query.Type `protobuf:"varint,2,opt,name=tenant_id_column_type,json=tenantIdColumnType,proto3,enum=query.Type" json:"tenant_id_column_type,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *MultiTenantSpec) Reset() { @@ -340,10 +337,7 @@ func (x *MultiTenantSpec) GetTenantIdColumnType() query.Type { // Vindex is the vindex info for a Keyspace. type Vindex struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The type must match one of the predefined // (or plugged in) vindex names. Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"` @@ -351,12 +345,14 @@ type Vindex struct { // that must be defined as required by the // vindex constructors. The values can only // be strings. - Params map[string]string `protobuf:"bytes,2,rep,name=params,proto3" json:"params,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Params map[string]string `protobuf:"bytes,2,rep,name=params,proto3" json:"params,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` // A lookup vindex can have an owner table defined. // If so, rows in the lookup table are created or // deleted in sync with corresponding rows in the // owner table. - Owner string `protobuf:"bytes,3,opt,name=owner,proto3" json:"owner,omitempty"` + Owner string `protobuf:"bytes,3,opt,name=owner,proto3" json:"owner,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Vindex) Reset() { @@ -412,10 +408,7 @@ func (x *Vindex) GetOwner() string { // Table is the table info for a Keyspace. type Table struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // If the table is a sequence, type must be // "sequence". // @@ -442,7 +435,9 @@ type Table struct { // us to expand 'select *' expressions. ColumnListAuthoritative bool `protobuf:"varint,6,opt,name=column_list_authoritative,json=columnListAuthoritative,proto3" json:"column_list_authoritative,omitempty"` // reference tables may optionally indicate their source table. - Source string `protobuf:"bytes,7,opt,name=source,proto3" json:"source,omitempty"` + Source string `protobuf:"bytes,7,opt,name=source,proto3" json:"source,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Table) Reset() { @@ -526,16 +521,15 @@ func (x *Table) GetSource() string { // ColumnVindex is used to associate a column to a vindex. type ColumnVindex struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Legacy implementation, moving forward all vindexes should define a list of columns. Column string `protobuf:"bytes,1,opt,name=column,proto3" json:"column,omitempty"` // The name must match a vindex defined in Keyspace. Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` // List of columns that define this Vindex - Columns []string `protobuf:"bytes,3,rep,name=columns,proto3" json:"columns,omitempty"` + Columns []string `protobuf:"bytes,3,rep,name=columns,proto3" json:"columns,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ColumnVindex) Reset() { @@ -591,13 +585,12 @@ func (x *ColumnVindex) GetColumns() []string { // Autoincrement is used to designate a column as auto-inc. type AutoIncrement struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Column string `protobuf:"bytes,1,opt,name=column,proto3" json:"column,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Column string `protobuf:"bytes,1,opt,name=column,proto3" json:"column,omitempty"` // The sequence must match a table of type SEQUENCE. - Sequence string `protobuf:"bytes,2,opt,name=sequence,proto3" json:"sequence,omitempty"` + Sequence string `protobuf:"bytes,2,opt,name=sequence,proto3" json:"sequence,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *AutoIncrement) Reset() { @@ -646,20 +639,19 @@ func (x *AutoIncrement) GetSequence() string { // Column describes a column. type Column struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - Type query.Type `protobuf:"varint,2,opt,name=type,proto3,enum=query.Type" json:"type,omitempty"` - Invisible bool `protobuf:"varint,3,opt,name=invisible,proto3" json:"invisible,omitempty"` - Default string `protobuf:"bytes,4,opt,name=default,proto3" json:"default,omitempty"` - CollationName string `protobuf:"bytes,5,opt,name=collation_name,json=collationName,proto3" json:"collation_name,omitempty"` - Size int32 `protobuf:"varint,6,opt,name=size,proto3" json:"size,omitempty"` - Scale int32 `protobuf:"varint,7,opt,name=scale,proto3" json:"scale,omitempty"` - Nullable *bool `protobuf:"varint,8,opt,name=nullable,proto3,oneof" json:"nullable,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Type query.Type `protobuf:"varint,2,opt,name=type,proto3,enum=query.Type" json:"type,omitempty"` + Invisible bool `protobuf:"varint,3,opt,name=invisible,proto3" json:"invisible,omitempty"` + Default string `protobuf:"bytes,4,opt,name=default,proto3" json:"default,omitempty"` + CollationName string `protobuf:"bytes,5,opt,name=collation_name,json=collationName,proto3" json:"collation_name,omitempty"` + Size int32 `protobuf:"varint,6,opt,name=size,proto3" json:"size,omitempty"` + Scale int32 `protobuf:"varint,7,opt,name=scale,proto3" json:"scale,omitempty"` + Nullable *bool `protobuf:"varint,8,opt,name=nullable,proto3,oneof" json:"nullable,omitempty"` // values contains the list of values for an enum or set column. - Values []string `protobuf:"bytes,9,rep,name=values,proto3" json:"values,omitempty"` + Values []string `protobuf:"bytes,9,rep,name=values,proto3" json:"values,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Column) Reset() { @@ -757,16 +749,15 @@ func (x *Column) GetValues() []string { // SrvVSchema is the roll-up of all the Keyspace schema for a cell. type SrvVSchema struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // keyspaces is a map of keyspace name -> Keyspace object. - Keyspaces map[string]*Keyspace `protobuf:"bytes,1,rep,name=keyspaces,proto3" json:"keyspaces,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Keyspaces map[string]*Keyspace `protobuf:"bytes,1,rep,name=keyspaces,proto3" json:"keyspaces,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` RoutingRules *RoutingRules `protobuf:"bytes,2,opt,name=routing_rules,json=routingRules,proto3" json:"routing_rules,omitempty"` // table routing rules ShardRoutingRules *ShardRoutingRules `protobuf:"bytes,3,opt,name=shard_routing_rules,json=shardRoutingRules,proto3" json:"shard_routing_rules,omitempty"` KeyspaceRoutingRules *KeyspaceRoutingRules `protobuf:"bytes,4,opt,name=keyspace_routing_rules,json=keyspaceRoutingRules,proto3" json:"keyspace_routing_rules,omitempty"` MirrorRules *MirrorRules `protobuf:"bytes,5,opt,name=mirror_rules,json=mirrorRules,proto3" json:"mirror_rules,omitempty"` // mirror rules + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *SrvVSchema) Reset() { @@ -836,11 +827,10 @@ func (x *SrvVSchema) GetMirrorRules() *MirrorRules { // ShardRoutingRules specify the shard routing rules for the VSchema. type ShardRoutingRules struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Rules []*ShardRoutingRule `protobuf:"bytes,1,rep,name=rules,proto3" json:"rules,omitempty"` unknownFields protoimpl.UnknownFields - - Rules []*ShardRoutingRule `protobuf:"bytes,1,rep,name=rules,proto3" json:"rules,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ShardRoutingRules) Reset() { @@ -882,13 +872,12 @@ func (x *ShardRoutingRules) GetRules() []*ShardRoutingRule { // ShardRoutingRule specifies a routing rule. type ShardRoutingRule struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + FromKeyspace string `protobuf:"bytes,1,opt,name=from_keyspace,json=fromKeyspace,proto3" json:"from_keyspace,omitempty"` + ToKeyspace string `protobuf:"bytes,2,opt,name=to_keyspace,json=toKeyspace,proto3" json:"to_keyspace,omitempty"` + Shard string `protobuf:"bytes,3,opt,name=shard,proto3" json:"shard,omitempty"` unknownFields protoimpl.UnknownFields - - FromKeyspace string `protobuf:"bytes,1,opt,name=from_keyspace,json=fromKeyspace,proto3" json:"from_keyspace,omitempty"` - ToKeyspace string `protobuf:"bytes,2,opt,name=to_keyspace,json=toKeyspace,proto3" json:"to_keyspace,omitempty"` - Shard string `protobuf:"bytes,3,opt,name=shard,proto3" json:"shard,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ShardRoutingRule) Reset() { @@ -943,11 +932,10 @@ func (x *ShardRoutingRule) GetShard() string { } type KeyspaceRoutingRules struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Rules []*KeyspaceRoutingRule `protobuf:"bytes,1,rep,name=rules,proto3" json:"rules,omitempty"` unknownFields protoimpl.UnknownFields - - Rules []*KeyspaceRoutingRule `protobuf:"bytes,1,rep,name=rules,proto3" json:"rules,omitempty"` + sizeCache protoimpl.SizeCache } func (x *KeyspaceRoutingRules) Reset() { @@ -988,12 +976,11 @@ func (x *KeyspaceRoutingRules) GetRules() []*KeyspaceRoutingRule { } type KeyspaceRoutingRule struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + FromKeyspace string `protobuf:"bytes,1,opt,name=from_keyspace,json=fromKeyspace,proto3" json:"from_keyspace,omitempty"` + ToKeyspace string `protobuf:"bytes,2,opt,name=to_keyspace,json=toKeyspace,proto3" json:"to_keyspace,omitempty"` unknownFields protoimpl.UnknownFields - - FromKeyspace string `protobuf:"bytes,1,opt,name=from_keyspace,json=fromKeyspace,proto3" json:"from_keyspace,omitempty"` - ToKeyspace string `protobuf:"bytes,2,opt,name=to_keyspace,json=toKeyspace,proto3" json:"to_keyspace,omitempty"` + sizeCache protoimpl.SizeCache } func (x *KeyspaceRoutingRule) Reset() { @@ -1042,14 +1029,13 @@ func (x *KeyspaceRoutingRule) GetToKeyspace() string { // MirrorRules specify the high level mirror rules for the VSchema. type MirrorRules struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // rules should ideally be a map. However protos dont't allow // repeated fields as elements of a map. So, we use a list // instead. - Rules []*MirrorRule `protobuf:"bytes,1,rep,name=rules,proto3" json:"rules,omitempty"` + Rules []*MirrorRule `protobuf:"bytes,1,rep,name=rules,proto3" json:"rules,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *MirrorRules) Reset() { @@ -1091,13 +1077,12 @@ func (x *MirrorRules) GetRules() []*MirrorRule { // MirrorRule specifies a mirror rule. type MirrorRule struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + FromTable string `protobuf:"bytes,1,opt,name=from_table,json=fromTable,proto3" json:"from_table,omitempty"` + ToTable string `protobuf:"bytes,2,opt,name=to_table,json=toTable,proto3" json:"to_table,omitempty"` + Percent float32 `protobuf:"fixed32,3,opt,name=percent,proto3" json:"percent,omitempty"` unknownFields protoimpl.UnknownFields - - FromTable string `protobuf:"bytes,1,opt,name=from_table,json=fromTable,proto3" json:"from_table,omitempty"` - ToTable string `protobuf:"bytes,2,opt,name=to_table,json=toTable,proto3" json:"to_table,omitempty"` - Percent float32 `protobuf:"fixed32,3,opt,name=percent,proto3" json:"percent,omitempty"` + sizeCache protoimpl.SizeCache } func (x *MirrorRule) Reset() { @@ -1153,7 +1138,7 @@ func (x *MirrorRule) GetPercent() float32 { var File_vschema_proto protoreflect.FileDescriptor -var file_vschema_proto_rawDesc = []byte{ +var file_vschema_proto_rawDesc = string([]byte{ 0x0a, 0x0d, 0x76, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x07, 0x76, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x1a, 0x0b, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x3a, 0x0a, 0x0c, 0x52, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, @@ -1329,16 +1314,16 @@ var file_vschema_proto_rawDesc = []byte{ 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x69, 0x74, 0x65, 0x73, 0x73, 0x2f, 0x67, 0x6f, 0x2f, 0x76, 0x74, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x76, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} +}) var ( file_vschema_proto_rawDescOnce sync.Once - file_vschema_proto_rawDescData = file_vschema_proto_rawDesc + file_vschema_proto_rawDescData []byte ) func file_vschema_proto_rawDescGZIP() []byte { file_vschema_proto_rawDescOnce.Do(func() { - file_vschema_proto_rawDescData = protoimpl.X.CompressGZIP(file_vschema_proto_rawDescData) + file_vschema_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_vschema_proto_rawDesc), len(file_vschema_proto_rawDesc))) }) return file_vschema_proto_rawDescData } @@ -1409,7 +1394,7 @@ func file_vschema_proto_init() { out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_vschema_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_vschema_proto_rawDesc), len(file_vschema_proto_rawDesc)), NumEnums: 1, NumMessages: 20, NumExtensions: 0, @@ -1421,7 +1406,6 @@ func file_vschema_proto_init() { MessageInfos: file_vschema_proto_msgTypes, }.Build() File_vschema_proto = out.File - file_vschema_proto_rawDesc = nil file_vschema_proto_goTypes = nil file_vschema_proto_depIdxs = nil } diff --git a/go/vt/proto/vschema/vschema_vtproto.pb.go b/go/vt/proto/vschema/vschema_vtproto.pb.go index a970ccf49c6..f2b0410d4af 100644 --- a/go/vt/proto/vschema/vschema_vtproto.pb.go +++ b/go/vt/proto/vschema/vschema_vtproto.pb.go @@ -1,5 +1,5 @@ // Code generated by protoc-gen-go-vtproto. DO NOT EDIT. -// protoc-gen-go-vtproto version: v0.6.1-0.20241011083415-71c992bc3c87 +// protoc-gen-go-vtproto version: v0.6.1-0.20241121165744-79df5c4772f2 // source: vschema.proto package vschema diff --git a/go/vt/proto/vtadmin/vtadmin.pb.go b/go/vt/proto/vtadmin/vtadmin.pb.go index 8b6a6997c8d..642c8278202 100644 --- a/go/vt/proto/vtadmin/vtadmin.pb.go +++ b/go/vt/proto/vtadmin/vtadmin.pb.go @@ -17,7 +17,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.35.1 +// protoc-gen-go v1.36.4 // protoc v3.21.3 // source: vtadmin.proto @@ -28,6 +28,7 @@ import ( protoimpl "google.golang.org/protobuf/runtime/protoimpl" reflect "reflect" sync "sync" + unsafe "unsafe" logutil "vitess.io/vitess/go/vt/proto/logutil" mysqlctl "vitess.io/vitess/go/vt/proto/mysqlctl" tabletmanagerdata "vitess.io/vitess/go/vt/proto/tabletmanagerdata" @@ -94,12 +95,11 @@ func (Tablet_ServingState) EnumDescriptor() ([]byte, []int) { // Cluster represents information about a Vitess cluster. type Cluster struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` unknownFields protoimpl.UnknownFields - - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + sizeCache protoimpl.SizeCache } func (x *Cluster) Reset() { @@ -147,12 +147,11 @@ func (x *Cluster) GetName() string { } type ClusterBackup struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Cluster *Cluster `protobuf:"bytes,1,opt,name=cluster,proto3" json:"cluster,omitempty"` + Backup *mysqlctl.BackupInfo `protobuf:"bytes,2,opt,name=backup,proto3" json:"backup,omitempty"` unknownFields protoimpl.UnknownFields - - Cluster *Cluster `protobuf:"bytes,1,opt,name=cluster,proto3" json:"cluster,omitempty"` - Backup *mysqlctl.BackupInfo `protobuf:"bytes,2,opt,name=backup,proto3" json:"backup,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ClusterBackup) Reset() { @@ -200,12 +199,11 @@ func (x *ClusterBackup) GetBackup() *mysqlctl.BackupInfo { } type ClusterCellsAliases struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Cluster *Cluster `protobuf:"bytes,1,opt,name=cluster,proto3" json:"cluster,omitempty"` + Aliases map[string]*topodata.CellsAlias `protobuf:"bytes,2,rep,name=aliases,proto3" json:"aliases,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` unknownFields protoimpl.UnknownFields - - Cluster *Cluster `protobuf:"bytes,1,opt,name=cluster,proto3" json:"cluster,omitempty"` - Aliases map[string]*topodata.CellsAlias `protobuf:"bytes,2,rep,name=aliases,proto3" json:"aliases,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + sizeCache protoimpl.SizeCache } func (x *ClusterCellsAliases) Reset() { @@ -253,16 +251,15 @@ func (x *ClusterCellsAliases) GetAliases() map[string]*topodata.CellsAlias { } type ClusterCellInfo struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Cluster *Cluster `protobuf:"bytes,1,opt,name=cluster,proto3" json:"cluster,omitempty"` - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Cluster *Cluster `protobuf:"bytes,1,opt,name=cluster,proto3" json:"cluster,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` // CellInfo contains the data for the cell. // // It may be nil if the GetCellsInfosRequest specified NamesOnly. - CellInfo *topodata.CellInfo `protobuf:"bytes,3,opt,name=cell_info,json=cellInfo,proto3" json:"cell_info,omitempty"` + CellInfo *topodata.CellInfo `protobuf:"bytes,3,opt,name=cell_info,json=cellInfo,proto3" json:"cell_info,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ClusterCellInfo) Reset() { @@ -317,14 +314,13 @@ func (x *ClusterCellInfo) GetCellInfo() *topodata.CellInfo { } type ClusterShardReplicationPosition struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Cluster *Cluster `protobuf:"bytes,1,opt,name=cluster,proto3" json:"cluster,omitempty"` + Keyspace string `protobuf:"bytes,2,opt,name=keyspace,proto3" json:"keyspace,omitempty"` + Shard string `protobuf:"bytes,3,opt,name=shard,proto3" json:"shard,omitempty"` + PositionInfo *vtctldata.ShardReplicationPositionsResponse `protobuf:"bytes,4,opt,name=position_info,json=positionInfo,proto3" json:"position_info,omitempty"` unknownFields protoimpl.UnknownFields - - Cluster *Cluster `protobuf:"bytes,1,opt,name=cluster,proto3" json:"cluster,omitempty"` - Keyspace string `protobuf:"bytes,2,opt,name=keyspace,proto3" json:"keyspace,omitempty"` - Shard string `protobuf:"bytes,3,opt,name=shard,proto3" json:"shard,omitempty"` - PositionInfo *vtctldata.ShardReplicationPositionsResponse `protobuf:"bytes,4,opt,name=position_info,json=positionInfo,proto3" json:"position_info,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ClusterShardReplicationPosition) Reset() { @@ -386,14 +382,13 @@ func (x *ClusterShardReplicationPosition) GetPositionInfo() *vtctldata.ShardRepl } type ClusterWorkflows struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Workflows []*Workflow `protobuf:"bytes,1,rep,name=workflows,proto3" json:"workflows,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Workflows []*Workflow `protobuf:"bytes,1,rep,name=workflows,proto3" json:"workflows,omitempty"` // Warnings is a list of non-fatal errors encountered when fetching // workflows for a particular cluster. - Warnings []string `protobuf:"bytes,2,rep,name=warnings,proto3" json:"warnings,omitempty"` + Warnings []string `protobuf:"bytes,2,rep,name=warnings,proto3" json:"warnings,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ClusterWorkflows) Reset() { @@ -443,13 +438,12 @@ func (x *ClusterWorkflows) GetWarnings() []string { // Keyspace represents information about a keyspace in a particular Vitess // cluster. type Keyspace struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Cluster *Cluster `protobuf:"bytes,1,opt,name=cluster,proto3" json:"cluster,omitempty"` + Keyspace *vtctldata.Keyspace `protobuf:"bytes,2,opt,name=keyspace,proto3" json:"keyspace,omitempty"` + Shards map[string]*vtctldata.Shard `protobuf:"bytes,3,rep,name=shards,proto3" json:"shards,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` unknownFields protoimpl.UnknownFields - - Cluster *Cluster `protobuf:"bytes,1,opt,name=cluster,proto3" json:"cluster,omitempty"` - Keyspace *vtctldata.Keyspace `protobuf:"bytes,2,opt,name=keyspace,proto3" json:"keyspace,omitempty"` - Shards map[string]*vtctldata.Shard `protobuf:"bytes,3,rep,name=shards,proto3" json:"shards,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + sizeCache protoimpl.SizeCache } func (x *Keyspace) Reset() { @@ -504,15 +498,14 @@ func (x *Keyspace) GetShards() map[string]*vtctldata.Shard { } type Schema struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Cluster *Cluster `protobuf:"bytes,1,opt,name=cluster,proto3" json:"cluster,omitempty"` Keyspace string `protobuf:"bytes,2,opt,name=keyspace,proto3" json:"keyspace,omitempty"` TableDefinitions []*tabletmanagerdata.TableDefinition `protobuf:"bytes,3,rep,name=table_definitions,json=tableDefinitions,proto3" json:"table_definitions,omitempty"` // TableSizes is a mapping of table name to TableSize information. - TableSizes map[string]*Schema_TableSize `protobuf:"bytes,4,rep,name=table_sizes,json=tableSizes,proto3" json:"table_sizes,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + TableSizes map[string]*Schema_TableSize `protobuf:"bytes,4,rep,name=table_sizes,json=tableSizes,proto3" json:"table_sizes,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Schema) Reset() { @@ -574,12 +567,11 @@ func (x *Schema) GetTableSizes() map[string]*Schema_TableSize { } type SchemaMigration struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Cluster *Cluster `protobuf:"bytes,1,opt,name=cluster,proto3" json:"cluster,omitempty"` SchemaMigration *vtctldata.SchemaMigration `protobuf:"bytes,2,opt,name=schema_migration,json=schemaMigration,proto3" json:"schema_migration,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *SchemaMigration) Reset() { @@ -629,12 +621,11 @@ func (x *SchemaMigration) GetSchemaMigration() *vtctldata.SchemaMigration { // Shard groups the vtctldata information about a shard record together with // the Vitess cluster it belongs to. type Shard struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Cluster *Cluster `protobuf:"bytes,1,opt,name=cluster,proto3" json:"cluster,omitempty"` + Shard *vtctldata.Shard `protobuf:"bytes,2,opt,name=shard,proto3" json:"shard,omitempty"` unknownFields protoimpl.UnknownFields - - Cluster *Cluster `protobuf:"bytes,1,opt,name=cluster,proto3" json:"cluster,omitempty"` - Shard *vtctldata.Shard `protobuf:"bytes,2,opt,name=shard,proto3" json:"shard,omitempty"` + sizeCache protoimpl.SizeCache } func (x *Shard) Reset() { @@ -682,13 +673,12 @@ func (x *Shard) GetShard() *vtctldata.Shard { } type SrvVSchema struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Cell string `protobuf:"bytes,1,opt,name=cell,proto3" json:"cell,omitempty"` + Cluster *Cluster `protobuf:"bytes,2,opt,name=cluster,proto3" json:"cluster,omitempty"` + SrvVSchema *vschema.SrvVSchema `protobuf:"bytes,3,opt,name=srv_v_schema,json=srvVSchema,proto3" json:"srv_v_schema,omitempty"` unknownFields protoimpl.UnknownFields - - Cell string `protobuf:"bytes,1,opt,name=cell,proto3" json:"cell,omitempty"` - Cluster *Cluster `protobuf:"bytes,2,opt,name=cluster,proto3" json:"cluster,omitempty"` - SrvVSchema *vschema.SrvVSchema `protobuf:"bytes,3,opt,name=srv_v_schema,json=srvVSchema,proto3" json:"srv_v_schema,omitempty"` + sizeCache protoimpl.SizeCache } func (x *SrvVSchema) Reset() { @@ -745,14 +735,13 @@ func (x *SrvVSchema) GetSrvVSchema() *vschema.SrvVSchema { // Tablet groups the topo information of a tablet together with the Vitess // cluster it belongs to. type Tablet struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Cluster *Cluster `protobuf:"bytes,1,opt,name=cluster,proto3" json:"cluster,omitempty"` + Tablet *topodata.Tablet `protobuf:"bytes,2,opt,name=tablet,proto3" json:"tablet,omitempty"` + State Tablet_ServingState `protobuf:"varint,3,opt,name=state,proto3,enum=vtadmin.Tablet_ServingState" json:"state,omitempty"` + FQDN string `protobuf:"bytes,4,opt,name=FQDN,proto3" json:"FQDN,omitempty"` unknownFields protoimpl.UnknownFields - - Cluster *Cluster `protobuf:"bytes,1,opt,name=cluster,proto3" json:"cluster,omitempty"` - Tablet *topodata.Tablet `protobuf:"bytes,2,opt,name=tablet,proto3" json:"tablet,omitempty"` - State Tablet_ServingState `protobuf:"varint,3,opt,name=state,proto3,enum=vtadmin.Tablet_ServingState" json:"state,omitempty"` - FQDN string `protobuf:"bytes,4,opt,name=FQDN,proto3" json:"FQDN,omitempty"` + sizeCache protoimpl.SizeCache } func (x *Tablet) Reset() { @@ -815,14 +804,13 @@ func (x *Tablet) GetFQDN() string { // VSchema represents the vschema for a keyspace in the cluster it belongs to. type VSchema struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Cluster *Cluster `protobuf:"bytes,1,opt,name=cluster,proto3" json:"cluster,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Cluster *Cluster `protobuf:"bytes,1,opt,name=cluster,proto3" json:"cluster,omitempty"` // Name is the name of the keyspace this VSchema is for. - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - VSchema *vschema.Keyspace `protobuf:"bytes,3,opt,name=v_schema,json=vSchema,proto3" json:"v_schema,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + VSchema *vschema.Keyspace `protobuf:"bytes,3,opt,name=v_schema,json=vSchema,proto3" json:"v_schema,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *VSchema) Reset() { @@ -878,13 +866,12 @@ func (x *VSchema) GetVSchema() *vschema.Keyspace { // Vtctld represents information about a single Vtctld host. type Vtctld struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Hostname string `protobuf:"bytes,1,opt,name=hostname,proto3" json:"hostname,omitempty"` + Cluster *Cluster `protobuf:"bytes,2,opt,name=cluster,proto3" json:"cluster,omitempty"` + FQDN string `protobuf:"bytes,3,opt,name=FQDN,proto3" json:"FQDN,omitempty"` unknownFields protoimpl.UnknownFields - - Hostname string `protobuf:"bytes,1,opt,name=hostname,proto3" json:"hostname,omitempty"` - Cluster *Cluster `protobuf:"bytes,2,opt,name=cluster,proto3" json:"cluster,omitempty"` - FQDN string `protobuf:"bytes,3,opt,name=FQDN,proto3" json:"FQDN,omitempty"` + sizeCache protoimpl.SizeCache } func (x *Vtctld) Reset() { @@ -940,10 +927,7 @@ func (x *Vtctld) GetFQDN() string { // VTGate represents information about a single VTGate host. type VTGate struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Hostname is the shortname of the VTGate. Hostname string `protobuf:"bytes,1,opt,name=hostname,proto3" json:"hostname,omitempty"` // Pool is group the VTGate serves queries for. Some deployments segment @@ -955,8 +939,10 @@ type VTGate struct { // Cluster is the cluster the VTGate serves. Cluster *Cluster `protobuf:"bytes,4,opt,name=cluster,proto3" json:"cluster,omitempty"` // Keyspaces is the list of keyspaces-to-watch for the VTGate. - Keyspaces []string `protobuf:"bytes,5,rep,name=keyspaces,proto3" json:"keyspaces,omitempty"` - FQDN string `protobuf:"bytes,6,opt,name=FQDN,proto3" json:"FQDN,omitempty"` + Keyspaces []string `protobuf:"bytes,5,rep,name=keyspaces,proto3" json:"keyspaces,omitempty"` + FQDN string `protobuf:"bytes,6,opt,name=FQDN,proto3" json:"FQDN,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *VTGate) Reset() { @@ -1032,13 +1018,12 @@ func (x *VTGate) GetFQDN() string { } type Workflow struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Cluster *Cluster `protobuf:"bytes,1,opt,name=cluster,proto3" json:"cluster,omitempty"` + Keyspace string `protobuf:"bytes,2,opt,name=keyspace,proto3" json:"keyspace,omitempty"` + Workflow *vtctldata.Workflow `protobuf:"bytes,3,opt,name=workflow,proto3" json:"workflow,omitempty"` unknownFields protoimpl.UnknownFields - - Cluster *Cluster `protobuf:"bytes,1,opt,name=cluster,proto3" json:"cluster,omitempty"` - Keyspace string `protobuf:"bytes,2,opt,name=keyspace,proto3" json:"keyspace,omitempty"` - Workflow *vtctldata.Workflow `protobuf:"bytes,3,opt,name=workflow,proto3" json:"workflow,omitempty"` + sizeCache protoimpl.SizeCache } func (x *Workflow) Reset() { @@ -1093,12 +1078,11 @@ func (x *Workflow) GetWorkflow() *vtctldata.Workflow { } type WorkflowDeleteRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + ClusterId string `protobuf:"bytes,1,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"` + Request *vtctldata.WorkflowDeleteRequest `protobuf:"bytes,2,opt,name=request,proto3" json:"request,omitempty"` unknownFields protoimpl.UnknownFields - - ClusterId string `protobuf:"bytes,1,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"` - Request *vtctldata.WorkflowDeleteRequest `protobuf:"bytes,2,opt,name=request,proto3" json:"request,omitempty"` + sizeCache protoimpl.SizeCache } func (x *WorkflowDeleteRequest) Reset() { @@ -1146,12 +1130,11 @@ func (x *WorkflowDeleteRequest) GetRequest() *vtctldata.WorkflowDeleteRequest { } type WorkflowSwitchTrafficRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + ClusterId string `protobuf:"bytes,1,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"` + Request *vtctldata.WorkflowSwitchTrafficRequest `protobuf:"bytes,2,opt,name=request,proto3" json:"request,omitempty"` unknownFields protoimpl.UnknownFields - - ClusterId string `protobuf:"bytes,1,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"` - Request *vtctldata.WorkflowSwitchTrafficRequest `protobuf:"bytes,2,opt,name=request,proto3" json:"request,omitempty"` + sizeCache protoimpl.SizeCache } func (x *WorkflowSwitchTrafficRequest) Reset() { @@ -1199,16 +1182,15 @@ func (x *WorkflowSwitchTrafficRequest) GetRequest() *vtctldata.WorkflowSwitchTra } type ApplySchemaRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - ClusterId string `protobuf:"bytes,1,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + ClusterId string `protobuf:"bytes,1,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"` // Request.Sql will be overriden by this Sql field. Sql string `protobuf:"bytes,2,opt,name=sql,proto3" json:"sql,omitempty"` // Request.CallerId will be overriden by this CallerId field. - CallerId string `protobuf:"bytes,3,opt,name=caller_id,json=callerId,proto3" json:"caller_id,omitempty"` - Request *vtctldata.ApplySchemaRequest `protobuf:"bytes,4,opt,name=request,proto3" json:"request,omitempty"` + CallerId string `protobuf:"bytes,3,opt,name=caller_id,json=callerId,proto3" json:"caller_id,omitempty"` + Request *vtctldata.ApplySchemaRequest `protobuf:"bytes,4,opt,name=request,proto3" json:"request,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ApplySchemaRequest) Reset() { @@ -1270,12 +1252,11 @@ func (x *ApplySchemaRequest) GetRequest() *vtctldata.ApplySchemaRequest { } type CancelSchemaMigrationRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + ClusterId string `protobuf:"bytes,1,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"` + Request *vtctldata.CancelSchemaMigrationRequest `protobuf:"bytes,2,opt,name=request,proto3" json:"request,omitempty"` unknownFields protoimpl.UnknownFields - - ClusterId string `protobuf:"bytes,1,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"` - Request *vtctldata.CancelSchemaMigrationRequest `protobuf:"bytes,2,opt,name=request,proto3" json:"request,omitempty"` + sizeCache protoimpl.SizeCache } func (x *CancelSchemaMigrationRequest) Reset() { @@ -1323,12 +1304,11 @@ func (x *CancelSchemaMigrationRequest) GetRequest() *vtctldata.CancelSchemaMigra } type CleanupSchemaMigrationRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + ClusterId string `protobuf:"bytes,1,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"` + Request *vtctldata.CleanupSchemaMigrationRequest `protobuf:"bytes,2,opt,name=request,proto3" json:"request,omitempty"` unknownFields protoimpl.UnknownFields - - ClusterId string `protobuf:"bytes,1,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"` - Request *vtctldata.CleanupSchemaMigrationRequest `protobuf:"bytes,2,opt,name=request,proto3" json:"request,omitempty"` + sizeCache protoimpl.SizeCache } func (x *CleanupSchemaMigrationRequest) Reset() { @@ -1376,12 +1356,11 @@ func (x *CleanupSchemaMigrationRequest) GetRequest() *vtctldata.CleanupSchemaMig } type CompleteSchemaMigrationRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + ClusterId string `protobuf:"bytes,1,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"` + Request *vtctldata.CompleteSchemaMigrationRequest `protobuf:"bytes,2,opt,name=request,proto3" json:"request,omitempty"` unknownFields protoimpl.UnknownFields - - ClusterId string `protobuf:"bytes,1,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"` - Request *vtctldata.CompleteSchemaMigrationRequest `protobuf:"bytes,2,opt,name=request,proto3" json:"request,omitempty"` + sizeCache protoimpl.SizeCache } func (x *CompleteSchemaMigrationRequest) Reset() { @@ -1429,12 +1408,11 @@ func (x *CompleteSchemaMigrationRequest) GetRequest() *vtctldata.CompleteSchemaM } type ConcludeTransactionRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + ClusterId string `protobuf:"bytes,1,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"` + Dtid string `protobuf:"bytes,2,opt,name=dtid,proto3" json:"dtid,omitempty"` unknownFields protoimpl.UnknownFields - - ClusterId string `protobuf:"bytes,1,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"` - Dtid string `protobuf:"bytes,2,opt,name=dtid,proto3" json:"dtid,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ConcludeTransactionRequest) Reset() { @@ -1482,12 +1460,11 @@ func (x *ConcludeTransactionRequest) GetDtid() string { } type CreateKeyspaceRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + ClusterId string `protobuf:"bytes,1,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"` + Options *vtctldata.CreateKeyspaceRequest `protobuf:"bytes,2,opt,name=options,proto3" json:"options,omitempty"` unknownFields protoimpl.UnknownFields - - ClusterId string `protobuf:"bytes,1,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"` - Options *vtctldata.CreateKeyspaceRequest `protobuf:"bytes,2,opt,name=options,proto3" json:"options,omitempty"` + sizeCache protoimpl.SizeCache } func (x *CreateKeyspaceRequest) Reset() { @@ -1535,11 +1512,10 @@ func (x *CreateKeyspaceRequest) GetOptions() *vtctldata.CreateKeyspaceRequest { } type CreateKeyspaceResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Keyspace *Keyspace `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"` unknownFields protoimpl.UnknownFields - - Keyspace *Keyspace `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"` + sizeCache protoimpl.SizeCache } func (x *CreateKeyspaceResponse) Reset() { @@ -1580,12 +1556,11 @@ func (x *CreateKeyspaceResponse) GetKeyspace() *Keyspace { } type CreateShardRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + ClusterId string `protobuf:"bytes,1,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"` + Options *vtctldata.CreateShardRequest `protobuf:"bytes,2,opt,name=options,proto3" json:"options,omitempty"` unknownFields protoimpl.UnknownFields - - ClusterId string `protobuf:"bytes,1,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"` - Options *vtctldata.CreateShardRequest `protobuf:"bytes,2,opt,name=options,proto3" json:"options,omitempty"` + sizeCache protoimpl.SizeCache } func (x *CreateShardRequest) Reset() { @@ -1633,12 +1608,11 @@ func (x *CreateShardRequest) GetOptions() *vtctldata.CreateShardRequest { } type DeleteKeyspaceRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + ClusterId string `protobuf:"bytes,1,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"` + Options *vtctldata.DeleteKeyspaceRequest `protobuf:"bytes,2,opt,name=options,proto3" json:"options,omitempty"` unknownFields protoimpl.UnknownFields - - ClusterId string `protobuf:"bytes,1,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"` - Options *vtctldata.DeleteKeyspaceRequest `protobuf:"bytes,2,opt,name=options,proto3" json:"options,omitempty"` + sizeCache protoimpl.SizeCache } func (x *DeleteKeyspaceRequest) Reset() { @@ -1686,12 +1660,11 @@ func (x *DeleteKeyspaceRequest) GetOptions() *vtctldata.DeleteKeyspaceRequest { } type DeleteShardsRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + ClusterId string `protobuf:"bytes,1,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"` + Options *vtctldata.DeleteShardsRequest `protobuf:"bytes,2,opt,name=options,proto3" json:"options,omitempty"` unknownFields protoimpl.UnknownFields - - ClusterId string `protobuf:"bytes,1,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"` - Options *vtctldata.DeleteShardsRequest `protobuf:"bytes,2,opt,name=options,proto3" json:"options,omitempty"` + sizeCache protoimpl.SizeCache } func (x *DeleteShardsRequest) Reset() { @@ -1739,13 +1712,12 @@ func (x *DeleteShardsRequest) GetOptions() *vtctldata.DeleteShardsRequest { } type DeleteTabletRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Alias *topodata.TabletAlias `protobuf:"bytes,1,opt,name=alias,proto3" json:"alias,omitempty"` + ClusterIds []string `protobuf:"bytes,2,rep,name=cluster_ids,json=clusterIds,proto3" json:"cluster_ids,omitempty"` + AllowPrimary bool `protobuf:"varint,3,opt,name=allow_primary,json=allowPrimary,proto3" json:"allow_primary,omitempty"` unknownFields protoimpl.UnknownFields - - Alias *topodata.TabletAlias `protobuf:"bytes,1,opt,name=alias,proto3" json:"alias,omitempty"` - ClusterIds []string `protobuf:"bytes,2,rep,name=cluster_ids,json=clusterIds,proto3" json:"cluster_ids,omitempty"` - AllowPrimary bool `protobuf:"varint,3,opt,name=allow_primary,json=allowPrimary,proto3" json:"allow_primary,omitempty"` + sizeCache protoimpl.SizeCache } func (x *DeleteTabletRequest) Reset() { @@ -1800,12 +1772,11 @@ func (x *DeleteTabletRequest) GetAllowPrimary() bool { } type DeleteTabletResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Status string `protobuf:"bytes,1,opt,name=status,proto3" json:"status,omitempty"` + Cluster *Cluster `protobuf:"bytes,2,opt,name=cluster,proto3" json:"cluster,omitempty"` unknownFields protoimpl.UnknownFields - - Status string `protobuf:"bytes,1,opt,name=status,proto3" json:"status,omitempty"` - Cluster *Cluster `protobuf:"bytes,2,opt,name=cluster,proto3" json:"cluster,omitempty"` + sizeCache protoimpl.SizeCache } func (x *DeleteTabletResponse) Reset() { @@ -1853,12 +1824,11 @@ func (x *DeleteTabletResponse) GetCluster() *Cluster { } type EmergencyFailoverShardRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + ClusterId string `protobuf:"bytes,1,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"` + Options *vtctldata.EmergencyReparentShardRequest `protobuf:"bytes,2,opt,name=options,proto3" json:"options,omitempty"` unknownFields protoimpl.UnknownFields - - ClusterId string `protobuf:"bytes,1,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"` - Options *vtctldata.EmergencyReparentShardRequest `protobuf:"bytes,2,opt,name=options,proto3" json:"options,omitempty"` + sizeCache protoimpl.SizeCache } func (x *EmergencyFailoverShardRequest) Reset() { @@ -1906,19 +1876,18 @@ func (x *EmergencyFailoverShardRequest) GetOptions() *vtctldata.EmergencyReparen } type EmergencyFailoverShardResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Cluster *Cluster `protobuf:"bytes,1,opt,name=cluster,proto3" json:"cluster,omitempty"` - Keyspace string `protobuf:"bytes,2,opt,name=keyspace,proto3" json:"keyspace,omitempty"` - Shard string `protobuf:"bytes,3,opt,name=shard,proto3" json:"shard,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Cluster *Cluster `protobuf:"bytes,1,opt,name=cluster,proto3" json:"cluster,omitempty"` + Keyspace string `protobuf:"bytes,2,opt,name=keyspace,proto3" json:"keyspace,omitempty"` + Shard string `protobuf:"bytes,3,opt,name=shard,proto3" json:"shard,omitempty"` // PromotedPrimary is the tablet alias that was promoted to shard primary. // If NewPrimary was set in the request options, then this will be the // same tablet alias. Otherwise, it will be the alias of the tablet found // to be most up-to-date in the shard. PromotedPrimary *topodata.TabletAlias `protobuf:"bytes,4,opt,name=promoted_primary,json=promotedPrimary,proto3" json:"promoted_primary,omitempty"` Events []*logutil.Event `protobuf:"bytes,5,rep,name=events,proto3" json:"events,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *EmergencyFailoverShardResponse) Reset() { @@ -1987,13 +1956,12 @@ func (x *EmergencyFailoverShardResponse) GetEvents() []*logutil.Event { } type FindSchemaRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Table string `protobuf:"bytes,1,opt,name=table,proto3" json:"table,omitempty"` ClusterIds []string `protobuf:"bytes,2,rep,name=cluster_ids,json=clusterIds,proto3" json:"cluster_ids,omitempty"` TableSizeOptions *GetSchemaTableSizeOptions `protobuf:"bytes,3,opt,name=table_size_options,json=tableSizeOptions,proto3" json:"table_size_options,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *FindSchemaRequest) Reset() { @@ -2048,11 +2016,8 @@ func (x *FindSchemaRequest) GetTableSizeOptions() *GetSchemaTableSizeOptions { } type GetBackupsRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - ClusterIds []string `protobuf:"bytes,1,rep,name=cluster_ids,json=clusterIds,proto3" json:"cluster_ids,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + ClusterIds []string `protobuf:"bytes,1,rep,name=cluster_ids,json=clusterIds,proto3" json:"cluster_ids,omitempty"` // Keyspaces, if set, limits backups to just the specified keyspaces. // Applies to all clusters in the request. Keyspaces []string `protobuf:"bytes,2,rep,name=keyspaces,proto3" json:"keyspaces,omitempty"` @@ -2067,6 +2032,8 @@ type GetBackupsRequest struct { // of this field are ignored; it is used only to specify Limit and Detailed // fields. RequestOptions *vtctldata.GetBackupsRequest `protobuf:"bytes,4,opt,name=request_options,json=requestOptions,proto3" json:"request_options,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GetBackupsRequest) Reset() { @@ -2128,11 +2095,10 @@ func (x *GetBackupsRequest) GetRequestOptions() *vtctldata.GetBackupsRequest { } type GetBackupsResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Backups []*ClusterBackup `protobuf:"bytes,1,rep,name=backups,proto3" json:"backups,omitempty"` unknownFields protoimpl.UnknownFields - - Backups []*ClusterBackup `protobuf:"bytes,1,rep,name=backups,proto3" json:"backups,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetBackupsResponse) Reset() { @@ -2173,11 +2139,8 @@ func (x *GetBackupsResponse) GetBackups() []*ClusterBackup { } type GetCellInfosRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - ClusterIds []string `protobuf:"bytes,1,rep,name=cluster_ids,json=clusterIds,proto3" json:"cluster_ids,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + ClusterIds []string `protobuf:"bytes,1,rep,name=cluster_ids,json=clusterIds,proto3" json:"cluster_ids,omitempty"` // Cells, if specified, limits the response to include only CellInfo objects // with those names. If omitted, all CellInfo objects in each cluster are // returned. @@ -2187,7 +2150,9 @@ type GetCellInfosRequest struct { Cells []string `protobuf:"bytes,2,rep,name=cells,proto3" json:"cells,omitempty"` // Return only the cell names in each cluster; the actual CellInfo objects // will be empty. - NamesOnly bool `protobuf:"varint,3,opt,name=names_only,json=namesOnly,proto3" json:"names_only,omitempty"` + NamesOnly bool `protobuf:"varint,3,opt,name=names_only,json=namesOnly,proto3" json:"names_only,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GetCellInfosRequest) Reset() { @@ -2242,11 +2207,10 @@ func (x *GetCellInfosRequest) GetNamesOnly() bool { } type GetCellInfosResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + CellInfos []*ClusterCellInfo `protobuf:"bytes,1,rep,name=cell_infos,json=cellInfos,proto3" json:"cell_infos,omitempty"` unknownFields protoimpl.UnknownFields - - CellInfos []*ClusterCellInfo `protobuf:"bytes,1,rep,name=cell_infos,json=cellInfos,proto3" json:"cell_infos,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetCellInfosResponse) Reset() { @@ -2287,11 +2251,10 @@ func (x *GetCellInfosResponse) GetCellInfos() []*ClusterCellInfo { } type GetCellsAliasesRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + ClusterIds []string `protobuf:"bytes,1,rep,name=cluster_ids,json=clusterIds,proto3" json:"cluster_ids,omitempty"` unknownFields protoimpl.UnknownFields - - ClusterIds []string `protobuf:"bytes,1,rep,name=cluster_ids,json=clusterIds,proto3" json:"cluster_ids,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetCellsAliasesRequest) Reset() { @@ -2332,11 +2295,10 @@ func (x *GetCellsAliasesRequest) GetClusterIds() []string { } type GetCellsAliasesResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Aliases []*ClusterCellsAliases `protobuf:"bytes,1,rep,name=aliases,proto3" json:"aliases,omitempty"` unknownFields protoimpl.UnknownFields - - Aliases []*ClusterCellsAliases `protobuf:"bytes,1,rep,name=aliases,proto3" json:"aliases,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetCellsAliasesResponse) Reset() { @@ -2377,9 +2339,9 @@ func (x *GetCellsAliasesResponse) GetAliases() []*ClusterCellsAliases { } type GetClustersRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GetClustersRequest) Reset() { @@ -2413,11 +2375,10 @@ func (*GetClustersRequest) Descriptor() ([]byte, []int) { } type GetClustersResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Clusters []*Cluster `protobuf:"bytes,1,rep,name=clusters,proto3" json:"clusters,omitempty"` unknownFields protoimpl.UnknownFields - - Clusters []*Cluster `protobuf:"bytes,1,rep,name=clusters,proto3" json:"clusters,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetClustersResponse) Reset() { @@ -2458,12 +2419,11 @@ func (x *GetClustersResponse) GetClusters() []*Cluster { } type GetFullStatusRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + ClusterId string `protobuf:"bytes,1,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"` + Alias *topodata.TabletAlias `protobuf:"bytes,2,opt,name=alias,proto3" json:"alias,omitempty"` unknownFields protoimpl.UnknownFields - - ClusterId string `protobuf:"bytes,1,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"` - Alias *topodata.TabletAlias `protobuf:"bytes,2,opt,name=alias,proto3" json:"alias,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetFullStatusRequest) Reset() { @@ -2511,11 +2471,10 @@ func (x *GetFullStatusRequest) GetAlias() *topodata.TabletAlias { } type GetGatesRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + ClusterIds []string `protobuf:"bytes,1,rep,name=cluster_ids,json=clusterIds,proto3" json:"cluster_ids,omitempty"` unknownFields protoimpl.UnknownFields - - ClusterIds []string `protobuf:"bytes,1,rep,name=cluster_ids,json=clusterIds,proto3" json:"cluster_ids,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetGatesRequest) Reset() { @@ -2556,11 +2515,10 @@ func (x *GetGatesRequest) GetClusterIds() []string { } type GetGatesResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Gates []*VTGate `protobuf:"bytes,1,rep,name=gates,proto3" json:"gates,omitempty"` unknownFields protoimpl.UnknownFields - - Gates []*VTGate `protobuf:"bytes,1,rep,name=gates,proto3" json:"gates,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetGatesResponse) Reset() { @@ -2601,12 +2559,11 @@ func (x *GetGatesResponse) GetGates() []*VTGate { } type GetKeyspaceRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + ClusterId string `protobuf:"bytes,1,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"` + Keyspace string `protobuf:"bytes,2,opt,name=keyspace,proto3" json:"keyspace,omitempty"` unknownFields protoimpl.UnknownFields - - ClusterId string `protobuf:"bytes,1,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"` - Keyspace string `protobuf:"bytes,2,opt,name=keyspace,proto3" json:"keyspace,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetKeyspaceRequest) Reset() { @@ -2654,11 +2611,10 @@ func (x *GetKeyspaceRequest) GetKeyspace() string { } type GetKeyspacesRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + ClusterIds []string `protobuf:"bytes,1,rep,name=cluster_ids,json=clusterIds,proto3" json:"cluster_ids,omitempty"` unknownFields protoimpl.UnknownFields - - ClusterIds []string `protobuf:"bytes,1,rep,name=cluster_ids,json=clusterIds,proto3" json:"cluster_ids,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetKeyspacesRequest) Reset() { @@ -2699,11 +2655,10 @@ func (x *GetKeyspacesRequest) GetClusterIds() []string { } type GetKeyspacesResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Keyspaces []*Keyspace `protobuf:"bytes,1,rep,name=keyspaces,proto3" json:"keyspaces,omitempty"` unknownFields protoimpl.UnknownFields - - Keyspaces []*Keyspace `protobuf:"bytes,1,rep,name=keyspaces,proto3" json:"keyspaces,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetKeyspacesResponse) Reset() { @@ -2744,14 +2699,13 @@ func (x *GetKeyspacesResponse) GetKeyspaces() []*Keyspace { } type GetSchemaRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` ClusterId string `protobuf:"bytes,1,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"` Keyspace string `protobuf:"bytes,2,opt,name=keyspace,proto3" json:"keyspace,omitempty"` Table string `protobuf:"bytes,3,opt,name=table,proto3" json:"table,omitempty"` TableSizeOptions *GetSchemaTableSizeOptions `protobuf:"bytes,4,opt,name=table_size_options,json=tableSizeOptions,proto3" json:"table_size_options,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GetSchemaRequest) Reset() { @@ -2813,12 +2767,11 @@ func (x *GetSchemaRequest) GetTableSizeOptions() *GetSchemaTableSizeOptions { } type GetSchemasRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` ClusterIds []string `protobuf:"bytes,1,rep,name=cluster_ids,json=clusterIds,proto3" json:"cluster_ids,omitempty"` TableSizeOptions *GetSchemaTableSizeOptions `protobuf:"bytes,2,opt,name=table_size_options,json=tableSizeOptions,proto3" json:"table_size_options,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GetSchemasRequest) Reset() { @@ -2866,11 +2819,10 @@ func (x *GetSchemasRequest) GetTableSizeOptions() *GetSchemaTableSizeOptions { } type GetSchemasResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Schemas []*Schema `protobuf:"bytes,1,rep,name=schemas,proto3" json:"schemas,omitempty"` unknownFields protoimpl.UnknownFields - - Schemas []*Schema `protobuf:"bytes,1,rep,name=schemas,proto3" json:"schemas,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetSchemasResponse) Reset() { @@ -2911,11 +2863,10 @@ func (x *GetSchemasResponse) GetSchemas() []*Schema { } type GetSchemaMigrationsRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` ClusterRequests []*GetSchemaMigrationsRequest_ClusterRequest `protobuf:"bytes,1,rep,name=cluster_requests,json=clusterRequests,proto3" json:"cluster_requests,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GetSchemaMigrationsRequest) Reset() { @@ -2956,11 +2907,10 @@ func (x *GetSchemaMigrationsRequest) GetClusterRequests() []*GetSchemaMigrations } type GetSchemaMigrationsResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - SchemaMigrations []*SchemaMigration `protobuf:"bytes,1,rep,name=schema_migrations,json=schemaMigrations,proto3" json:"schema_migrations,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + SchemaMigrations []*SchemaMigration `protobuf:"bytes,1,rep,name=schema_migrations,json=schemaMigrations,proto3" json:"schema_migrations,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GetSchemaMigrationsResponse) Reset() { @@ -3001,11 +2951,8 @@ func (x *GetSchemaMigrationsResponse) GetSchemaMigrations() []*SchemaMigration { } type GetShardReplicationPositionsRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - ClusterIds []string `protobuf:"bytes,1,rep,name=cluster_ids,json=clusterIds,proto3" json:"cluster_ids,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + ClusterIds []string `protobuf:"bytes,1,rep,name=cluster_ids,json=clusterIds,proto3" json:"cluster_ids,omitempty"` // Keyspaces, if set, limits replication positions to just the specified // keyspaces. Applies to all clusters in the request. Keyspaces []string `protobuf:"bytes,2,rep,name=keyspaces,proto3" json:"keyspaces,omitempty"` @@ -3015,6 +2962,8 @@ type GetShardReplicationPositionsRequest struct { // This field takes precedence over Keyspaces. If KeyspaceShards is set, // Keyspaces is ignored. KeyspaceShards []string `protobuf:"bytes,3,rep,name=keyspace_shards,json=keyspaceShards,proto3" json:"keyspace_shards,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GetShardReplicationPositionsRequest) Reset() { @@ -3069,11 +3018,10 @@ func (x *GetShardReplicationPositionsRequest) GetKeyspaceShards() []string { } type GetShardReplicationPositionsResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` ReplicationPositions []*ClusterShardReplicationPosition `protobuf:"bytes,1,rep,name=replication_positions,json=replicationPositions,proto3" json:"replication_positions,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GetShardReplicationPositionsResponse) Reset() { @@ -3114,15 +3062,14 @@ func (x *GetShardReplicationPositionsResponse) GetReplicationPositions() []*Clus } type GetSrvKeyspaceRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - ClusterId string `protobuf:"bytes,1,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"` - Keyspace string `protobuf:"bytes,2,opt,name=keyspace,proto3" json:"keyspace,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + ClusterId string `protobuf:"bytes,1,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"` + Keyspace string `protobuf:"bytes,2,opt,name=keyspace,proto3" json:"keyspace,omitempty"` // Cells is a list of cells to lookup a SrvKeyspace for. Leaving this empty is // equivalent to specifying all cells in the topo. - Cells []string `protobuf:"bytes,3,rep,name=cells,proto3" json:"cells,omitempty"` + Cells []string `protobuf:"bytes,3,rep,name=cells,proto3" json:"cells,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GetSrvKeyspaceRequest) Reset() { @@ -3177,15 +3124,14 @@ func (x *GetSrvKeyspaceRequest) GetCells() []string { } type GetSrvKeyspacesRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // An optional list of cluster IDs to filter specific clusters ClusterIds []string `protobuf:"bytes,1,rep,name=cluster_ids,json=clusterIds,proto3" json:"cluster_ids,omitempty"` // Cells is a list of cells to lookup a SrvKeyspace for. Leaving this empty is // equivalent to specifying all cells in the topo. - Cells []string `protobuf:"bytes,2,rep,name=cells,proto3" json:"cells,omitempty"` + Cells []string `protobuf:"bytes,2,rep,name=cells,proto3" json:"cells,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GetSrvKeyspacesRequest) Reset() { @@ -3233,12 +3179,11 @@ func (x *GetSrvKeyspacesRequest) GetCells() []string { } type GetSrvKeyspacesResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // GetSrvKeyspaces responses for each keyspace - SrvKeyspaces map[string]*vtctldata.GetSrvKeyspacesResponse `protobuf:"bytes,1,rep,name=srv_keyspaces,json=srvKeyspaces,proto3" json:"srv_keyspaces,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + SrvKeyspaces map[string]*vtctldata.GetSrvKeyspacesResponse `protobuf:"bytes,1,rep,name=srv_keyspaces,json=srvKeyspaces,proto3" json:"srv_keyspaces,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GetSrvKeyspacesResponse) Reset() { @@ -3279,12 +3224,11 @@ func (x *GetSrvKeyspacesResponse) GetSrvKeyspaces() map[string]*vtctldata.GetSrv } type GetSrvVSchemaRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + ClusterId string `protobuf:"bytes,1,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"` + Cell string `protobuf:"bytes,2,opt,name=cell,proto3" json:"cell,omitempty"` unknownFields protoimpl.UnknownFields - - ClusterId string `protobuf:"bytes,1,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"` - Cell string `protobuf:"bytes,2,opt,name=cell,proto3" json:"cell,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetSrvVSchemaRequest) Reset() { @@ -3332,12 +3276,11 @@ func (x *GetSrvVSchemaRequest) GetCell() string { } type GetSrvVSchemasRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + ClusterIds []string `protobuf:"bytes,1,rep,name=cluster_ids,json=clusterIds,proto3" json:"cluster_ids,omitempty"` + Cells []string `protobuf:"bytes,2,rep,name=cells,proto3" json:"cells,omitempty"` unknownFields protoimpl.UnknownFields - - ClusterIds []string `protobuf:"bytes,1,rep,name=cluster_ids,json=clusterIds,proto3" json:"cluster_ids,omitempty"` - Cells []string `protobuf:"bytes,2,rep,name=cells,proto3" json:"cells,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetSrvVSchemasRequest) Reset() { @@ -3385,11 +3328,10 @@ func (x *GetSrvVSchemasRequest) GetCells() []string { } type GetSrvVSchemasResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + SrvVSchemas []*SrvVSchema `protobuf:"bytes,1,rep,name=srv_v_schemas,json=srvVSchemas,proto3" json:"srv_v_schemas,omitempty"` unknownFields protoimpl.UnknownFields - - SrvVSchemas []*SrvVSchema `protobuf:"bytes,1,rep,name=srv_v_schemas,json=srvVSchemas,proto3" json:"srv_v_schemas,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetSrvVSchemasResponse) Reset() { @@ -3430,12 +3372,11 @@ func (x *GetSrvVSchemasResponse) GetSrvVSchemas() []*SrvVSchema { } type GetSchemaTableSizeOptions struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - AggregateSizes bool `protobuf:"varint,1,opt,name=aggregate_sizes,json=aggregateSizes,proto3" json:"aggregate_sizes,omitempty"` - IncludeNonServingShards bool `protobuf:"varint,2,opt,name=include_non_serving_shards,json=includeNonServingShards,proto3" json:"include_non_serving_shards,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + AggregateSizes bool `protobuf:"varint,1,opt,name=aggregate_sizes,json=aggregateSizes,proto3" json:"aggregate_sizes,omitempty"` + IncludeNonServingShards bool `protobuf:"varint,2,opt,name=include_non_serving_shards,json=includeNonServingShards,proto3" json:"include_non_serving_shards,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GetSchemaTableSizeOptions) Reset() { @@ -3483,16 +3424,15 @@ func (x *GetSchemaTableSizeOptions) GetIncludeNonServingShards() bool { } type GetTabletRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Unique (per cluster) tablet alias. Alias *topodata.TabletAlias `protobuf:"bytes,1,opt,name=alias,proto3" json:"alias,omitempty"` // ClusterIDs is an optional parameter to narrow the scope of the search, if // the caller knows which cluster the tablet may be in, or, to disambiguate // if multiple clusters have a tablet with the same hostname. - ClusterIds []string `protobuf:"bytes,2,rep,name=cluster_ids,json=clusterIds,proto3" json:"cluster_ids,omitempty"` + ClusterIds []string `protobuf:"bytes,2,rep,name=cluster_ids,json=clusterIds,proto3" json:"cluster_ids,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GetTabletRequest) Reset() { @@ -3540,11 +3480,10 @@ func (x *GetTabletRequest) GetClusterIds() []string { } type GetTabletsRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + ClusterIds []string `protobuf:"bytes,1,rep,name=cluster_ids,json=clusterIds,proto3" json:"cluster_ids,omitempty"` unknownFields protoimpl.UnknownFields - - ClusterIds []string `protobuf:"bytes,1,rep,name=cluster_ids,json=clusterIds,proto3" json:"cluster_ids,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetTabletsRequest) Reset() { @@ -3585,11 +3524,10 @@ func (x *GetTabletsRequest) GetClusterIds() []string { } type GetTabletsResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Tablets []*Tablet `protobuf:"bytes,1,rep,name=tablets,proto3" json:"tablets,omitempty"` unknownFields protoimpl.UnknownFields - - Tablets []*Tablet `protobuf:"bytes,1,rep,name=tablets,proto3" json:"tablets,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetTabletsResponse) Reset() { @@ -3630,12 +3568,11 @@ func (x *GetTabletsResponse) GetTablets() []*Tablet { } type GetTopologyPathRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + ClusterId string `protobuf:"bytes,1,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"` + Path string `protobuf:"bytes,2,opt,name=path,proto3" json:"path,omitempty"` unknownFields protoimpl.UnknownFields - - ClusterId string `protobuf:"bytes,1,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"` - Path string `protobuf:"bytes,2,opt,name=path,proto3" json:"path,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetTopologyPathRequest) Reset() { @@ -3683,12 +3620,11 @@ func (x *GetTopologyPathRequest) GetPath() string { } type GetTransactionInfoRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + ClusterId string `protobuf:"bytes,1,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"` + Request *vtctldata.GetTransactionInfoRequest `protobuf:"bytes,2,opt,name=request,proto3" json:"request,omitempty"` unknownFields protoimpl.UnknownFields - - ClusterId string `protobuf:"bytes,1,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"` - Request *vtctldata.GetTransactionInfoRequest `protobuf:"bytes,2,opt,name=request,proto3" json:"request,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetTransactionInfoRequest) Reset() { @@ -3736,13 +3672,12 @@ func (x *GetTransactionInfoRequest) GetRequest() *vtctldata.GetTransactionInfoRe } type GetUnresolvedTransactionsRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + ClusterId string `protobuf:"bytes,1,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"` + Keyspace string `protobuf:"bytes,2,opt,name=keyspace,proto3" json:"keyspace,omitempty"` + AbandonAge int64 `protobuf:"varint,3,opt,name=abandon_age,json=abandonAge,proto3" json:"abandon_age,omitempty"` unknownFields protoimpl.UnknownFields - - ClusterId string `protobuf:"bytes,1,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"` - Keyspace string `protobuf:"bytes,2,opt,name=keyspace,proto3" json:"keyspace,omitempty"` - AbandonAge int64 `protobuf:"varint,3,opt,name=abandon_age,json=abandonAge,proto3" json:"abandon_age,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetUnresolvedTransactionsRequest) Reset() { @@ -3797,12 +3732,11 @@ func (x *GetUnresolvedTransactionsRequest) GetAbandonAge() int64 { } type GetVSchemaRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + ClusterId string `protobuf:"bytes,1,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"` + Keyspace string `protobuf:"bytes,2,opt,name=keyspace,proto3" json:"keyspace,omitempty"` unknownFields protoimpl.UnknownFields - - ClusterId string `protobuf:"bytes,1,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"` - Keyspace string `protobuf:"bytes,2,opt,name=keyspace,proto3" json:"keyspace,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetVSchemaRequest) Reset() { @@ -3850,11 +3784,10 @@ func (x *GetVSchemaRequest) GetKeyspace() string { } type GetVSchemasRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + ClusterIds []string `protobuf:"bytes,1,rep,name=cluster_ids,json=clusterIds,proto3" json:"cluster_ids,omitempty"` unknownFields protoimpl.UnknownFields - - ClusterIds []string `protobuf:"bytes,1,rep,name=cluster_ids,json=clusterIds,proto3" json:"cluster_ids,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetVSchemasRequest) Reset() { @@ -3895,11 +3828,10 @@ func (x *GetVSchemasRequest) GetClusterIds() []string { } type GetVSchemasResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + VSchemas []*VSchema `protobuf:"bytes,1,rep,name=v_schemas,json=vSchemas,proto3" json:"v_schemas,omitempty"` unknownFields protoimpl.UnknownFields - - VSchemas []*VSchema `protobuf:"bytes,1,rep,name=v_schemas,json=vSchemas,proto3" json:"v_schemas,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetVSchemasResponse) Reset() { @@ -3940,11 +3872,10 @@ func (x *GetVSchemasResponse) GetVSchemas() []*VSchema { } type GetVtctldsRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + ClusterIds []string `protobuf:"bytes,1,rep,name=cluster_ids,json=clusterIds,proto3" json:"cluster_ids,omitempty"` unknownFields protoimpl.UnknownFields - - ClusterIds []string `protobuf:"bytes,1,rep,name=cluster_ids,json=clusterIds,proto3" json:"cluster_ids,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetVtctldsRequest) Reset() { @@ -3985,11 +3916,10 @@ func (x *GetVtctldsRequest) GetClusterIds() []string { } type GetVtctldsResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Vtctlds []*Vtctld `protobuf:"bytes,1,rep,name=vtctlds,proto3" json:"vtctlds,omitempty"` unknownFields protoimpl.UnknownFields - - Vtctlds []*Vtctld `protobuf:"bytes,1,rep,name=vtctlds,proto3" json:"vtctlds,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetVtctldsResponse) Reset() { @@ -4030,14 +3960,13 @@ func (x *GetVtctldsResponse) GetVtctlds() []*Vtctld { } type GetWorkflowRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + ClusterId string `protobuf:"bytes,1,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"` + Keyspace string `protobuf:"bytes,2,opt,name=keyspace,proto3" json:"keyspace,omitempty"` + Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` + ActiveOnly bool `protobuf:"varint,4,opt,name=active_only,json=activeOnly,proto3" json:"active_only,omitempty"` unknownFields protoimpl.UnknownFields - - ClusterId string `protobuf:"bytes,1,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"` - Keyspace string `protobuf:"bytes,2,opt,name=keyspace,proto3" json:"keyspace,omitempty"` - Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` - ActiveOnly bool `protobuf:"varint,4,opt,name=active_only,json=activeOnly,proto3" json:"active_only,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetWorkflowRequest) Reset() { @@ -4099,13 +4028,12 @@ func (x *GetWorkflowRequest) GetActiveOnly() bool { } type GetWorkflowStatusRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + ClusterId string `protobuf:"bytes,1,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"` + Keyspace string `protobuf:"bytes,2,opt,name=keyspace,proto3" json:"keyspace,omitempty"` + Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` unknownFields protoimpl.UnknownFields - - ClusterId string `protobuf:"bytes,1,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"` - Keyspace string `protobuf:"bytes,2,opt,name=keyspace,proto3" json:"keyspace,omitempty"` - Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetWorkflowStatusRequest) Reset() { @@ -4160,13 +4088,12 @@ func (x *GetWorkflowStatusRequest) GetName() string { } type StartWorkflowRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + ClusterId string `protobuf:"bytes,1,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"` + Keyspace string `protobuf:"bytes,2,opt,name=keyspace,proto3" json:"keyspace,omitempty"` + Workflow string `protobuf:"bytes,3,opt,name=workflow,proto3" json:"workflow,omitempty"` unknownFields protoimpl.UnknownFields - - ClusterId string `protobuf:"bytes,1,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"` - Keyspace string `protobuf:"bytes,2,opt,name=keyspace,proto3" json:"keyspace,omitempty"` - Workflow string `protobuf:"bytes,3,opt,name=workflow,proto3" json:"workflow,omitempty"` + sizeCache protoimpl.SizeCache } func (x *StartWorkflowRequest) Reset() { @@ -4221,13 +4148,12 @@ func (x *StartWorkflowRequest) GetWorkflow() string { } type StopWorkflowRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + ClusterId string `protobuf:"bytes,1,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"` + Keyspace string `protobuf:"bytes,2,opt,name=keyspace,proto3" json:"keyspace,omitempty"` + Workflow string `protobuf:"bytes,3,opt,name=workflow,proto3" json:"workflow,omitempty"` unknownFields protoimpl.UnknownFields - - ClusterId string `protobuf:"bytes,1,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"` - Keyspace string `protobuf:"bytes,2,opt,name=keyspace,proto3" json:"keyspace,omitempty"` - Workflow string `protobuf:"bytes,3,opt,name=workflow,proto3" json:"workflow,omitempty"` + sizeCache protoimpl.SizeCache } func (x *StopWorkflowRequest) Reset() { @@ -4282,11 +4208,8 @@ func (x *StopWorkflowRequest) GetWorkflow() string { } type GetWorkflowsRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - ClusterIds []string `protobuf:"bytes,1,rep,name=cluster_ids,json=clusterIds,proto3" json:"cluster_ids,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + ClusterIds []string `protobuf:"bytes,1,rep,name=cluster_ids,json=clusterIds,proto3" json:"cluster_ids,omitempty"` // ActiveOnly specifies whether to return workflows that are currently // active (running or paused) instead of all workflows. ActiveOnly bool `protobuf:"varint,2,opt,name=active_only,json=activeOnly,proto3" json:"active_only,omitempty"` @@ -4305,6 +4228,8 @@ type GetWorkflowsRequest struct { // search. It has the same semantics as the Keyspaces parameter, so refer to // that documentation for more details. IgnoreKeyspaces []string `protobuf:"bytes,4,rep,name=ignore_keyspaces,json=ignoreKeyspaces,proto3" json:"ignore_keyspaces,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GetWorkflowsRequest) Reset() { @@ -4366,11 +4291,10 @@ func (x *GetWorkflowsRequest) GetIgnoreKeyspaces() []string { } type GetWorkflowsResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - WorkflowsByCluster map[string]*ClusterWorkflows `protobuf:"bytes,1,rep,name=workflows_by_cluster,json=workflowsByCluster,proto3" json:"workflows_by_cluster,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + state protoimpl.MessageState `protogen:"open.v1"` + WorkflowsByCluster map[string]*ClusterWorkflows `protobuf:"bytes,1,rep,name=workflows_by_cluster,json=workflowsByCluster,proto3" json:"workflows_by_cluster,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GetWorkflowsResponse) Reset() { @@ -4411,12 +4335,11 @@ func (x *GetWorkflowsResponse) GetWorkflowsByCluster() map[string]*ClusterWorkfl } type LaunchSchemaMigrationRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + ClusterId string `protobuf:"bytes,1,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"` + Request *vtctldata.LaunchSchemaMigrationRequest `protobuf:"bytes,2,opt,name=request,proto3" json:"request,omitempty"` unknownFields protoimpl.UnknownFields - - ClusterId string `protobuf:"bytes,1,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"` - Request *vtctldata.LaunchSchemaMigrationRequest `protobuf:"bytes,2,opt,name=request,proto3" json:"request,omitempty"` + sizeCache protoimpl.SizeCache } func (x *LaunchSchemaMigrationRequest) Reset() { @@ -4464,15 +4387,14 @@ func (x *LaunchSchemaMigrationRequest) GetRequest() *vtctldata.LaunchSchemaMigra } type MaterializeCreateRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - ClusterId string `protobuf:"bytes,1,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + ClusterId string `protobuf:"bytes,1,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"` // TableSettings is a JSON string defining what tables to materialize using // what select statements. TableSettings string `protobuf:"bytes,2,opt,name=table_settings,json=tableSettings,proto3" json:"table_settings,omitempty"` Request *vtctldata.MaterializeCreateRequest `protobuf:"bytes,3,opt,name=request,proto3" json:"request,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *MaterializeCreateRequest) Reset() { @@ -4527,12 +4449,11 @@ func (x *MaterializeCreateRequest) GetRequest() *vtctldata.MaterializeCreateRequ } type MoveTablesCompleteRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + ClusterId string `protobuf:"bytes,1,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"` + Request *vtctldata.MoveTablesCompleteRequest `protobuf:"bytes,2,opt,name=request,proto3" json:"request,omitempty"` unknownFields protoimpl.UnknownFields - - ClusterId string `protobuf:"bytes,1,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"` - Request *vtctldata.MoveTablesCompleteRequest `protobuf:"bytes,2,opt,name=request,proto3" json:"request,omitempty"` + sizeCache protoimpl.SizeCache } func (x *MoveTablesCompleteRequest) Reset() { @@ -4580,12 +4501,11 @@ func (x *MoveTablesCompleteRequest) GetRequest() *vtctldata.MoveTablesCompleteRe } type MoveTablesCreateRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + ClusterId string `protobuf:"bytes,1,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"` + Request *vtctldata.MoveTablesCreateRequest `protobuf:"bytes,2,opt,name=request,proto3" json:"request,omitempty"` unknownFields protoimpl.UnknownFields - - ClusterId string `protobuf:"bytes,1,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"` - Request *vtctldata.MoveTablesCreateRequest `protobuf:"bytes,2,opt,name=request,proto3" json:"request,omitempty"` + sizeCache protoimpl.SizeCache } func (x *MoveTablesCreateRequest) Reset() { @@ -4633,16 +4553,15 @@ func (x *MoveTablesCreateRequest) GetRequest() *vtctldata.MoveTablesCreateReques } type PingTabletRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Unique (per cluster) tablet alias of the standard form: "$cell-$uid" Alias *topodata.TabletAlias `protobuf:"bytes,1,opt,name=alias,proto3" json:"alias,omitempty"` // ClusterIDs is an optional parameter to narrow the scope of the search, if // the caller knows which cluster the tablet may be in, or, to disambiguate // if multiple clusters have a tablet with the same hostname. - ClusterIds []string `protobuf:"bytes,2,rep,name=cluster_ids,json=clusterIds,proto3" json:"cluster_ids,omitempty"` + ClusterIds []string `protobuf:"bytes,2,rep,name=cluster_ids,json=clusterIds,proto3" json:"cluster_ids,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *PingTabletRequest) Reset() { @@ -4690,12 +4609,11 @@ func (x *PingTabletRequest) GetClusterIds() []string { } type PingTabletResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Status string `protobuf:"bytes,1,opt,name=status,proto3" json:"status,omitempty"` + Cluster *Cluster `protobuf:"bytes,2,opt,name=cluster,proto3" json:"cluster,omitempty"` unknownFields protoimpl.UnknownFields - - Status string `protobuf:"bytes,1,opt,name=status,proto3" json:"status,omitempty"` - Cluster *Cluster `protobuf:"bytes,2,opt,name=cluster,proto3" json:"cluster,omitempty"` + sizeCache protoimpl.SizeCache } func (x *PingTabletResponse) Reset() { @@ -4743,12 +4661,11 @@ func (x *PingTabletResponse) GetCluster() *Cluster { } type PlannedFailoverShardRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + ClusterId string `protobuf:"bytes,1,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"` + Options *vtctldata.PlannedReparentShardRequest `protobuf:"bytes,2,opt,name=options,proto3" json:"options,omitempty"` unknownFields protoimpl.UnknownFields - - ClusterId string `protobuf:"bytes,1,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"` - Options *vtctldata.PlannedReparentShardRequest `protobuf:"bytes,2,opt,name=options,proto3" json:"options,omitempty"` + sizeCache protoimpl.SizeCache } func (x *PlannedFailoverShardRequest) Reset() { @@ -4796,19 +4713,18 @@ func (x *PlannedFailoverShardRequest) GetOptions() *vtctldata.PlannedReparentSha } type PlannedFailoverShardResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Cluster *Cluster `protobuf:"bytes,1,opt,name=cluster,proto3" json:"cluster,omitempty"` - Keyspace string `protobuf:"bytes,2,opt,name=keyspace,proto3" json:"keyspace,omitempty"` - Shard string `protobuf:"bytes,3,opt,name=shard,proto3" json:"shard,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Cluster *Cluster `protobuf:"bytes,1,opt,name=cluster,proto3" json:"cluster,omitempty"` + Keyspace string `protobuf:"bytes,2,opt,name=keyspace,proto3" json:"keyspace,omitempty"` + Shard string `protobuf:"bytes,3,opt,name=shard,proto3" json:"shard,omitempty"` // PromotedPrimary is the tablet alias that was promoted to shard primary. // If NewPrimary was set in the request options, then this will be the // same tablet alias. Otherwise, it will be the alias of the tablet found // to be most up-to-date in the shard. PromotedPrimary *topodata.TabletAlias `protobuf:"bytes,4,opt,name=promoted_primary,json=promotedPrimary,proto3" json:"promoted_primary,omitempty"` Events []*logutil.Event `protobuf:"bytes,5,rep,name=events,proto3" json:"events,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *PlannedFailoverShardResponse) Reset() { @@ -4877,14 +4793,13 @@ func (x *PlannedFailoverShardResponse) GetEvents() []*logutil.Event { } type RebuildKeyspaceGraphRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + ClusterId string `protobuf:"bytes,1,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"` + Keyspace string `protobuf:"bytes,2,opt,name=keyspace,proto3" json:"keyspace,omitempty"` + Cells []string `protobuf:"bytes,3,rep,name=cells,proto3" json:"cells,omitempty"` + AllowPartial bool `protobuf:"varint,4,opt,name=allow_partial,json=allowPartial,proto3" json:"allow_partial,omitempty"` unknownFields protoimpl.UnknownFields - - ClusterId string `protobuf:"bytes,1,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"` - Keyspace string `protobuf:"bytes,2,opt,name=keyspace,proto3" json:"keyspace,omitempty"` - Cells []string `protobuf:"bytes,3,rep,name=cells,proto3" json:"cells,omitempty"` - AllowPartial bool `protobuf:"varint,4,opt,name=allow_partial,json=allowPartial,proto3" json:"allow_partial,omitempty"` + sizeCache protoimpl.SizeCache } func (x *RebuildKeyspaceGraphRequest) Reset() { @@ -4946,11 +4861,10 @@ func (x *RebuildKeyspaceGraphRequest) GetAllowPartial() bool { } type RebuildKeyspaceGraphResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Status string `protobuf:"bytes,1,opt,name=status,proto3" json:"status,omitempty"` unknownFields protoimpl.UnknownFields - - Status string `protobuf:"bytes,1,opt,name=status,proto3" json:"status,omitempty"` + sizeCache protoimpl.SizeCache } func (x *RebuildKeyspaceGraphResponse) Reset() { @@ -4991,12 +4905,11 @@ func (x *RebuildKeyspaceGraphResponse) GetStatus() string { } type RefreshStateRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Alias *topodata.TabletAlias `protobuf:"bytes,1,opt,name=alias,proto3" json:"alias,omitempty"` + ClusterIds []string `protobuf:"bytes,2,rep,name=cluster_ids,json=clusterIds,proto3" json:"cluster_ids,omitempty"` unknownFields protoimpl.UnknownFields - - Alias *topodata.TabletAlias `protobuf:"bytes,1,opt,name=alias,proto3" json:"alias,omitempty"` - ClusterIds []string `protobuf:"bytes,2,rep,name=cluster_ids,json=clusterIds,proto3" json:"cluster_ids,omitempty"` + sizeCache protoimpl.SizeCache } func (x *RefreshStateRequest) Reset() { @@ -5044,12 +4957,11 @@ func (x *RefreshStateRequest) GetClusterIds() []string { } type RefreshStateResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Status string `protobuf:"bytes,1,opt,name=status,proto3" json:"status,omitempty"` + Cluster *Cluster `protobuf:"bytes,2,opt,name=cluster,proto3" json:"cluster,omitempty"` unknownFields protoimpl.UnknownFields - - Status string `protobuf:"bytes,1,opt,name=status,proto3" json:"status,omitempty"` - Cluster *Cluster `protobuf:"bytes,2,opt,name=cluster,proto3" json:"cluster,omitempty"` + sizeCache protoimpl.SizeCache } func (x *RefreshStateResponse) Reset() { @@ -5097,10 +5009,7 @@ func (x *RefreshStateResponse) GetCluster() *Cluster { } type ReloadSchemasRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Keyspaces, if set, will reload schemas across one or more keyspaces. A // keyspace not existing in a cluster will not fail the overall request. // @@ -5143,6 +5052,8 @@ type ReloadSchemasRequest struct { // // Does not apply in Tablets mode. IncludePrimary bool `protobuf:"varint,7,opt,name=include_primary,json=includePrimary,proto3" json:"include_primary,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ReloadSchemasRequest) Reset() { @@ -5225,10 +5136,7 @@ func (x *ReloadSchemasRequest) GetIncludePrimary() bool { } type ReloadSchemasResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // KeyspaceResults is the list of KeyspaceResult objects for a ReloadSchemas // operation. It is only set when the request mandates Keyspaces mode (see // ReloadSchemasRequest). @@ -5241,6 +5149,8 @@ type ReloadSchemasResponse struct { // operation. It is only set when the request mandates Tablets mode (see // ReloadSchemasRequest). TabletResults []*ReloadSchemasResponse_TabletResult `protobuf:"bytes,3,rep,name=tablet_results,json=tabletResults,proto3" json:"tablet_results,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ReloadSchemasResponse) Reset() { @@ -5295,16 +5205,15 @@ func (x *ReloadSchemasResponse) GetTabletResults() []*ReloadSchemasResponse_Tabl } type ReloadSchemaShardRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - ClusterId string `protobuf:"bytes,1,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"` - Keyspace string `protobuf:"bytes,2,opt,name=keyspace,proto3" json:"keyspace,omitempty"` - Shard string `protobuf:"bytes,3,opt,name=shard,proto3" json:"shard,omitempty"` - WaitPosition string `protobuf:"bytes,4,opt,name=wait_position,json=waitPosition,proto3" json:"wait_position,omitempty"` - IncludePrimary bool `protobuf:"varint,5,opt,name=include_primary,json=includePrimary,proto3" json:"include_primary,omitempty"` - Concurrency int32 `protobuf:"varint,6,opt,name=concurrency,proto3" json:"concurrency,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + ClusterId string `protobuf:"bytes,1,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"` + Keyspace string `protobuf:"bytes,2,opt,name=keyspace,proto3" json:"keyspace,omitempty"` + Shard string `protobuf:"bytes,3,opt,name=shard,proto3" json:"shard,omitempty"` + WaitPosition string `protobuf:"bytes,4,opt,name=wait_position,json=waitPosition,proto3" json:"wait_position,omitempty"` + IncludePrimary bool `protobuf:"varint,5,opt,name=include_primary,json=includePrimary,proto3" json:"include_primary,omitempty"` + Concurrency int32 `protobuf:"varint,6,opt,name=concurrency,proto3" json:"concurrency,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ReloadSchemaShardRequest) Reset() { @@ -5380,11 +5289,10 @@ func (x *ReloadSchemaShardRequest) GetConcurrency() int32 { } type ReloadSchemaShardResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Events []*logutil.Event `protobuf:"bytes,1,rep,name=events,proto3" json:"events,omitempty"` unknownFields protoimpl.UnknownFields - - Events []*logutil.Event `protobuf:"bytes,1,rep,name=events,proto3" json:"events,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ReloadSchemaShardResponse) Reset() { @@ -5425,12 +5333,11 @@ func (x *ReloadSchemaShardResponse) GetEvents() []*logutil.Event { } type RefreshTabletReplicationSourceRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Alias *topodata.TabletAlias `protobuf:"bytes,1,opt,name=alias,proto3" json:"alias,omitempty"` + ClusterIds []string `protobuf:"bytes,2,rep,name=cluster_ids,json=clusterIds,proto3" json:"cluster_ids,omitempty"` unknownFields protoimpl.UnknownFields - - Alias *topodata.TabletAlias `protobuf:"bytes,1,opt,name=alias,proto3" json:"alias,omitempty"` - ClusterIds []string `protobuf:"bytes,2,rep,name=cluster_ids,json=clusterIds,proto3" json:"cluster_ids,omitempty"` + sizeCache protoimpl.SizeCache } func (x *RefreshTabletReplicationSourceRequest) Reset() { @@ -5478,14 +5385,13 @@ func (x *RefreshTabletReplicationSourceRequest) GetClusterIds() []string { } type RefreshTabletReplicationSourceResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"` + Shard string `protobuf:"bytes,2,opt,name=shard,proto3" json:"shard,omitempty"` + Primary *topodata.TabletAlias `protobuf:"bytes,3,opt,name=primary,proto3" json:"primary,omitempty"` + Cluster *Cluster `protobuf:"bytes,4,opt,name=cluster,proto3" json:"cluster,omitempty"` unknownFields protoimpl.UnknownFields - - Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"` - Shard string `protobuf:"bytes,2,opt,name=shard,proto3" json:"shard,omitempty"` - Primary *topodata.TabletAlias `protobuf:"bytes,3,opt,name=primary,proto3" json:"primary,omitempty"` - Cluster *Cluster `protobuf:"bytes,4,opt,name=cluster,proto3" json:"cluster,omitempty"` + sizeCache protoimpl.SizeCache } func (x *RefreshTabletReplicationSourceResponse) Reset() { @@ -5547,15 +5453,14 @@ func (x *RefreshTabletReplicationSourceResponse) GetCluster() *Cluster { } type RemoveKeyspaceCellRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + ClusterId string `protobuf:"bytes,1,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"` + Keyspace string `protobuf:"bytes,2,opt,name=keyspace,proto3" json:"keyspace,omitempty"` + Cell string `protobuf:"bytes,3,opt,name=cell,proto3" json:"cell,omitempty"` + Force bool `protobuf:"varint,4,opt,name=force,proto3" json:"force,omitempty"` + Recursive bool `protobuf:"varint,5,opt,name=recursive,proto3" json:"recursive,omitempty"` unknownFields protoimpl.UnknownFields - - ClusterId string `protobuf:"bytes,1,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"` - Keyspace string `protobuf:"bytes,2,opt,name=keyspace,proto3" json:"keyspace,omitempty"` - Cell string `protobuf:"bytes,3,opt,name=cell,proto3" json:"cell,omitempty"` - Force bool `protobuf:"varint,4,opt,name=force,proto3" json:"force,omitempty"` - Recursive bool `protobuf:"varint,5,opt,name=recursive,proto3" json:"recursive,omitempty"` + sizeCache protoimpl.SizeCache } func (x *RemoveKeyspaceCellRequest) Reset() { @@ -5624,11 +5529,10 @@ func (x *RemoveKeyspaceCellRequest) GetRecursive() bool { } type RemoveKeyspaceCellResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Status string `protobuf:"bytes,1,opt,name=status,proto3" json:"status,omitempty"` unknownFields protoimpl.UnknownFields - - Status string `protobuf:"bytes,1,opt,name=status,proto3" json:"status,omitempty"` + sizeCache protoimpl.SizeCache } func (x *RemoveKeyspaceCellResponse) Reset() { @@ -5669,12 +5573,11 @@ func (x *RemoveKeyspaceCellResponse) GetStatus() string { } type RetrySchemaMigrationRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + ClusterId string `protobuf:"bytes,1,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"` + Request *vtctldata.RetrySchemaMigrationRequest `protobuf:"bytes,2,opt,name=request,proto3" json:"request,omitempty"` unknownFields protoimpl.UnknownFields - - ClusterId string `protobuf:"bytes,1,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"` - Request *vtctldata.RetrySchemaMigrationRequest `protobuf:"bytes,2,opt,name=request,proto3" json:"request,omitempty"` + sizeCache protoimpl.SizeCache } func (x *RetrySchemaMigrationRequest) Reset() { @@ -5722,12 +5625,11 @@ func (x *RetrySchemaMigrationRequest) GetRequest() *vtctldata.RetrySchemaMigrati } type RunHealthCheckRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Alias *topodata.TabletAlias `protobuf:"bytes,1,opt,name=alias,proto3" json:"alias,omitempty"` + ClusterIds []string `protobuf:"bytes,2,rep,name=cluster_ids,json=clusterIds,proto3" json:"cluster_ids,omitempty"` unknownFields protoimpl.UnknownFields - - Alias *topodata.TabletAlias `protobuf:"bytes,1,opt,name=alias,proto3" json:"alias,omitempty"` - ClusterIds []string `protobuf:"bytes,2,rep,name=cluster_ids,json=clusterIds,proto3" json:"cluster_ids,omitempty"` + sizeCache protoimpl.SizeCache } func (x *RunHealthCheckRequest) Reset() { @@ -5775,12 +5677,11 @@ func (x *RunHealthCheckRequest) GetClusterIds() []string { } type RunHealthCheckResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Status string `protobuf:"bytes,1,opt,name=status,proto3" json:"status,omitempty"` + Cluster *Cluster `protobuf:"bytes,2,opt,name=cluster,proto3" json:"cluster,omitempty"` unknownFields protoimpl.UnknownFields - - Status string `protobuf:"bytes,1,opt,name=status,proto3" json:"status,omitempty"` - Cluster *Cluster `protobuf:"bytes,2,opt,name=cluster,proto3" json:"cluster,omitempty"` + sizeCache protoimpl.SizeCache } func (x *RunHealthCheckResponse) Reset() { @@ -5828,12 +5729,11 @@ func (x *RunHealthCheckResponse) GetCluster() *Cluster { } type ReshardCreateRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + ClusterId string `protobuf:"bytes,1,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"` + Request *vtctldata.ReshardCreateRequest `protobuf:"bytes,2,opt,name=request,proto3" json:"request,omitempty"` unknownFields protoimpl.UnknownFields - - ClusterId string `protobuf:"bytes,1,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"` - Request *vtctldata.ReshardCreateRequest `protobuf:"bytes,2,opt,name=request,proto3" json:"request,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ReshardCreateRequest) Reset() { @@ -5881,12 +5781,11 @@ func (x *ReshardCreateRequest) GetRequest() *vtctldata.ReshardCreateRequest { } type SetReadOnlyRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Alias *topodata.TabletAlias `protobuf:"bytes,1,opt,name=alias,proto3" json:"alias,omitempty"` + ClusterIds []string `protobuf:"bytes,2,rep,name=cluster_ids,json=clusterIds,proto3" json:"cluster_ids,omitempty"` unknownFields protoimpl.UnknownFields - - Alias *topodata.TabletAlias `protobuf:"bytes,1,opt,name=alias,proto3" json:"alias,omitempty"` - ClusterIds []string `protobuf:"bytes,2,rep,name=cluster_ids,json=clusterIds,proto3" json:"cluster_ids,omitempty"` + sizeCache protoimpl.SizeCache } func (x *SetReadOnlyRequest) Reset() { @@ -5934,9 +5833,9 @@ func (x *SetReadOnlyRequest) GetClusterIds() []string { } type SetReadOnlyResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *SetReadOnlyResponse) Reset() { @@ -5970,12 +5869,11 @@ func (*SetReadOnlyResponse) Descriptor() ([]byte, []int) { } type SetReadWriteRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Alias *topodata.TabletAlias `protobuf:"bytes,1,opt,name=alias,proto3" json:"alias,omitempty"` + ClusterIds []string `protobuf:"bytes,2,rep,name=cluster_ids,json=clusterIds,proto3" json:"cluster_ids,omitempty"` unknownFields protoimpl.UnknownFields - - Alias *topodata.TabletAlias `protobuf:"bytes,1,opt,name=alias,proto3" json:"alias,omitempty"` - ClusterIds []string `protobuf:"bytes,2,rep,name=cluster_ids,json=clusterIds,proto3" json:"cluster_ids,omitempty"` + sizeCache protoimpl.SizeCache } func (x *SetReadWriteRequest) Reset() { @@ -6023,9 +5921,9 @@ func (x *SetReadWriteRequest) GetClusterIds() []string { } type SetReadWriteResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *SetReadWriteResponse) Reset() { @@ -6059,12 +5957,11 @@ func (*SetReadWriteResponse) Descriptor() ([]byte, []int) { } type StartReplicationRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Alias *topodata.TabletAlias `protobuf:"bytes,1,opt,name=alias,proto3" json:"alias,omitempty"` + ClusterIds []string `protobuf:"bytes,2,rep,name=cluster_ids,json=clusterIds,proto3" json:"cluster_ids,omitempty"` unknownFields protoimpl.UnknownFields - - Alias *topodata.TabletAlias `protobuf:"bytes,1,opt,name=alias,proto3" json:"alias,omitempty"` - ClusterIds []string `protobuf:"bytes,2,rep,name=cluster_ids,json=clusterIds,proto3" json:"cluster_ids,omitempty"` + sizeCache protoimpl.SizeCache } func (x *StartReplicationRequest) Reset() { @@ -6112,12 +6009,11 @@ func (x *StartReplicationRequest) GetClusterIds() []string { } type StartReplicationResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Status string `protobuf:"bytes,1,opt,name=status,proto3" json:"status,omitempty"` + Cluster *Cluster `protobuf:"bytes,2,opt,name=cluster,proto3" json:"cluster,omitempty"` unknownFields protoimpl.UnknownFields - - Status string `protobuf:"bytes,1,opt,name=status,proto3" json:"status,omitempty"` - Cluster *Cluster `protobuf:"bytes,2,opt,name=cluster,proto3" json:"cluster,omitempty"` + sizeCache protoimpl.SizeCache } func (x *StartReplicationResponse) Reset() { @@ -6165,12 +6061,11 @@ func (x *StartReplicationResponse) GetCluster() *Cluster { } type StopReplicationRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Alias *topodata.TabletAlias `protobuf:"bytes,1,opt,name=alias,proto3" json:"alias,omitempty"` + ClusterIds []string `protobuf:"bytes,2,rep,name=cluster_ids,json=clusterIds,proto3" json:"cluster_ids,omitempty"` unknownFields protoimpl.UnknownFields - - Alias *topodata.TabletAlias `protobuf:"bytes,1,opt,name=alias,proto3" json:"alias,omitempty"` - ClusterIds []string `protobuf:"bytes,2,rep,name=cluster_ids,json=clusterIds,proto3" json:"cluster_ids,omitempty"` + sizeCache protoimpl.SizeCache } func (x *StopReplicationRequest) Reset() { @@ -6218,12 +6113,11 @@ func (x *StopReplicationRequest) GetClusterIds() []string { } type StopReplicationResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Status string `protobuf:"bytes,1,opt,name=status,proto3" json:"status,omitempty"` + Cluster *Cluster `protobuf:"bytes,2,opt,name=cluster,proto3" json:"cluster,omitempty"` unknownFields protoimpl.UnknownFields - - Status string `protobuf:"bytes,1,opt,name=status,proto3" json:"status,omitempty"` - Cluster *Cluster `protobuf:"bytes,2,opt,name=cluster,proto3" json:"cluster,omitempty"` + sizeCache protoimpl.SizeCache } func (x *StopReplicationResponse) Reset() { @@ -6271,14 +6165,13 @@ func (x *StopReplicationResponse) GetCluster() *Cluster { } type TabletExternallyPromotedRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Tablet is the alias of the tablet that was promoted externally and should // be updated to the shard primary in the topo. - Alias *topodata.TabletAlias `protobuf:"bytes,1,opt,name=alias,proto3" json:"alias,omitempty"` - ClusterIds []string `protobuf:"bytes,2,rep,name=cluster_ids,json=clusterIds,proto3" json:"cluster_ids,omitempty"` + Alias *topodata.TabletAlias `protobuf:"bytes,1,opt,name=alias,proto3" json:"alias,omitempty"` + ClusterIds []string `protobuf:"bytes,2,rep,name=cluster_ids,json=clusterIds,proto3" json:"cluster_ids,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *TabletExternallyPromotedRequest) Reset() { @@ -6326,15 +6219,14 @@ func (x *TabletExternallyPromotedRequest) GetClusterIds() []string { } type TabletExternallyPromotedResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Cluster *Cluster `protobuf:"bytes,1,opt,name=cluster,proto3" json:"cluster,omitempty"` + Keyspace string `protobuf:"bytes,2,opt,name=keyspace,proto3" json:"keyspace,omitempty"` + Shard string `protobuf:"bytes,3,opt,name=shard,proto3" json:"shard,omitempty"` + NewPrimary *topodata.TabletAlias `protobuf:"bytes,4,opt,name=new_primary,json=newPrimary,proto3" json:"new_primary,omitempty"` + OldPrimary *topodata.TabletAlias `protobuf:"bytes,5,opt,name=old_primary,json=oldPrimary,proto3" json:"old_primary,omitempty"` unknownFields protoimpl.UnknownFields - - Cluster *Cluster `protobuf:"bytes,1,opt,name=cluster,proto3" json:"cluster,omitempty"` - Keyspace string `protobuf:"bytes,2,opt,name=keyspace,proto3" json:"keyspace,omitempty"` - Shard string `protobuf:"bytes,3,opt,name=shard,proto3" json:"shard,omitempty"` - NewPrimary *topodata.TabletAlias `protobuf:"bytes,4,opt,name=new_primary,json=newPrimary,proto3" json:"new_primary,omitempty"` - OldPrimary *topodata.TabletAlias `protobuf:"bytes,5,opt,name=old_primary,json=oldPrimary,proto3" json:"old_primary,omitempty"` + sizeCache protoimpl.SizeCache } func (x *TabletExternallyPromotedResponse) Reset() { @@ -6403,12 +6295,11 @@ func (x *TabletExternallyPromotedResponse) GetOldPrimary() *topodata.TabletAlias } type TabletExternallyReparentedRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Alias *topodata.TabletAlias `protobuf:"bytes,1,opt,name=alias,proto3" json:"alias,omitempty"` + ClusterIds []string `protobuf:"bytes,2,rep,name=cluster_ids,json=clusterIds,proto3" json:"cluster_ids,omitempty"` unknownFields protoimpl.UnknownFields - - Alias *topodata.TabletAlias `protobuf:"bytes,1,opt,name=alias,proto3" json:"alias,omitempty"` - ClusterIds []string `protobuf:"bytes,2,rep,name=cluster_ids,json=clusterIds,proto3" json:"cluster_ids,omitempty"` + sizeCache protoimpl.SizeCache } func (x *TabletExternallyReparentedRequest) Reset() { @@ -6456,12 +6347,11 @@ func (x *TabletExternallyReparentedRequest) GetClusterIds() []string { } type ValidateRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + ClusterId string `protobuf:"bytes,1,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"` + PingTablets bool `protobuf:"varint,2,opt,name=ping_tablets,json=pingTablets,proto3" json:"ping_tablets,omitempty"` unknownFields protoimpl.UnknownFields - - ClusterId string `protobuf:"bytes,1,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"` - PingTablets bool `protobuf:"varint,2,opt,name=ping_tablets,json=pingTablets,proto3" json:"ping_tablets,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ValidateRequest) Reset() { @@ -6509,13 +6399,12 @@ func (x *ValidateRequest) GetPingTablets() bool { } type ValidateKeyspaceRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + ClusterId string `protobuf:"bytes,1,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"` + Keyspace string `protobuf:"bytes,2,opt,name=keyspace,proto3" json:"keyspace,omitempty"` + PingTablets bool `protobuf:"varint,3,opt,name=ping_tablets,json=pingTablets,proto3" json:"ping_tablets,omitempty"` unknownFields protoimpl.UnknownFields - - ClusterId string `protobuf:"bytes,1,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"` - Keyspace string `protobuf:"bytes,2,opt,name=keyspace,proto3" json:"keyspace,omitempty"` - PingTablets bool `protobuf:"varint,3,opt,name=ping_tablets,json=pingTablets,proto3" json:"ping_tablets,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ValidateKeyspaceRequest) Reset() { @@ -6570,12 +6459,11 @@ func (x *ValidateKeyspaceRequest) GetPingTablets() bool { } type ValidateSchemaKeyspaceRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + ClusterId string `protobuf:"bytes,1,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"` + Keyspace string `protobuf:"bytes,2,opt,name=keyspace,proto3" json:"keyspace,omitempty"` unknownFields protoimpl.UnknownFields - - ClusterId string `protobuf:"bytes,1,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"` - Keyspace string `protobuf:"bytes,2,opt,name=keyspace,proto3" json:"keyspace,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ValidateSchemaKeyspaceRequest) Reset() { @@ -6623,14 +6511,13 @@ func (x *ValidateSchemaKeyspaceRequest) GetKeyspace() string { } type ValidateShardRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + ClusterId string `protobuf:"bytes,1,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"` + Keyspace string `protobuf:"bytes,2,opt,name=keyspace,proto3" json:"keyspace,omitempty"` + Shard string `protobuf:"bytes,3,opt,name=shard,proto3" json:"shard,omitempty"` + PingTablets bool `protobuf:"varint,4,opt,name=ping_tablets,json=pingTablets,proto3" json:"ping_tablets,omitempty"` unknownFields protoimpl.UnknownFields - - ClusterId string `protobuf:"bytes,1,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"` - Keyspace string `protobuf:"bytes,2,opt,name=keyspace,proto3" json:"keyspace,omitempty"` - Shard string `protobuf:"bytes,3,opt,name=shard,proto3" json:"shard,omitempty"` - PingTablets bool `protobuf:"varint,4,opt,name=ping_tablets,json=pingTablets,proto3" json:"ping_tablets,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ValidateShardRequest) Reset() { @@ -6692,12 +6579,11 @@ func (x *ValidateShardRequest) GetPingTablets() bool { } type ValidateVersionKeyspaceRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + ClusterId string `protobuf:"bytes,1,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"` + Keyspace string `protobuf:"bytes,2,opt,name=keyspace,proto3" json:"keyspace,omitempty"` unknownFields protoimpl.UnknownFields - - ClusterId string `protobuf:"bytes,1,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"` - Keyspace string `protobuf:"bytes,2,opt,name=keyspace,proto3" json:"keyspace,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ValidateVersionKeyspaceRequest) Reset() { @@ -6745,13 +6631,12 @@ func (x *ValidateVersionKeyspaceRequest) GetKeyspace() string { } type ValidateVersionShardRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + ClusterId string `protobuf:"bytes,1,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"` + Keyspace string `protobuf:"bytes,2,opt,name=keyspace,proto3" json:"keyspace,omitempty"` + Shard string `protobuf:"bytes,3,opt,name=shard,proto3" json:"shard,omitempty"` unknownFields protoimpl.UnknownFields - - ClusterId string `protobuf:"bytes,1,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"` - Keyspace string `protobuf:"bytes,2,opt,name=keyspace,proto3" json:"keyspace,omitempty"` - Shard string `protobuf:"bytes,3,opt,name=shard,proto3" json:"shard,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ValidateVersionShardRequest) Reset() { @@ -6806,12 +6691,11 @@ func (x *ValidateVersionShardRequest) GetShard() string { } type VDiffCreateRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + ClusterId string `protobuf:"bytes,1,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"` + Request *vtctldata.VDiffCreateRequest `protobuf:"bytes,2,opt,name=request,proto3" json:"request,omitempty"` unknownFields protoimpl.UnknownFields - - ClusterId string `protobuf:"bytes,1,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"` - Request *vtctldata.VDiffCreateRequest `protobuf:"bytes,2,opt,name=request,proto3" json:"request,omitempty"` + sizeCache protoimpl.SizeCache } func (x *VDiffCreateRequest) Reset() { @@ -6859,12 +6743,11 @@ func (x *VDiffCreateRequest) GetRequest() *vtctldata.VDiffCreateRequest { } type VDiffShowRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + ClusterId string `protobuf:"bytes,1,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"` + Request *vtctldata.VDiffShowRequest `protobuf:"bytes,2,opt,name=request,proto3" json:"request,omitempty"` unknownFields protoimpl.UnknownFields - - ClusterId string `protobuf:"bytes,1,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"` - Request *vtctldata.VDiffShowRequest `protobuf:"bytes,2,opt,name=request,proto3" json:"request,omitempty"` + sizeCache protoimpl.SizeCache } func (x *VDiffShowRequest) Reset() { @@ -6912,12 +6795,11 @@ func (x *VDiffShowRequest) GetRequest() *vtctldata.VDiffShowRequest { } type VDiffProgress struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Percentage float64 `protobuf:"fixed64,1,opt,name=percentage,proto3" json:"percentage,omitempty"` + Eta string `protobuf:"bytes,2,opt,name=eta,proto3" json:"eta,omitempty"` unknownFields protoimpl.UnknownFields - - Percentage float64 `protobuf:"fixed64,1,opt,name=percentage,proto3" json:"percentage,omitempty"` - Eta string `protobuf:"bytes,2,opt,name=eta,proto3" json:"eta,omitempty"` + sizeCache protoimpl.SizeCache } func (x *VDiffProgress) Reset() { @@ -6965,16 +6847,15 @@ func (x *VDiffProgress) GetEta() string { } type VDiffShardReport struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + State string `protobuf:"bytes,1,opt,name=state,proto3" json:"state,omitempty"` + RowsCompared int64 `protobuf:"varint,2,opt,name=rows_compared,json=rowsCompared,proto3" json:"rows_compared,omitempty"` + HasMismatch bool `protobuf:"varint,3,opt,name=has_mismatch,json=hasMismatch,proto3" json:"has_mismatch,omitempty"` + StartedAt string `protobuf:"bytes,4,opt,name=started_at,json=startedAt,proto3" json:"started_at,omitempty"` + CompletedAt string `protobuf:"bytes,5,opt,name=completed_at,json=completedAt,proto3" json:"completed_at,omitempty"` + Progress *VDiffProgress `protobuf:"bytes,6,opt,name=progress,proto3" json:"progress,omitempty"` unknownFields protoimpl.UnknownFields - - State string `protobuf:"bytes,1,opt,name=state,proto3" json:"state,omitempty"` - RowsCompared int64 `protobuf:"varint,2,opt,name=rows_compared,json=rowsCompared,proto3" json:"rows_compared,omitempty"` - HasMismatch bool `protobuf:"varint,3,opt,name=has_mismatch,json=hasMismatch,proto3" json:"has_mismatch,omitempty"` - StartedAt string `protobuf:"bytes,4,opt,name=started_at,json=startedAt,proto3" json:"started_at,omitempty"` - CompletedAt string `protobuf:"bytes,5,opt,name=completed_at,json=completedAt,proto3" json:"completed_at,omitempty"` - Progress *VDiffProgress `protobuf:"bytes,6,opt,name=progress,proto3" json:"progress,omitempty"` + sizeCache protoimpl.SizeCache } func (x *VDiffShardReport) Reset() { @@ -7050,11 +6931,10 @@ func (x *VDiffShardReport) GetProgress() *VDiffProgress { } type VDiffShowResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + ShardReport map[string]*VDiffShardReport `protobuf:"bytes,1,rep,name=shard_report,json=shardReport,proto3" json:"shard_report,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` unknownFields protoimpl.UnknownFields - - ShardReport map[string]*VDiffShardReport `protobuf:"bytes,1,rep,name=shard_report,json=shardReport,proto3" json:"shard_report,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + sizeCache protoimpl.SizeCache } func (x *VDiffShowResponse) Reset() { @@ -7095,13 +6975,12 @@ func (x *VDiffShowResponse) GetShardReport() map[string]*VDiffShardReport { } type VTExplainRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Cluster string `protobuf:"bytes,1,opt,name=cluster,proto3" json:"cluster,omitempty"` + Keyspace string `protobuf:"bytes,2,opt,name=keyspace,proto3" json:"keyspace,omitempty"` + Sql string `protobuf:"bytes,3,opt,name=sql,proto3" json:"sql,omitempty"` unknownFields protoimpl.UnknownFields - - Cluster string `protobuf:"bytes,1,opt,name=cluster,proto3" json:"cluster,omitempty"` - Keyspace string `protobuf:"bytes,2,opt,name=keyspace,proto3" json:"keyspace,omitempty"` - Sql string `protobuf:"bytes,3,opt,name=sql,proto3" json:"sql,omitempty"` + sizeCache protoimpl.SizeCache } func (x *VTExplainRequest) Reset() { @@ -7156,11 +7035,10 @@ func (x *VTExplainRequest) GetSql() string { } type VTExplainResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Response string `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` unknownFields protoimpl.UnknownFields - - Response string `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` + sizeCache protoimpl.SizeCache } func (x *VTExplainResponse) Reset() { @@ -7200,18 +7078,121 @@ func (x *VTExplainResponse) GetResponse() string { return "" } -type Schema_ShardTableSize struct { - state protoimpl.MessageState +type VExplainRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + ClusterId string `protobuf:"bytes,1,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"` + Keyspace string `protobuf:"bytes,2,opt,name=keyspace,proto3" json:"keyspace,omitempty"` + Sql string `protobuf:"bytes,3,opt,name=sql,proto3" json:"sql,omitempty"` + unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache +} + +func (x *VExplainRequest) Reset() { + *x = VExplainRequest{} + mi := &file_vtadmin_proto_msgTypes[126] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *VExplainRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*VExplainRequest) ProtoMessage() {} + +func (x *VExplainRequest) ProtoReflect() protoreflect.Message { + mi := &file_vtadmin_proto_msgTypes[126] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use VExplainRequest.ProtoReflect.Descriptor instead. +func (*VExplainRequest) Descriptor() ([]byte, []int) { + return file_vtadmin_proto_rawDescGZIP(), []int{126} +} + +func (x *VExplainRequest) GetClusterId() string { + if x != nil { + return x.ClusterId + } + return "" +} + +func (x *VExplainRequest) GetKeyspace() string { + if x != nil { + return x.Keyspace + } + return "" +} + +func (x *VExplainRequest) GetSql() string { + if x != nil { + return x.Sql + } + return "" +} + +type VExplainResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + Response string `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *VExplainResponse) Reset() { + *x = VExplainResponse{} + mi := &file_vtadmin_proto_msgTypes[127] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *VExplainResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*VExplainResponse) ProtoMessage() {} + +func (x *VExplainResponse) ProtoReflect() protoreflect.Message { + mi := &file_vtadmin_proto_msgTypes[127] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use VExplainResponse.ProtoReflect.Descriptor instead. +func (*VExplainResponse) Descriptor() ([]byte, []int) { + return file_vtadmin_proto_rawDescGZIP(), []int{127} +} + +func (x *VExplainResponse) GetResponse() string { + if x != nil { + return x.Response + } + return "" +} - RowCount uint64 `protobuf:"varint,1,opt,name=row_count,json=rowCount,proto3" json:"row_count,omitempty"` - DataLength uint64 `protobuf:"varint,2,opt,name=data_length,json=dataLength,proto3" json:"data_length,omitempty"` +type Schema_ShardTableSize struct { + state protoimpl.MessageState `protogen:"open.v1"` + RowCount uint64 `protobuf:"varint,1,opt,name=row_count,json=rowCount,proto3" json:"row_count,omitempty"` + DataLength uint64 `protobuf:"varint,2,opt,name=data_length,json=dataLength,proto3" json:"data_length,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Schema_ShardTableSize) Reset() { *x = Schema_ShardTableSize{} - mi := &file_vtadmin_proto_msgTypes[129] + mi := &file_vtadmin_proto_msgTypes[131] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7223,7 +7204,7 @@ func (x *Schema_ShardTableSize) String() string { func (*Schema_ShardTableSize) ProtoMessage() {} func (x *Schema_ShardTableSize) ProtoReflect() protoreflect.Message { - mi := &file_vtadmin_proto_msgTypes[129] + mi := &file_vtadmin_proto_msgTypes[131] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7256,18 +7237,17 @@ func (x *Schema_ShardTableSize) GetDataLength() uint64 { // TableSize aggregates table size information across all shards containing // in the given keyspace and cluster, as well as per-shard size information. type Schema_TableSize struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + RowCount uint64 `protobuf:"varint,1,opt,name=row_count,json=rowCount,proto3" json:"row_count,omitempty"` + DataLength uint64 `protobuf:"varint,2,opt,name=data_length,json=dataLength,proto3" json:"data_length,omitempty"` + ByShard map[string]*Schema_ShardTableSize `protobuf:"bytes,3,rep,name=by_shard,json=byShard,proto3" json:"by_shard,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` unknownFields protoimpl.UnknownFields - - RowCount uint64 `protobuf:"varint,1,opt,name=row_count,json=rowCount,proto3" json:"row_count,omitempty"` - DataLength uint64 `protobuf:"varint,2,opt,name=data_length,json=dataLength,proto3" json:"data_length,omitempty"` - ByShard map[string]*Schema_ShardTableSize `protobuf:"bytes,3,rep,name=by_shard,json=byShard,proto3" json:"by_shard,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + sizeCache protoimpl.SizeCache } func (x *Schema_TableSize) Reset() { *x = Schema_TableSize{} - mi := &file_vtadmin_proto_msgTypes[130] + mi := &file_vtadmin_proto_msgTypes[132] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7279,7 +7259,7 @@ func (x *Schema_TableSize) String() string { func (*Schema_TableSize) ProtoMessage() {} func (x *Schema_TableSize) ProtoReflect() protoreflect.Message { - mi := &file_vtadmin_proto_msgTypes[130] + mi := &file_vtadmin_proto_msgTypes[132] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7317,17 +7297,16 @@ func (x *Schema_TableSize) GetByShard() map[string]*Schema_ShardTableSize { } type GetSchemaMigrationsRequest_ClusterRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + ClusterId string `protobuf:"bytes,1,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"` + Request *vtctldata.GetSchemaMigrationsRequest `protobuf:"bytes,2,opt,name=request,proto3" json:"request,omitempty"` unknownFields protoimpl.UnknownFields - - ClusterId string `protobuf:"bytes,1,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"` - Request *vtctldata.GetSchemaMigrationsRequest `protobuf:"bytes,2,opt,name=request,proto3" json:"request,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetSchemaMigrationsRequest_ClusterRequest) Reset() { *x = GetSchemaMigrationsRequest_ClusterRequest{} - mi := &file_vtadmin_proto_msgTypes[132] + mi := &file_vtadmin_proto_msgTypes[134] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7339,7 +7318,7 @@ func (x *GetSchemaMigrationsRequest_ClusterRequest) String() string { func (*GetSchemaMigrationsRequest_ClusterRequest) ProtoMessage() {} func (x *GetSchemaMigrationsRequest_ClusterRequest) ProtoReflect() protoreflect.Message { - mi := &file_vtadmin_proto_msgTypes[132] + mi := &file_vtadmin_proto_msgTypes[134] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7376,17 +7355,16 @@ func (x *GetSchemaMigrationsRequest_ClusterRequest) GetRequest() *vtctldata.GetS // It is only set when a ReloadSchemas request mandates Keyspaces mode // (see ReloadSchemasRequest). type ReloadSchemasResponse_KeyspaceResult struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Keyspace *Keyspace `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"` + Events []*logutil.Event `protobuf:"bytes,2,rep,name=events,proto3" json:"events,omitempty"` unknownFields protoimpl.UnknownFields - - Keyspace *Keyspace `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"` - Events []*logutil.Event `protobuf:"bytes,2,rep,name=events,proto3" json:"events,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ReloadSchemasResponse_KeyspaceResult) Reset() { *x = ReloadSchemasResponse_KeyspaceResult{} - mi := &file_vtadmin_proto_msgTypes[135] + mi := &file_vtadmin_proto_msgTypes[137] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7398,7 +7376,7 @@ func (x *ReloadSchemasResponse_KeyspaceResult) String() string { func (*ReloadSchemasResponse_KeyspaceResult) ProtoMessage() {} func (x *ReloadSchemasResponse_KeyspaceResult) ProtoReflect() protoreflect.Message { - mi := &file_vtadmin_proto_msgTypes[135] + mi := &file_vtadmin_proto_msgTypes[137] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7435,17 +7413,16 @@ func (x *ReloadSchemasResponse_KeyspaceResult) GetEvents() []*logutil.Event { // It is only set when a ReloadSchemas request mandates KeyspaceShards mode // (see ReloadSchemasRequest). type ReloadSchemasResponse_ShardResult struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Shard *Shard `protobuf:"bytes,1,opt,name=shard,proto3" json:"shard,omitempty"` + Events []*logutil.Event `protobuf:"bytes,2,rep,name=events,proto3" json:"events,omitempty"` unknownFields protoimpl.UnknownFields - - Shard *Shard `protobuf:"bytes,1,opt,name=shard,proto3" json:"shard,omitempty"` - Events []*logutil.Event `protobuf:"bytes,2,rep,name=events,proto3" json:"events,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ReloadSchemasResponse_ShardResult) Reset() { *x = ReloadSchemasResponse_ShardResult{} - mi := &file_vtadmin_proto_msgTypes[136] + mi := &file_vtadmin_proto_msgTypes[138] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7457,7 +7434,7 @@ func (x *ReloadSchemasResponse_ShardResult) String() string { func (*ReloadSchemasResponse_ShardResult) ProtoMessage() {} func (x *ReloadSchemasResponse_ShardResult) ProtoReflect() protoreflect.Message { - mi := &file_vtadmin_proto_msgTypes[136] + mi := &file_vtadmin_proto_msgTypes[138] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7495,17 +7472,16 @@ func (x *ReloadSchemasResponse_ShardResult) GetEvents() []*logutil.Event { // It is only set when a ReloadSchemas request mandates Tablets mode (see // ReloadSchemasRequest). type ReloadSchemasResponse_TabletResult struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Tablet *Tablet `protobuf:"bytes,1,opt,name=tablet,proto3" json:"tablet,omitempty"` + Result string `protobuf:"bytes,2,opt,name=result,proto3" json:"result,omitempty"` unknownFields protoimpl.UnknownFields - - Tablet *Tablet `protobuf:"bytes,1,opt,name=tablet,proto3" json:"tablet,omitempty"` - Result string `protobuf:"bytes,2,opt,name=result,proto3" json:"result,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ReloadSchemasResponse_TabletResult) Reset() { *x = ReloadSchemasResponse_TabletResult{} - mi := &file_vtadmin_proto_msgTypes[137] + mi := &file_vtadmin_proto_msgTypes[139] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -7517,7 +7493,7 @@ func (x *ReloadSchemasResponse_TabletResult) String() string { func (*ReloadSchemasResponse_TabletResult) ProtoMessage() {} func (x *ReloadSchemasResponse_TabletResult) ProtoReflect() protoreflect.Message { - mi := &file_vtadmin_proto_msgTypes[137] + mi := &file_vtadmin_proto_msgTypes[139] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -7549,7 +7525,7 @@ func (x *ReloadSchemasResponse_TabletResult) GetResult() string { var File_vtadmin_proto protoreflect.FileDescriptor -var file_vtadmin_proto_rawDesc = []byte{ +var file_vtadmin_proto_rawDesc = string([]byte{ 0x0a, 0x0d, 0x76, 0x74, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x07, 0x76, 0x74, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x1a, 0x0d, 0x6c, 0x6f, 0x67, 0x75, 0x74, 0x69, 0x6c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x0e, 0x6d, 0x79, 0x73, 0x71, 0x6c, 0x63, 0x74, @@ -8545,7 +8521,16 @@ var file_vtadmin_proto_rawDesc = []byte{ 0x52, 0x03, 0x73, 0x71, 0x6c, 0x22, 0x2f, 0x0a, 0x11, 0x56, 0x54, 0x45, 0x78, 0x70, 0x6c, 0x61, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x32, 0xbd, 0x31, 0x0a, 0x07, 0x56, 0x54, 0x41, 0x64, 0x6d, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x5e, 0x0a, 0x0f, 0x56, 0x45, 0x78, 0x70, 0x6c, 0x61, + 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x75, + 0x73, 0x74, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, + 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x6b, 0x65, 0x79, 0x73, + 0x70, 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6b, 0x65, 0x79, 0x73, + 0x70, 0x61, 0x63, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x71, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x03, 0x73, 0x71, 0x6c, 0x22, 0x2e, 0x0a, 0x10, 0x56, 0x45, 0x78, 0x70, 0x6c, 0x61, + 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x32, 0x80, 0x32, 0x0a, 0x07, 0x56, 0x54, 0x41, 0x64, 0x6d, 0x69, 0x6e, 0x12, 0x4c, 0x0a, 0x0b, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x12, 0x1b, 0x2e, 0x76, 0x74, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x79, 0x53, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1e, @@ -8929,38 +8914,42 @@ var file_vtadmin_proto_rawDesc = []byte{ 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x56, 0x54, 0x45, 0x78, 0x70, 0x6c, 0x61, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x76, 0x74, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x56, 0x54, 0x45, 0x78, 0x70, 0x6c, 0x61, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x00, 0x12, 0x55, 0x0a, 0x0e, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x44, - 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x1e, 0x2e, 0x76, 0x74, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, - 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, - 0x61, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x6a, 0x0a, 0x15, 0x57, 0x6f, - 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x54, 0x72, 0x61, 0x66, - 0x66, 0x69, 0x63, 0x12, 0x25, 0x2e, 0x76, 0x74, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x57, 0x6f, - 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x54, 0x72, 0x61, 0x66, - 0x66, 0x69, 0x63, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x76, 0x74, 0x63, - 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x53, - 0x77, 0x69, 0x74, 0x63, 0x68, 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0x26, 0x5a, 0x24, 0x76, 0x69, 0x74, 0x65, 0x73, 0x73, - 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x69, 0x74, 0x65, 0x73, 0x73, 0x2f, 0x67, 0x6f, 0x2f, 0x76, 0x74, - 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x76, 0x74, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x62, 0x06, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} + 0x65, 0x22, 0x00, 0x12, 0x41, 0x0a, 0x08, 0x56, 0x45, 0x78, 0x70, 0x6c, 0x61, 0x69, 0x6e, 0x12, + 0x18, 0x2e, 0x76, 0x74, 0x61, 0x64, 0x6d, 0x69, 0x6e, 0x2e, 0x56, 0x45, 0x78, 0x70, 0x6c, 0x61, + 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x76, 0x74, 0x61, 0x64, + 0x6d, 0x69, 0x6e, 0x2e, 0x56, 0x45, 0x78, 0x70, 0x6c, 0x61, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x55, 0x0a, 0x0e, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, + 0x6f, 0x77, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x1e, 0x2e, 0x76, 0x74, 0x61, 0x64, 0x6d, + 0x69, 0x6e, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x44, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x21, 0x2e, 0x76, 0x74, 0x63, 0x74, 0x6c, + 0x64, 0x61, 0x74, 0x61, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x44, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x6a, 0x0a, + 0x15, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x54, + 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x12, 0x25, 0x2e, 0x76, 0x74, 0x61, 0x64, 0x6d, 0x69, 0x6e, + 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, 0x6f, 0x77, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x54, + 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, + 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x57, 0x6f, 0x72, 0x6b, 0x66, 0x6c, + 0x6f, 0x77, 0x53, 0x77, 0x69, 0x74, 0x63, 0x68, 0x54, 0x72, 0x61, 0x66, 0x66, 0x69, 0x63, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0x26, 0x5a, 0x24, 0x76, 0x69, 0x74, + 0x65, 0x73, 0x73, 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x69, 0x74, 0x65, 0x73, 0x73, 0x2f, 0x67, 0x6f, + 0x2f, 0x76, 0x74, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x76, 0x74, 0x61, 0x64, 0x6d, 0x69, + 0x6e, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +}) var ( file_vtadmin_proto_rawDescOnce sync.Once - file_vtadmin_proto_rawDescData = file_vtadmin_proto_rawDesc + file_vtadmin_proto_rawDescData []byte ) func file_vtadmin_proto_rawDescGZIP() []byte { file_vtadmin_proto_rawDescOnce.Do(func() { - file_vtadmin_proto_rawDescData = protoimpl.X.CompressGZIP(file_vtadmin_proto_rawDescData) + file_vtadmin_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_vtadmin_proto_rawDesc), len(file_vtadmin_proto_rawDesc))) }) return file_vtadmin_proto_rawDescData } var file_vtadmin_proto_enumTypes = make([]protoimpl.EnumInfo, 1) -var file_vtadmin_proto_msgTypes = make([]protoimpl.MessageInfo, 139) +var file_vtadmin_proto_msgTypes = make([]protoimpl.MessageInfo, 141) var file_vtadmin_proto_goTypes = []any{ (Tablet_ServingState)(0), // 0: vtadmin.Tablet.ServingState (*Cluster)(nil), // 1: vtadmin.Cluster @@ -9089,207 +9078,209 @@ var file_vtadmin_proto_goTypes = []any{ (*VDiffShowResponse)(nil), // 124: vtadmin.VDiffShowResponse (*VTExplainRequest)(nil), // 125: vtadmin.VTExplainRequest (*VTExplainResponse)(nil), // 126: vtadmin.VTExplainResponse - nil, // 127: vtadmin.ClusterCellsAliases.AliasesEntry - nil, // 128: vtadmin.Keyspace.ShardsEntry - nil, // 129: vtadmin.Schema.TableSizesEntry - (*Schema_ShardTableSize)(nil), // 130: vtadmin.Schema.ShardTableSize - (*Schema_TableSize)(nil), // 131: vtadmin.Schema.TableSize - nil, // 132: vtadmin.Schema.TableSize.ByShardEntry - (*GetSchemaMigrationsRequest_ClusterRequest)(nil), // 133: vtadmin.GetSchemaMigrationsRequest.ClusterRequest - nil, // 134: vtadmin.GetSrvKeyspacesResponse.SrvKeyspacesEntry - nil, // 135: vtadmin.GetWorkflowsResponse.WorkflowsByClusterEntry - (*ReloadSchemasResponse_KeyspaceResult)(nil), // 136: vtadmin.ReloadSchemasResponse.KeyspaceResult - (*ReloadSchemasResponse_ShardResult)(nil), // 137: vtadmin.ReloadSchemasResponse.ShardResult - (*ReloadSchemasResponse_TabletResult)(nil), // 138: vtadmin.ReloadSchemasResponse.TabletResult - nil, // 139: vtadmin.VDiffShowResponse.ShardReportEntry - (*mysqlctl.BackupInfo)(nil), // 140: mysqlctl.BackupInfo - (*topodata.CellInfo)(nil), // 141: topodata.CellInfo - (*vtctldata.ShardReplicationPositionsResponse)(nil), // 142: vtctldata.ShardReplicationPositionsResponse - (*vtctldata.Keyspace)(nil), // 143: vtctldata.Keyspace - (*tabletmanagerdata.TableDefinition)(nil), // 144: tabletmanagerdata.TableDefinition - (*vtctldata.SchemaMigration)(nil), // 145: vtctldata.SchemaMigration - (*vtctldata.Shard)(nil), // 146: vtctldata.Shard - (*vschema.SrvVSchema)(nil), // 147: vschema.SrvVSchema - (*topodata.Tablet)(nil), // 148: topodata.Tablet - (*vschema.Keyspace)(nil), // 149: vschema.Keyspace - (*vtctldata.Workflow)(nil), // 150: vtctldata.Workflow - (*vtctldata.WorkflowDeleteRequest)(nil), // 151: vtctldata.WorkflowDeleteRequest - (*vtctldata.WorkflowSwitchTrafficRequest)(nil), // 152: vtctldata.WorkflowSwitchTrafficRequest - (*vtctldata.ApplySchemaRequest)(nil), // 153: vtctldata.ApplySchemaRequest - (*vtctldata.CancelSchemaMigrationRequest)(nil), // 154: vtctldata.CancelSchemaMigrationRequest - (*vtctldata.CleanupSchemaMigrationRequest)(nil), // 155: vtctldata.CleanupSchemaMigrationRequest - (*vtctldata.CompleteSchemaMigrationRequest)(nil), // 156: vtctldata.CompleteSchemaMigrationRequest - (*vtctldata.CreateKeyspaceRequest)(nil), // 157: vtctldata.CreateKeyspaceRequest - (*vtctldata.CreateShardRequest)(nil), // 158: vtctldata.CreateShardRequest - (*vtctldata.DeleteKeyspaceRequest)(nil), // 159: vtctldata.DeleteKeyspaceRequest - (*vtctldata.DeleteShardsRequest)(nil), // 160: vtctldata.DeleteShardsRequest - (*topodata.TabletAlias)(nil), // 161: topodata.TabletAlias - (*vtctldata.EmergencyReparentShardRequest)(nil), // 162: vtctldata.EmergencyReparentShardRequest - (*logutil.Event)(nil), // 163: logutil.Event - (*vtctldata.GetBackupsRequest)(nil), // 164: vtctldata.GetBackupsRequest - (*vtctldata.GetTransactionInfoRequest)(nil), // 165: vtctldata.GetTransactionInfoRequest - (*vtctldata.LaunchSchemaMigrationRequest)(nil), // 166: vtctldata.LaunchSchemaMigrationRequest - (*vtctldata.MaterializeCreateRequest)(nil), // 167: vtctldata.MaterializeCreateRequest - (*vtctldata.MoveTablesCompleteRequest)(nil), // 168: vtctldata.MoveTablesCompleteRequest - (*vtctldata.MoveTablesCreateRequest)(nil), // 169: vtctldata.MoveTablesCreateRequest - (*vtctldata.PlannedReparentShardRequest)(nil), // 170: vtctldata.PlannedReparentShardRequest - (*vtctldata.RetrySchemaMigrationRequest)(nil), // 171: vtctldata.RetrySchemaMigrationRequest - (*vtctldata.ReshardCreateRequest)(nil), // 172: vtctldata.ReshardCreateRequest - (*vtctldata.VDiffCreateRequest)(nil), // 173: vtctldata.VDiffCreateRequest - (*vtctldata.VDiffShowRequest)(nil), // 174: vtctldata.VDiffShowRequest - (*topodata.CellsAlias)(nil), // 175: topodata.CellsAlias - (*vtctldata.GetSchemaMigrationsRequest)(nil), // 176: vtctldata.GetSchemaMigrationsRequest - (*vtctldata.GetSrvKeyspacesResponse)(nil), // 177: vtctldata.GetSrvKeyspacesResponse - (*vtctldata.ApplySchemaResponse)(nil), // 178: vtctldata.ApplySchemaResponse - (*vtctldata.CancelSchemaMigrationResponse)(nil), // 179: vtctldata.CancelSchemaMigrationResponse - (*vtctldata.CleanupSchemaMigrationResponse)(nil), // 180: vtctldata.CleanupSchemaMigrationResponse - (*vtctldata.CompleteSchemaMigrationResponse)(nil), // 181: vtctldata.CompleteSchemaMigrationResponse - (*vtctldata.ConcludeTransactionResponse)(nil), // 182: vtctldata.ConcludeTransactionResponse - (*vtctldata.CreateShardResponse)(nil), // 183: vtctldata.CreateShardResponse - (*vtctldata.DeleteKeyspaceResponse)(nil), // 184: vtctldata.DeleteKeyspaceResponse - (*vtctldata.DeleteShardsResponse)(nil), // 185: vtctldata.DeleteShardsResponse - (*vtctldata.GetFullStatusResponse)(nil), // 186: vtctldata.GetFullStatusResponse - (*vtctldata.GetTopologyPathResponse)(nil), // 187: vtctldata.GetTopologyPathResponse - (*vtctldata.GetTransactionInfoResponse)(nil), // 188: vtctldata.GetTransactionInfoResponse - (*vtctldata.GetUnresolvedTransactionsResponse)(nil), // 189: vtctldata.GetUnresolvedTransactionsResponse - (*vtctldata.WorkflowStatusResponse)(nil), // 190: vtctldata.WorkflowStatusResponse - (*vtctldata.WorkflowUpdateResponse)(nil), // 191: vtctldata.WorkflowUpdateResponse - (*vtctldata.LaunchSchemaMigrationResponse)(nil), // 192: vtctldata.LaunchSchemaMigrationResponse - (*vtctldata.MoveTablesCompleteResponse)(nil), // 193: vtctldata.MoveTablesCompleteResponse - (*vtctldata.MaterializeCreateResponse)(nil), // 194: vtctldata.MaterializeCreateResponse - (*vtctldata.RetrySchemaMigrationResponse)(nil), // 195: vtctldata.RetrySchemaMigrationResponse - (*vtctldata.ValidateResponse)(nil), // 196: vtctldata.ValidateResponse - (*vtctldata.ValidateKeyspaceResponse)(nil), // 197: vtctldata.ValidateKeyspaceResponse - (*vtctldata.ValidateSchemaKeyspaceResponse)(nil), // 198: vtctldata.ValidateSchemaKeyspaceResponse - (*vtctldata.ValidateShardResponse)(nil), // 199: vtctldata.ValidateShardResponse - (*vtctldata.ValidateVersionKeyspaceResponse)(nil), // 200: vtctldata.ValidateVersionKeyspaceResponse - (*vtctldata.ValidateVersionShardResponse)(nil), // 201: vtctldata.ValidateVersionShardResponse - (*vtctldata.VDiffCreateResponse)(nil), // 202: vtctldata.VDiffCreateResponse - (*vtctldata.WorkflowDeleteResponse)(nil), // 203: vtctldata.WorkflowDeleteResponse - (*vtctldata.WorkflowSwitchTrafficResponse)(nil), // 204: vtctldata.WorkflowSwitchTrafficResponse + (*VExplainRequest)(nil), // 127: vtadmin.VExplainRequest + (*VExplainResponse)(nil), // 128: vtadmin.VExplainResponse + nil, // 129: vtadmin.ClusterCellsAliases.AliasesEntry + nil, // 130: vtadmin.Keyspace.ShardsEntry + nil, // 131: vtadmin.Schema.TableSizesEntry + (*Schema_ShardTableSize)(nil), // 132: vtadmin.Schema.ShardTableSize + (*Schema_TableSize)(nil), // 133: vtadmin.Schema.TableSize + nil, // 134: vtadmin.Schema.TableSize.ByShardEntry + (*GetSchemaMigrationsRequest_ClusterRequest)(nil), // 135: vtadmin.GetSchemaMigrationsRequest.ClusterRequest + nil, // 136: vtadmin.GetSrvKeyspacesResponse.SrvKeyspacesEntry + nil, // 137: vtadmin.GetWorkflowsResponse.WorkflowsByClusterEntry + (*ReloadSchemasResponse_KeyspaceResult)(nil), // 138: vtadmin.ReloadSchemasResponse.KeyspaceResult + (*ReloadSchemasResponse_ShardResult)(nil), // 139: vtadmin.ReloadSchemasResponse.ShardResult + (*ReloadSchemasResponse_TabletResult)(nil), // 140: vtadmin.ReloadSchemasResponse.TabletResult + nil, // 141: vtadmin.VDiffShowResponse.ShardReportEntry + (*mysqlctl.BackupInfo)(nil), // 142: mysqlctl.BackupInfo + (*topodata.CellInfo)(nil), // 143: topodata.CellInfo + (*vtctldata.ShardReplicationPositionsResponse)(nil), // 144: vtctldata.ShardReplicationPositionsResponse + (*vtctldata.Keyspace)(nil), // 145: vtctldata.Keyspace + (*tabletmanagerdata.TableDefinition)(nil), // 146: tabletmanagerdata.TableDefinition + (*vtctldata.SchemaMigration)(nil), // 147: vtctldata.SchemaMigration + (*vtctldata.Shard)(nil), // 148: vtctldata.Shard + (*vschema.SrvVSchema)(nil), // 149: vschema.SrvVSchema + (*topodata.Tablet)(nil), // 150: topodata.Tablet + (*vschema.Keyspace)(nil), // 151: vschema.Keyspace + (*vtctldata.Workflow)(nil), // 152: vtctldata.Workflow + (*vtctldata.WorkflowDeleteRequest)(nil), // 153: vtctldata.WorkflowDeleteRequest + (*vtctldata.WorkflowSwitchTrafficRequest)(nil), // 154: vtctldata.WorkflowSwitchTrafficRequest + (*vtctldata.ApplySchemaRequest)(nil), // 155: vtctldata.ApplySchemaRequest + (*vtctldata.CancelSchemaMigrationRequest)(nil), // 156: vtctldata.CancelSchemaMigrationRequest + (*vtctldata.CleanupSchemaMigrationRequest)(nil), // 157: vtctldata.CleanupSchemaMigrationRequest + (*vtctldata.CompleteSchemaMigrationRequest)(nil), // 158: vtctldata.CompleteSchemaMigrationRequest + (*vtctldata.CreateKeyspaceRequest)(nil), // 159: vtctldata.CreateKeyspaceRequest + (*vtctldata.CreateShardRequest)(nil), // 160: vtctldata.CreateShardRequest + (*vtctldata.DeleteKeyspaceRequest)(nil), // 161: vtctldata.DeleteKeyspaceRequest + (*vtctldata.DeleteShardsRequest)(nil), // 162: vtctldata.DeleteShardsRequest + (*topodata.TabletAlias)(nil), // 163: topodata.TabletAlias + (*vtctldata.EmergencyReparentShardRequest)(nil), // 164: vtctldata.EmergencyReparentShardRequest + (*logutil.Event)(nil), // 165: logutil.Event + (*vtctldata.GetBackupsRequest)(nil), // 166: vtctldata.GetBackupsRequest + (*vtctldata.GetTransactionInfoRequest)(nil), // 167: vtctldata.GetTransactionInfoRequest + (*vtctldata.LaunchSchemaMigrationRequest)(nil), // 168: vtctldata.LaunchSchemaMigrationRequest + (*vtctldata.MaterializeCreateRequest)(nil), // 169: vtctldata.MaterializeCreateRequest + (*vtctldata.MoveTablesCompleteRequest)(nil), // 170: vtctldata.MoveTablesCompleteRequest + (*vtctldata.MoveTablesCreateRequest)(nil), // 171: vtctldata.MoveTablesCreateRequest + (*vtctldata.PlannedReparentShardRequest)(nil), // 172: vtctldata.PlannedReparentShardRequest + (*vtctldata.RetrySchemaMigrationRequest)(nil), // 173: vtctldata.RetrySchemaMigrationRequest + (*vtctldata.ReshardCreateRequest)(nil), // 174: vtctldata.ReshardCreateRequest + (*vtctldata.VDiffCreateRequest)(nil), // 175: vtctldata.VDiffCreateRequest + (*vtctldata.VDiffShowRequest)(nil), // 176: vtctldata.VDiffShowRequest + (*topodata.CellsAlias)(nil), // 177: topodata.CellsAlias + (*vtctldata.GetSchemaMigrationsRequest)(nil), // 178: vtctldata.GetSchemaMigrationsRequest + (*vtctldata.GetSrvKeyspacesResponse)(nil), // 179: vtctldata.GetSrvKeyspacesResponse + (*vtctldata.ApplySchemaResponse)(nil), // 180: vtctldata.ApplySchemaResponse + (*vtctldata.CancelSchemaMigrationResponse)(nil), // 181: vtctldata.CancelSchemaMigrationResponse + (*vtctldata.CleanupSchemaMigrationResponse)(nil), // 182: vtctldata.CleanupSchemaMigrationResponse + (*vtctldata.CompleteSchemaMigrationResponse)(nil), // 183: vtctldata.CompleteSchemaMigrationResponse + (*vtctldata.ConcludeTransactionResponse)(nil), // 184: vtctldata.ConcludeTransactionResponse + (*vtctldata.CreateShardResponse)(nil), // 185: vtctldata.CreateShardResponse + (*vtctldata.DeleteKeyspaceResponse)(nil), // 186: vtctldata.DeleteKeyspaceResponse + (*vtctldata.DeleteShardsResponse)(nil), // 187: vtctldata.DeleteShardsResponse + (*vtctldata.GetFullStatusResponse)(nil), // 188: vtctldata.GetFullStatusResponse + (*vtctldata.GetTopologyPathResponse)(nil), // 189: vtctldata.GetTopologyPathResponse + (*vtctldata.GetTransactionInfoResponse)(nil), // 190: vtctldata.GetTransactionInfoResponse + (*vtctldata.GetUnresolvedTransactionsResponse)(nil), // 191: vtctldata.GetUnresolvedTransactionsResponse + (*vtctldata.WorkflowStatusResponse)(nil), // 192: vtctldata.WorkflowStatusResponse + (*vtctldata.WorkflowUpdateResponse)(nil), // 193: vtctldata.WorkflowUpdateResponse + (*vtctldata.LaunchSchemaMigrationResponse)(nil), // 194: vtctldata.LaunchSchemaMigrationResponse + (*vtctldata.MoveTablesCompleteResponse)(nil), // 195: vtctldata.MoveTablesCompleteResponse + (*vtctldata.MaterializeCreateResponse)(nil), // 196: vtctldata.MaterializeCreateResponse + (*vtctldata.RetrySchemaMigrationResponse)(nil), // 197: vtctldata.RetrySchemaMigrationResponse + (*vtctldata.ValidateResponse)(nil), // 198: vtctldata.ValidateResponse + (*vtctldata.ValidateKeyspaceResponse)(nil), // 199: vtctldata.ValidateKeyspaceResponse + (*vtctldata.ValidateSchemaKeyspaceResponse)(nil), // 200: vtctldata.ValidateSchemaKeyspaceResponse + (*vtctldata.ValidateShardResponse)(nil), // 201: vtctldata.ValidateShardResponse + (*vtctldata.ValidateVersionKeyspaceResponse)(nil), // 202: vtctldata.ValidateVersionKeyspaceResponse + (*vtctldata.ValidateVersionShardResponse)(nil), // 203: vtctldata.ValidateVersionShardResponse + (*vtctldata.VDiffCreateResponse)(nil), // 204: vtctldata.VDiffCreateResponse + (*vtctldata.WorkflowDeleteResponse)(nil), // 205: vtctldata.WorkflowDeleteResponse + (*vtctldata.WorkflowSwitchTrafficResponse)(nil), // 206: vtctldata.WorkflowSwitchTrafficResponse } var file_vtadmin_proto_depIdxs = []int32{ 1, // 0: vtadmin.ClusterBackup.cluster:type_name -> vtadmin.Cluster - 140, // 1: vtadmin.ClusterBackup.backup:type_name -> mysqlctl.BackupInfo + 142, // 1: vtadmin.ClusterBackup.backup:type_name -> mysqlctl.BackupInfo 1, // 2: vtadmin.ClusterCellsAliases.cluster:type_name -> vtadmin.Cluster - 127, // 3: vtadmin.ClusterCellsAliases.aliases:type_name -> vtadmin.ClusterCellsAliases.AliasesEntry + 129, // 3: vtadmin.ClusterCellsAliases.aliases:type_name -> vtadmin.ClusterCellsAliases.AliasesEntry 1, // 4: vtadmin.ClusterCellInfo.cluster:type_name -> vtadmin.Cluster - 141, // 5: vtadmin.ClusterCellInfo.cell_info:type_name -> topodata.CellInfo + 143, // 5: vtadmin.ClusterCellInfo.cell_info:type_name -> topodata.CellInfo 1, // 6: vtadmin.ClusterShardReplicationPosition.cluster:type_name -> vtadmin.Cluster - 142, // 7: vtadmin.ClusterShardReplicationPosition.position_info:type_name -> vtctldata.ShardReplicationPositionsResponse + 144, // 7: vtadmin.ClusterShardReplicationPosition.position_info:type_name -> vtctldata.ShardReplicationPositionsResponse 16, // 8: vtadmin.ClusterWorkflows.workflows:type_name -> vtadmin.Workflow 1, // 9: vtadmin.Keyspace.cluster:type_name -> vtadmin.Cluster - 143, // 10: vtadmin.Keyspace.keyspace:type_name -> vtctldata.Keyspace - 128, // 11: vtadmin.Keyspace.shards:type_name -> vtadmin.Keyspace.ShardsEntry + 145, // 10: vtadmin.Keyspace.keyspace:type_name -> vtctldata.Keyspace + 130, // 11: vtadmin.Keyspace.shards:type_name -> vtadmin.Keyspace.ShardsEntry 1, // 12: vtadmin.Schema.cluster:type_name -> vtadmin.Cluster - 144, // 13: vtadmin.Schema.table_definitions:type_name -> tabletmanagerdata.TableDefinition - 129, // 14: vtadmin.Schema.table_sizes:type_name -> vtadmin.Schema.TableSizesEntry + 146, // 13: vtadmin.Schema.table_definitions:type_name -> tabletmanagerdata.TableDefinition + 131, // 14: vtadmin.Schema.table_sizes:type_name -> vtadmin.Schema.TableSizesEntry 1, // 15: vtadmin.SchemaMigration.cluster:type_name -> vtadmin.Cluster - 145, // 16: vtadmin.SchemaMigration.schema_migration:type_name -> vtctldata.SchemaMigration + 147, // 16: vtadmin.SchemaMigration.schema_migration:type_name -> vtctldata.SchemaMigration 1, // 17: vtadmin.Shard.cluster:type_name -> vtadmin.Cluster - 146, // 18: vtadmin.Shard.shard:type_name -> vtctldata.Shard + 148, // 18: vtadmin.Shard.shard:type_name -> vtctldata.Shard 1, // 19: vtadmin.SrvVSchema.cluster:type_name -> vtadmin.Cluster - 147, // 20: vtadmin.SrvVSchema.srv_v_schema:type_name -> vschema.SrvVSchema + 149, // 20: vtadmin.SrvVSchema.srv_v_schema:type_name -> vschema.SrvVSchema 1, // 21: vtadmin.Tablet.cluster:type_name -> vtadmin.Cluster - 148, // 22: vtadmin.Tablet.tablet:type_name -> topodata.Tablet + 150, // 22: vtadmin.Tablet.tablet:type_name -> topodata.Tablet 0, // 23: vtadmin.Tablet.state:type_name -> vtadmin.Tablet.ServingState 1, // 24: vtadmin.VSchema.cluster:type_name -> vtadmin.Cluster - 149, // 25: vtadmin.VSchema.v_schema:type_name -> vschema.Keyspace + 151, // 25: vtadmin.VSchema.v_schema:type_name -> vschema.Keyspace 1, // 26: vtadmin.Vtctld.cluster:type_name -> vtadmin.Cluster 1, // 27: vtadmin.VTGate.cluster:type_name -> vtadmin.Cluster 1, // 28: vtadmin.Workflow.cluster:type_name -> vtadmin.Cluster - 150, // 29: vtadmin.Workflow.workflow:type_name -> vtctldata.Workflow - 151, // 30: vtadmin.WorkflowDeleteRequest.request:type_name -> vtctldata.WorkflowDeleteRequest - 152, // 31: vtadmin.WorkflowSwitchTrafficRequest.request:type_name -> vtctldata.WorkflowSwitchTrafficRequest - 153, // 32: vtadmin.ApplySchemaRequest.request:type_name -> vtctldata.ApplySchemaRequest - 154, // 33: vtadmin.CancelSchemaMigrationRequest.request:type_name -> vtctldata.CancelSchemaMigrationRequest - 155, // 34: vtadmin.CleanupSchemaMigrationRequest.request:type_name -> vtctldata.CleanupSchemaMigrationRequest - 156, // 35: vtadmin.CompleteSchemaMigrationRequest.request:type_name -> vtctldata.CompleteSchemaMigrationRequest - 157, // 36: vtadmin.CreateKeyspaceRequest.options:type_name -> vtctldata.CreateKeyspaceRequest + 152, // 29: vtadmin.Workflow.workflow:type_name -> vtctldata.Workflow + 153, // 30: vtadmin.WorkflowDeleteRequest.request:type_name -> vtctldata.WorkflowDeleteRequest + 154, // 31: vtadmin.WorkflowSwitchTrafficRequest.request:type_name -> vtctldata.WorkflowSwitchTrafficRequest + 155, // 32: vtadmin.ApplySchemaRequest.request:type_name -> vtctldata.ApplySchemaRequest + 156, // 33: vtadmin.CancelSchemaMigrationRequest.request:type_name -> vtctldata.CancelSchemaMigrationRequest + 157, // 34: vtadmin.CleanupSchemaMigrationRequest.request:type_name -> vtctldata.CleanupSchemaMigrationRequest + 158, // 35: vtadmin.CompleteSchemaMigrationRequest.request:type_name -> vtctldata.CompleteSchemaMigrationRequest + 159, // 36: vtadmin.CreateKeyspaceRequest.options:type_name -> vtctldata.CreateKeyspaceRequest 7, // 37: vtadmin.CreateKeyspaceResponse.keyspace:type_name -> vtadmin.Keyspace - 158, // 38: vtadmin.CreateShardRequest.options:type_name -> vtctldata.CreateShardRequest - 159, // 39: vtadmin.DeleteKeyspaceRequest.options:type_name -> vtctldata.DeleteKeyspaceRequest - 160, // 40: vtadmin.DeleteShardsRequest.options:type_name -> vtctldata.DeleteShardsRequest - 161, // 41: vtadmin.DeleteTabletRequest.alias:type_name -> topodata.TabletAlias + 160, // 38: vtadmin.CreateShardRequest.options:type_name -> vtctldata.CreateShardRequest + 161, // 39: vtadmin.DeleteKeyspaceRequest.options:type_name -> vtctldata.DeleteKeyspaceRequest + 162, // 40: vtadmin.DeleteShardsRequest.options:type_name -> vtctldata.DeleteShardsRequest + 163, // 41: vtadmin.DeleteTabletRequest.alias:type_name -> topodata.TabletAlias 1, // 42: vtadmin.DeleteTabletResponse.cluster:type_name -> vtadmin.Cluster - 162, // 43: vtadmin.EmergencyFailoverShardRequest.options:type_name -> vtctldata.EmergencyReparentShardRequest + 164, // 43: vtadmin.EmergencyFailoverShardRequest.options:type_name -> vtctldata.EmergencyReparentShardRequest 1, // 44: vtadmin.EmergencyFailoverShardResponse.cluster:type_name -> vtadmin.Cluster - 161, // 45: vtadmin.EmergencyFailoverShardResponse.promoted_primary:type_name -> topodata.TabletAlias - 163, // 46: vtadmin.EmergencyFailoverShardResponse.events:type_name -> logutil.Event + 163, // 45: vtadmin.EmergencyFailoverShardResponse.promoted_primary:type_name -> topodata.TabletAlias + 165, // 46: vtadmin.EmergencyFailoverShardResponse.events:type_name -> logutil.Event 61, // 47: vtadmin.FindSchemaRequest.table_size_options:type_name -> vtadmin.GetSchemaTableSizeOptions - 164, // 48: vtadmin.GetBackupsRequest.request_options:type_name -> vtctldata.GetBackupsRequest + 166, // 48: vtadmin.GetBackupsRequest.request_options:type_name -> vtctldata.GetBackupsRequest 2, // 49: vtadmin.GetBackupsResponse.backups:type_name -> vtadmin.ClusterBackup 4, // 50: vtadmin.GetCellInfosResponse.cell_infos:type_name -> vtadmin.ClusterCellInfo 3, // 51: vtadmin.GetCellsAliasesResponse.aliases:type_name -> vtadmin.ClusterCellsAliases 1, // 52: vtadmin.GetClustersResponse.clusters:type_name -> vtadmin.Cluster - 161, // 53: vtadmin.GetFullStatusRequest.alias:type_name -> topodata.TabletAlias + 163, // 53: vtadmin.GetFullStatusRequest.alias:type_name -> topodata.TabletAlias 15, // 54: vtadmin.GetGatesResponse.gates:type_name -> vtadmin.VTGate 7, // 55: vtadmin.GetKeyspacesResponse.keyspaces:type_name -> vtadmin.Keyspace 61, // 56: vtadmin.GetSchemaRequest.table_size_options:type_name -> vtadmin.GetSchemaTableSizeOptions 61, // 57: vtadmin.GetSchemasRequest.table_size_options:type_name -> vtadmin.GetSchemaTableSizeOptions 8, // 58: vtadmin.GetSchemasResponse.schemas:type_name -> vtadmin.Schema - 133, // 59: vtadmin.GetSchemaMigrationsRequest.cluster_requests:type_name -> vtadmin.GetSchemaMigrationsRequest.ClusterRequest + 135, // 59: vtadmin.GetSchemaMigrationsRequest.cluster_requests:type_name -> vtadmin.GetSchemaMigrationsRequest.ClusterRequest 9, // 60: vtadmin.GetSchemaMigrationsResponse.schema_migrations:type_name -> vtadmin.SchemaMigration 5, // 61: vtadmin.GetShardReplicationPositionsResponse.replication_positions:type_name -> vtadmin.ClusterShardReplicationPosition - 134, // 62: vtadmin.GetSrvKeyspacesResponse.srv_keyspaces:type_name -> vtadmin.GetSrvKeyspacesResponse.SrvKeyspacesEntry + 136, // 62: vtadmin.GetSrvKeyspacesResponse.srv_keyspaces:type_name -> vtadmin.GetSrvKeyspacesResponse.SrvKeyspacesEntry 11, // 63: vtadmin.GetSrvVSchemasResponse.srv_v_schemas:type_name -> vtadmin.SrvVSchema - 161, // 64: vtadmin.GetTabletRequest.alias:type_name -> topodata.TabletAlias + 163, // 64: vtadmin.GetTabletRequest.alias:type_name -> topodata.TabletAlias 12, // 65: vtadmin.GetTabletsResponse.tablets:type_name -> vtadmin.Tablet - 165, // 66: vtadmin.GetTransactionInfoRequest.request:type_name -> vtctldata.GetTransactionInfoRequest + 167, // 66: vtadmin.GetTransactionInfoRequest.request:type_name -> vtctldata.GetTransactionInfoRequest 13, // 67: vtadmin.GetVSchemasResponse.v_schemas:type_name -> vtadmin.VSchema 14, // 68: vtadmin.GetVtctldsResponse.vtctlds:type_name -> vtadmin.Vtctld - 135, // 69: vtadmin.GetWorkflowsResponse.workflows_by_cluster:type_name -> vtadmin.GetWorkflowsResponse.WorkflowsByClusterEntry - 166, // 70: vtadmin.LaunchSchemaMigrationRequest.request:type_name -> vtctldata.LaunchSchemaMigrationRequest - 167, // 71: vtadmin.MaterializeCreateRequest.request:type_name -> vtctldata.MaterializeCreateRequest - 168, // 72: vtadmin.MoveTablesCompleteRequest.request:type_name -> vtctldata.MoveTablesCompleteRequest - 169, // 73: vtadmin.MoveTablesCreateRequest.request:type_name -> vtctldata.MoveTablesCreateRequest - 161, // 74: vtadmin.PingTabletRequest.alias:type_name -> topodata.TabletAlias + 137, // 69: vtadmin.GetWorkflowsResponse.workflows_by_cluster:type_name -> vtadmin.GetWorkflowsResponse.WorkflowsByClusterEntry + 168, // 70: vtadmin.LaunchSchemaMigrationRequest.request:type_name -> vtctldata.LaunchSchemaMigrationRequest + 169, // 71: vtadmin.MaterializeCreateRequest.request:type_name -> vtctldata.MaterializeCreateRequest + 170, // 72: vtadmin.MoveTablesCompleteRequest.request:type_name -> vtctldata.MoveTablesCompleteRequest + 171, // 73: vtadmin.MoveTablesCreateRequest.request:type_name -> vtctldata.MoveTablesCreateRequest + 163, // 74: vtadmin.PingTabletRequest.alias:type_name -> topodata.TabletAlias 1, // 75: vtadmin.PingTabletResponse.cluster:type_name -> vtadmin.Cluster - 170, // 76: vtadmin.PlannedFailoverShardRequest.options:type_name -> vtctldata.PlannedReparentShardRequest + 172, // 76: vtadmin.PlannedFailoverShardRequest.options:type_name -> vtctldata.PlannedReparentShardRequest 1, // 77: vtadmin.PlannedFailoverShardResponse.cluster:type_name -> vtadmin.Cluster - 161, // 78: vtadmin.PlannedFailoverShardResponse.promoted_primary:type_name -> topodata.TabletAlias - 163, // 79: vtadmin.PlannedFailoverShardResponse.events:type_name -> logutil.Event - 161, // 80: vtadmin.RefreshStateRequest.alias:type_name -> topodata.TabletAlias + 163, // 78: vtadmin.PlannedFailoverShardResponse.promoted_primary:type_name -> topodata.TabletAlias + 165, // 79: vtadmin.PlannedFailoverShardResponse.events:type_name -> logutil.Event + 163, // 80: vtadmin.RefreshStateRequest.alias:type_name -> topodata.TabletAlias 1, // 81: vtadmin.RefreshStateResponse.cluster:type_name -> vtadmin.Cluster - 161, // 82: vtadmin.ReloadSchemasRequest.tablets:type_name -> topodata.TabletAlias - 136, // 83: vtadmin.ReloadSchemasResponse.keyspace_results:type_name -> vtadmin.ReloadSchemasResponse.KeyspaceResult - 137, // 84: vtadmin.ReloadSchemasResponse.shard_results:type_name -> vtadmin.ReloadSchemasResponse.ShardResult - 138, // 85: vtadmin.ReloadSchemasResponse.tablet_results:type_name -> vtadmin.ReloadSchemasResponse.TabletResult - 163, // 86: vtadmin.ReloadSchemaShardResponse.events:type_name -> logutil.Event - 161, // 87: vtadmin.RefreshTabletReplicationSourceRequest.alias:type_name -> topodata.TabletAlias - 161, // 88: vtadmin.RefreshTabletReplicationSourceResponse.primary:type_name -> topodata.TabletAlias + 163, // 82: vtadmin.ReloadSchemasRequest.tablets:type_name -> topodata.TabletAlias + 138, // 83: vtadmin.ReloadSchemasResponse.keyspace_results:type_name -> vtadmin.ReloadSchemasResponse.KeyspaceResult + 139, // 84: vtadmin.ReloadSchemasResponse.shard_results:type_name -> vtadmin.ReloadSchemasResponse.ShardResult + 140, // 85: vtadmin.ReloadSchemasResponse.tablet_results:type_name -> vtadmin.ReloadSchemasResponse.TabletResult + 165, // 86: vtadmin.ReloadSchemaShardResponse.events:type_name -> logutil.Event + 163, // 87: vtadmin.RefreshTabletReplicationSourceRequest.alias:type_name -> topodata.TabletAlias + 163, // 88: vtadmin.RefreshTabletReplicationSourceResponse.primary:type_name -> topodata.TabletAlias 1, // 89: vtadmin.RefreshTabletReplicationSourceResponse.cluster:type_name -> vtadmin.Cluster - 171, // 90: vtadmin.RetrySchemaMigrationRequest.request:type_name -> vtctldata.RetrySchemaMigrationRequest - 161, // 91: vtadmin.RunHealthCheckRequest.alias:type_name -> topodata.TabletAlias + 173, // 90: vtadmin.RetrySchemaMigrationRequest.request:type_name -> vtctldata.RetrySchemaMigrationRequest + 163, // 91: vtadmin.RunHealthCheckRequest.alias:type_name -> topodata.TabletAlias 1, // 92: vtadmin.RunHealthCheckResponse.cluster:type_name -> vtadmin.Cluster - 172, // 93: vtadmin.ReshardCreateRequest.request:type_name -> vtctldata.ReshardCreateRequest - 161, // 94: vtadmin.SetReadOnlyRequest.alias:type_name -> topodata.TabletAlias - 161, // 95: vtadmin.SetReadWriteRequest.alias:type_name -> topodata.TabletAlias - 161, // 96: vtadmin.StartReplicationRequest.alias:type_name -> topodata.TabletAlias + 174, // 93: vtadmin.ReshardCreateRequest.request:type_name -> vtctldata.ReshardCreateRequest + 163, // 94: vtadmin.SetReadOnlyRequest.alias:type_name -> topodata.TabletAlias + 163, // 95: vtadmin.SetReadWriteRequest.alias:type_name -> topodata.TabletAlias + 163, // 96: vtadmin.StartReplicationRequest.alias:type_name -> topodata.TabletAlias 1, // 97: vtadmin.StartReplicationResponse.cluster:type_name -> vtadmin.Cluster - 161, // 98: vtadmin.StopReplicationRequest.alias:type_name -> topodata.TabletAlias + 163, // 98: vtadmin.StopReplicationRequest.alias:type_name -> topodata.TabletAlias 1, // 99: vtadmin.StopReplicationResponse.cluster:type_name -> vtadmin.Cluster - 161, // 100: vtadmin.TabletExternallyPromotedRequest.alias:type_name -> topodata.TabletAlias + 163, // 100: vtadmin.TabletExternallyPromotedRequest.alias:type_name -> topodata.TabletAlias 1, // 101: vtadmin.TabletExternallyPromotedResponse.cluster:type_name -> vtadmin.Cluster - 161, // 102: vtadmin.TabletExternallyPromotedResponse.new_primary:type_name -> topodata.TabletAlias - 161, // 103: vtadmin.TabletExternallyPromotedResponse.old_primary:type_name -> topodata.TabletAlias - 161, // 104: vtadmin.TabletExternallyReparentedRequest.alias:type_name -> topodata.TabletAlias - 173, // 105: vtadmin.VDiffCreateRequest.request:type_name -> vtctldata.VDiffCreateRequest - 174, // 106: vtadmin.VDiffShowRequest.request:type_name -> vtctldata.VDiffShowRequest + 163, // 102: vtadmin.TabletExternallyPromotedResponse.new_primary:type_name -> topodata.TabletAlias + 163, // 103: vtadmin.TabletExternallyPromotedResponse.old_primary:type_name -> topodata.TabletAlias + 163, // 104: vtadmin.TabletExternallyReparentedRequest.alias:type_name -> topodata.TabletAlias + 175, // 105: vtadmin.VDiffCreateRequest.request:type_name -> vtctldata.VDiffCreateRequest + 176, // 106: vtadmin.VDiffShowRequest.request:type_name -> vtctldata.VDiffShowRequest 122, // 107: vtadmin.VDiffShardReport.progress:type_name -> vtadmin.VDiffProgress - 139, // 108: vtadmin.VDiffShowResponse.shard_report:type_name -> vtadmin.VDiffShowResponse.ShardReportEntry - 175, // 109: vtadmin.ClusterCellsAliases.AliasesEntry.value:type_name -> topodata.CellsAlias - 146, // 110: vtadmin.Keyspace.ShardsEntry.value:type_name -> vtctldata.Shard - 131, // 111: vtadmin.Schema.TableSizesEntry.value:type_name -> vtadmin.Schema.TableSize - 132, // 112: vtadmin.Schema.TableSize.by_shard:type_name -> vtadmin.Schema.TableSize.ByShardEntry - 130, // 113: vtadmin.Schema.TableSize.ByShardEntry.value:type_name -> vtadmin.Schema.ShardTableSize - 176, // 114: vtadmin.GetSchemaMigrationsRequest.ClusterRequest.request:type_name -> vtctldata.GetSchemaMigrationsRequest - 177, // 115: vtadmin.GetSrvKeyspacesResponse.SrvKeyspacesEntry.value:type_name -> vtctldata.GetSrvKeyspacesResponse + 141, // 108: vtadmin.VDiffShowResponse.shard_report:type_name -> vtadmin.VDiffShowResponse.ShardReportEntry + 177, // 109: vtadmin.ClusterCellsAliases.AliasesEntry.value:type_name -> topodata.CellsAlias + 148, // 110: vtadmin.Keyspace.ShardsEntry.value:type_name -> vtctldata.Shard + 133, // 111: vtadmin.Schema.TableSizesEntry.value:type_name -> vtadmin.Schema.TableSize + 134, // 112: vtadmin.Schema.TableSize.by_shard:type_name -> vtadmin.Schema.TableSize.ByShardEntry + 132, // 113: vtadmin.Schema.TableSize.ByShardEntry.value:type_name -> vtadmin.Schema.ShardTableSize + 178, // 114: vtadmin.GetSchemaMigrationsRequest.ClusterRequest.request:type_name -> vtctldata.GetSchemaMigrationsRequest + 179, // 115: vtadmin.GetSrvKeyspacesResponse.SrvKeyspacesEntry.value:type_name -> vtctldata.GetSrvKeyspacesResponse 6, // 116: vtadmin.GetWorkflowsResponse.WorkflowsByClusterEntry.value:type_name -> vtadmin.ClusterWorkflows 7, // 117: vtadmin.ReloadSchemasResponse.KeyspaceResult.keyspace:type_name -> vtadmin.Keyspace - 163, // 118: vtadmin.ReloadSchemasResponse.KeyspaceResult.events:type_name -> logutil.Event + 165, // 118: vtadmin.ReloadSchemasResponse.KeyspaceResult.events:type_name -> logutil.Event 10, // 119: vtadmin.ReloadSchemasResponse.ShardResult.shard:type_name -> vtadmin.Shard - 163, // 120: vtadmin.ReloadSchemasResponse.ShardResult.events:type_name -> logutil.Event + 165, // 120: vtadmin.ReloadSchemasResponse.ShardResult.events:type_name -> logutil.Event 12, // 121: vtadmin.ReloadSchemasResponse.TabletResult.tablet:type_name -> vtadmin.Tablet 123, // 122: vtadmin.VDiffShowResponse.ShardReportEntry.value:type_name -> vtadmin.VDiffShardReport 19, // 123: vtadmin.VTAdmin.ApplySchema:input_type -> vtadmin.ApplySchemaRequest @@ -9362,82 +9353,84 @@ var file_vtadmin_proto_depIdxs = []int32{ 120, // 190: vtadmin.VTAdmin.VDiffCreate:input_type -> vtadmin.VDiffCreateRequest 121, // 191: vtadmin.VTAdmin.VDiffShow:input_type -> vtadmin.VDiffShowRequest 125, // 192: vtadmin.VTAdmin.VTExplain:input_type -> vtadmin.VTExplainRequest - 17, // 193: vtadmin.VTAdmin.WorkflowDelete:input_type -> vtadmin.WorkflowDeleteRequest - 18, // 194: vtadmin.VTAdmin.WorkflowSwitchTraffic:input_type -> vtadmin.WorkflowSwitchTrafficRequest - 178, // 195: vtadmin.VTAdmin.ApplySchema:output_type -> vtctldata.ApplySchemaResponse - 179, // 196: vtadmin.VTAdmin.CancelSchemaMigration:output_type -> vtctldata.CancelSchemaMigrationResponse - 180, // 197: vtadmin.VTAdmin.CleanupSchemaMigration:output_type -> vtctldata.CleanupSchemaMigrationResponse - 181, // 198: vtadmin.VTAdmin.CompleteSchemaMigration:output_type -> vtctldata.CompleteSchemaMigrationResponse - 182, // 199: vtadmin.VTAdmin.ConcludeTransaction:output_type -> vtctldata.ConcludeTransactionResponse - 25, // 200: vtadmin.VTAdmin.CreateKeyspace:output_type -> vtadmin.CreateKeyspaceResponse - 183, // 201: vtadmin.VTAdmin.CreateShard:output_type -> vtctldata.CreateShardResponse - 184, // 202: vtadmin.VTAdmin.DeleteKeyspace:output_type -> vtctldata.DeleteKeyspaceResponse - 185, // 203: vtadmin.VTAdmin.DeleteShards:output_type -> vtctldata.DeleteShardsResponse - 30, // 204: vtadmin.VTAdmin.DeleteTablet:output_type -> vtadmin.DeleteTabletResponse - 32, // 205: vtadmin.VTAdmin.EmergencyFailoverShard:output_type -> vtadmin.EmergencyFailoverShardResponse - 8, // 206: vtadmin.VTAdmin.FindSchema:output_type -> vtadmin.Schema - 35, // 207: vtadmin.VTAdmin.GetBackups:output_type -> vtadmin.GetBackupsResponse - 37, // 208: vtadmin.VTAdmin.GetCellInfos:output_type -> vtadmin.GetCellInfosResponse - 39, // 209: vtadmin.VTAdmin.GetCellsAliases:output_type -> vtadmin.GetCellsAliasesResponse - 41, // 210: vtadmin.VTAdmin.GetClusters:output_type -> vtadmin.GetClustersResponse - 186, // 211: vtadmin.VTAdmin.GetFullStatus:output_type -> vtctldata.GetFullStatusResponse - 44, // 212: vtadmin.VTAdmin.GetGates:output_type -> vtadmin.GetGatesResponse - 7, // 213: vtadmin.VTAdmin.GetKeyspace:output_type -> vtadmin.Keyspace - 47, // 214: vtadmin.VTAdmin.GetKeyspaces:output_type -> vtadmin.GetKeyspacesResponse - 8, // 215: vtadmin.VTAdmin.GetSchema:output_type -> vtadmin.Schema - 50, // 216: vtadmin.VTAdmin.GetSchemas:output_type -> vtadmin.GetSchemasResponse - 52, // 217: vtadmin.VTAdmin.GetSchemaMigrations:output_type -> vtadmin.GetSchemaMigrationsResponse - 54, // 218: vtadmin.VTAdmin.GetShardReplicationPositions:output_type -> vtadmin.GetShardReplicationPositionsResponse - 177, // 219: vtadmin.VTAdmin.GetSrvKeyspace:output_type -> vtctldata.GetSrvKeyspacesResponse - 57, // 220: vtadmin.VTAdmin.GetSrvKeyspaces:output_type -> vtadmin.GetSrvKeyspacesResponse - 11, // 221: vtadmin.VTAdmin.GetSrvVSchema:output_type -> vtadmin.SrvVSchema - 60, // 222: vtadmin.VTAdmin.GetSrvVSchemas:output_type -> vtadmin.GetSrvVSchemasResponse - 12, // 223: vtadmin.VTAdmin.GetTablet:output_type -> vtadmin.Tablet - 64, // 224: vtadmin.VTAdmin.GetTablets:output_type -> vtadmin.GetTabletsResponse - 187, // 225: vtadmin.VTAdmin.GetTopologyPath:output_type -> vtctldata.GetTopologyPathResponse - 188, // 226: vtadmin.VTAdmin.GetTransactionInfo:output_type -> vtctldata.GetTransactionInfoResponse - 189, // 227: vtadmin.VTAdmin.GetUnresolvedTransactions:output_type -> vtctldata.GetUnresolvedTransactionsResponse - 13, // 228: vtadmin.VTAdmin.GetVSchema:output_type -> vtadmin.VSchema - 70, // 229: vtadmin.VTAdmin.GetVSchemas:output_type -> vtadmin.GetVSchemasResponse - 72, // 230: vtadmin.VTAdmin.GetVtctlds:output_type -> vtadmin.GetVtctldsResponse - 16, // 231: vtadmin.VTAdmin.GetWorkflow:output_type -> vtadmin.Workflow - 78, // 232: vtadmin.VTAdmin.GetWorkflows:output_type -> vtadmin.GetWorkflowsResponse - 190, // 233: vtadmin.VTAdmin.GetWorkflowStatus:output_type -> vtctldata.WorkflowStatusResponse - 191, // 234: vtadmin.VTAdmin.StartWorkflow:output_type -> vtctldata.WorkflowUpdateResponse - 191, // 235: vtadmin.VTAdmin.StopWorkflow:output_type -> vtctldata.WorkflowUpdateResponse - 192, // 236: vtadmin.VTAdmin.LaunchSchemaMigration:output_type -> vtctldata.LaunchSchemaMigrationResponse - 193, // 237: vtadmin.VTAdmin.MoveTablesComplete:output_type -> vtctldata.MoveTablesCompleteResponse - 190, // 238: vtadmin.VTAdmin.MoveTablesCreate:output_type -> vtctldata.WorkflowStatusResponse - 194, // 239: vtadmin.VTAdmin.MaterializeCreate:output_type -> vtctldata.MaterializeCreateResponse - 84, // 240: vtadmin.VTAdmin.PingTablet:output_type -> vtadmin.PingTabletResponse - 86, // 241: vtadmin.VTAdmin.PlannedFailoverShard:output_type -> vtadmin.PlannedFailoverShardResponse - 88, // 242: vtadmin.VTAdmin.RebuildKeyspaceGraph:output_type -> vtadmin.RebuildKeyspaceGraphResponse - 90, // 243: vtadmin.VTAdmin.RefreshState:output_type -> vtadmin.RefreshStateResponse - 96, // 244: vtadmin.VTAdmin.RefreshTabletReplicationSource:output_type -> vtadmin.RefreshTabletReplicationSourceResponse - 92, // 245: vtadmin.VTAdmin.ReloadSchemas:output_type -> vtadmin.ReloadSchemasResponse - 94, // 246: vtadmin.VTAdmin.ReloadSchemaShard:output_type -> vtadmin.ReloadSchemaShardResponse - 98, // 247: vtadmin.VTAdmin.RemoveKeyspaceCell:output_type -> vtadmin.RemoveKeyspaceCellResponse - 195, // 248: vtadmin.VTAdmin.RetrySchemaMigration:output_type -> vtctldata.RetrySchemaMigrationResponse - 101, // 249: vtadmin.VTAdmin.RunHealthCheck:output_type -> vtadmin.RunHealthCheckResponse - 190, // 250: vtadmin.VTAdmin.ReshardCreate:output_type -> vtctldata.WorkflowStatusResponse - 104, // 251: vtadmin.VTAdmin.SetReadOnly:output_type -> vtadmin.SetReadOnlyResponse - 106, // 252: vtadmin.VTAdmin.SetReadWrite:output_type -> vtadmin.SetReadWriteResponse - 108, // 253: vtadmin.VTAdmin.StartReplication:output_type -> vtadmin.StartReplicationResponse - 110, // 254: vtadmin.VTAdmin.StopReplication:output_type -> vtadmin.StopReplicationResponse - 112, // 255: vtadmin.VTAdmin.TabletExternallyPromoted:output_type -> vtadmin.TabletExternallyPromotedResponse - 196, // 256: vtadmin.VTAdmin.Validate:output_type -> vtctldata.ValidateResponse - 197, // 257: vtadmin.VTAdmin.ValidateKeyspace:output_type -> vtctldata.ValidateKeyspaceResponse - 198, // 258: vtadmin.VTAdmin.ValidateSchemaKeyspace:output_type -> vtctldata.ValidateSchemaKeyspaceResponse - 199, // 259: vtadmin.VTAdmin.ValidateShard:output_type -> vtctldata.ValidateShardResponse - 200, // 260: vtadmin.VTAdmin.ValidateVersionKeyspace:output_type -> vtctldata.ValidateVersionKeyspaceResponse - 201, // 261: vtadmin.VTAdmin.ValidateVersionShard:output_type -> vtctldata.ValidateVersionShardResponse - 202, // 262: vtadmin.VTAdmin.VDiffCreate:output_type -> vtctldata.VDiffCreateResponse - 124, // 263: vtadmin.VTAdmin.VDiffShow:output_type -> vtadmin.VDiffShowResponse - 126, // 264: vtadmin.VTAdmin.VTExplain:output_type -> vtadmin.VTExplainResponse - 203, // 265: vtadmin.VTAdmin.WorkflowDelete:output_type -> vtctldata.WorkflowDeleteResponse - 204, // 266: vtadmin.VTAdmin.WorkflowSwitchTraffic:output_type -> vtctldata.WorkflowSwitchTrafficResponse - 195, // [195:267] is the sub-list for method output_type - 123, // [123:195] is the sub-list for method input_type + 127, // 193: vtadmin.VTAdmin.VExplain:input_type -> vtadmin.VExplainRequest + 17, // 194: vtadmin.VTAdmin.WorkflowDelete:input_type -> vtadmin.WorkflowDeleteRequest + 18, // 195: vtadmin.VTAdmin.WorkflowSwitchTraffic:input_type -> vtadmin.WorkflowSwitchTrafficRequest + 180, // 196: vtadmin.VTAdmin.ApplySchema:output_type -> vtctldata.ApplySchemaResponse + 181, // 197: vtadmin.VTAdmin.CancelSchemaMigration:output_type -> vtctldata.CancelSchemaMigrationResponse + 182, // 198: vtadmin.VTAdmin.CleanupSchemaMigration:output_type -> vtctldata.CleanupSchemaMigrationResponse + 183, // 199: vtadmin.VTAdmin.CompleteSchemaMigration:output_type -> vtctldata.CompleteSchemaMigrationResponse + 184, // 200: vtadmin.VTAdmin.ConcludeTransaction:output_type -> vtctldata.ConcludeTransactionResponse + 25, // 201: vtadmin.VTAdmin.CreateKeyspace:output_type -> vtadmin.CreateKeyspaceResponse + 185, // 202: vtadmin.VTAdmin.CreateShard:output_type -> vtctldata.CreateShardResponse + 186, // 203: vtadmin.VTAdmin.DeleteKeyspace:output_type -> vtctldata.DeleteKeyspaceResponse + 187, // 204: vtadmin.VTAdmin.DeleteShards:output_type -> vtctldata.DeleteShardsResponse + 30, // 205: vtadmin.VTAdmin.DeleteTablet:output_type -> vtadmin.DeleteTabletResponse + 32, // 206: vtadmin.VTAdmin.EmergencyFailoverShard:output_type -> vtadmin.EmergencyFailoverShardResponse + 8, // 207: vtadmin.VTAdmin.FindSchema:output_type -> vtadmin.Schema + 35, // 208: vtadmin.VTAdmin.GetBackups:output_type -> vtadmin.GetBackupsResponse + 37, // 209: vtadmin.VTAdmin.GetCellInfos:output_type -> vtadmin.GetCellInfosResponse + 39, // 210: vtadmin.VTAdmin.GetCellsAliases:output_type -> vtadmin.GetCellsAliasesResponse + 41, // 211: vtadmin.VTAdmin.GetClusters:output_type -> vtadmin.GetClustersResponse + 188, // 212: vtadmin.VTAdmin.GetFullStatus:output_type -> vtctldata.GetFullStatusResponse + 44, // 213: vtadmin.VTAdmin.GetGates:output_type -> vtadmin.GetGatesResponse + 7, // 214: vtadmin.VTAdmin.GetKeyspace:output_type -> vtadmin.Keyspace + 47, // 215: vtadmin.VTAdmin.GetKeyspaces:output_type -> vtadmin.GetKeyspacesResponse + 8, // 216: vtadmin.VTAdmin.GetSchema:output_type -> vtadmin.Schema + 50, // 217: vtadmin.VTAdmin.GetSchemas:output_type -> vtadmin.GetSchemasResponse + 52, // 218: vtadmin.VTAdmin.GetSchemaMigrations:output_type -> vtadmin.GetSchemaMigrationsResponse + 54, // 219: vtadmin.VTAdmin.GetShardReplicationPositions:output_type -> vtadmin.GetShardReplicationPositionsResponse + 179, // 220: vtadmin.VTAdmin.GetSrvKeyspace:output_type -> vtctldata.GetSrvKeyspacesResponse + 57, // 221: vtadmin.VTAdmin.GetSrvKeyspaces:output_type -> vtadmin.GetSrvKeyspacesResponse + 11, // 222: vtadmin.VTAdmin.GetSrvVSchema:output_type -> vtadmin.SrvVSchema + 60, // 223: vtadmin.VTAdmin.GetSrvVSchemas:output_type -> vtadmin.GetSrvVSchemasResponse + 12, // 224: vtadmin.VTAdmin.GetTablet:output_type -> vtadmin.Tablet + 64, // 225: vtadmin.VTAdmin.GetTablets:output_type -> vtadmin.GetTabletsResponse + 189, // 226: vtadmin.VTAdmin.GetTopologyPath:output_type -> vtctldata.GetTopologyPathResponse + 190, // 227: vtadmin.VTAdmin.GetTransactionInfo:output_type -> vtctldata.GetTransactionInfoResponse + 191, // 228: vtadmin.VTAdmin.GetUnresolvedTransactions:output_type -> vtctldata.GetUnresolvedTransactionsResponse + 13, // 229: vtadmin.VTAdmin.GetVSchema:output_type -> vtadmin.VSchema + 70, // 230: vtadmin.VTAdmin.GetVSchemas:output_type -> vtadmin.GetVSchemasResponse + 72, // 231: vtadmin.VTAdmin.GetVtctlds:output_type -> vtadmin.GetVtctldsResponse + 16, // 232: vtadmin.VTAdmin.GetWorkflow:output_type -> vtadmin.Workflow + 78, // 233: vtadmin.VTAdmin.GetWorkflows:output_type -> vtadmin.GetWorkflowsResponse + 192, // 234: vtadmin.VTAdmin.GetWorkflowStatus:output_type -> vtctldata.WorkflowStatusResponse + 193, // 235: vtadmin.VTAdmin.StartWorkflow:output_type -> vtctldata.WorkflowUpdateResponse + 193, // 236: vtadmin.VTAdmin.StopWorkflow:output_type -> vtctldata.WorkflowUpdateResponse + 194, // 237: vtadmin.VTAdmin.LaunchSchemaMigration:output_type -> vtctldata.LaunchSchemaMigrationResponse + 195, // 238: vtadmin.VTAdmin.MoveTablesComplete:output_type -> vtctldata.MoveTablesCompleteResponse + 192, // 239: vtadmin.VTAdmin.MoveTablesCreate:output_type -> vtctldata.WorkflowStatusResponse + 196, // 240: vtadmin.VTAdmin.MaterializeCreate:output_type -> vtctldata.MaterializeCreateResponse + 84, // 241: vtadmin.VTAdmin.PingTablet:output_type -> vtadmin.PingTabletResponse + 86, // 242: vtadmin.VTAdmin.PlannedFailoverShard:output_type -> vtadmin.PlannedFailoverShardResponse + 88, // 243: vtadmin.VTAdmin.RebuildKeyspaceGraph:output_type -> vtadmin.RebuildKeyspaceGraphResponse + 90, // 244: vtadmin.VTAdmin.RefreshState:output_type -> vtadmin.RefreshStateResponse + 96, // 245: vtadmin.VTAdmin.RefreshTabletReplicationSource:output_type -> vtadmin.RefreshTabletReplicationSourceResponse + 92, // 246: vtadmin.VTAdmin.ReloadSchemas:output_type -> vtadmin.ReloadSchemasResponse + 94, // 247: vtadmin.VTAdmin.ReloadSchemaShard:output_type -> vtadmin.ReloadSchemaShardResponse + 98, // 248: vtadmin.VTAdmin.RemoveKeyspaceCell:output_type -> vtadmin.RemoveKeyspaceCellResponse + 197, // 249: vtadmin.VTAdmin.RetrySchemaMigration:output_type -> vtctldata.RetrySchemaMigrationResponse + 101, // 250: vtadmin.VTAdmin.RunHealthCheck:output_type -> vtadmin.RunHealthCheckResponse + 192, // 251: vtadmin.VTAdmin.ReshardCreate:output_type -> vtctldata.WorkflowStatusResponse + 104, // 252: vtadmin.VTAdmin.SetReadOnly:output_type -> vtadmin.SetReadOnlyResponse + 106, // 253: vtadmin.VTAdmin.SetReadWrite:output_type -> vtadmin.SetReadWriteResponse + 108, // 254: vtadmin.VTAdmin.StartReplication:output_type -> vtadmin.StartReplicationResponse + 110, // 255: vtadmin.VTAdmin.StopReplication:output_type -> vtadmin.StopReplicationResponse + 112, // 256: vtadmin.VTAdmin.TabletExternallyPromoted:output_type -> vtadmin.TabletExternallyPromotedResponse + 198, // 257: vtadmin.VTAdmin.Validate:output_type -> vtctldata.ValidateResponse + 199, // 258: vtadmin.VTAdmin.ValidateKeyspace:output_type -> vtctldata.ValidateKeyspaceResponse + 200, // 259: vtadmin.VTAdmin.ValidateSchemaKeyspace:output_type -> vtctldata.ValidateSchemaKeyspaceResponse + 201, // 260: vtadmin.VTAdmin.ValidateShard:output_type -> vtctldata.ValidateShardResponse + 202, // 261: vtadmin.VTAdmin.ValidateVersionKeyspace:output_type -> vtctldata.ValidateVersionKeyspaceResponse + 203, // 262: vtadmin.VTAdmin.ValidateVersionShard:output_type -> vtctldata.ValidateVersionShardResponse + 204, // 263: vtadmin.VTAdmin.VDiffCreate:output_type -> vtctldata.VDiffCreateResponse + 124, // 264: vtadmin.VTAdmin.VDiffShow:output_type -> vtadmin.VDiffShowResponse + 126, // 265: vtadmin.VTAdmin.VTExplain:output_type -> vtadmin.VTExplainResponse + 128, // 266: vtadmin.VTAdmin.VExplain:output_type -> vtadmin.VExplainResponse + 205, // 267: vtadmin.VTAdmin.WorkflowDelete:output_type -> vtctldata.WorkflowDeleteResponse + 206, // 268: vtadmin.VTAdmin.WorkflowSwitchTraffic:output_type -> vtctldata.WorkflowSwitchTrafficResponse + 196, // [196:269] is the sub-list for method output_type + 123, // [123:196] is the sub-list for method input_type 123, // [123:123] is the sub-list for extension type_name 123, // [123:123] is the sub-list for extension extendee 0, // [0:123] is the sub-list for field type_name @@ -9452,9 +9445,9 @@ func file_vtadmin_proto_init() { out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_vtadmin_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_vtadmin_proto_rawDesc), len(file_vtadmin_proto_rawDesc)), NumEnums: 1, - NumMessages: 139, + NumMessages: 141, NumExtensions: 0, NumServices: 1, }, @@ -9464,7 +9457,6 @@ func file_vtadmin_proto_init() { MessageInfos: file_vtadmin_proto_msgTypes, }.Build() File_vtadmin_proto = out.File - file_vtadmin_proto_rawDesc = nil file_vtadmin_proto_goTypes = nil file_vtadmin_proto_depIdxs = nil } diff --git a/go/vt/proto/vtadmin/vtadmin_grpc.pb.go b/go/vt/proto/vtadmin/vtadmin_grpc.pb.go index 89fffccd424..b1b84e6c2db 100644 --- a/go/vt/proto/vtadmin/vtadmin_grpc.pb.go +++ b/go/vt/proto/vtadmin/vtadmin_grpc.pb.go @@ -215,6 +215,9 @@ type VTAdminClient interface { // VTExplain provides information on how Vitess plans to execute a // particular query. VTExplain(ctx context.Context, in *VTExplainRequest, opts ...grpc.CallOption) (*VTExplainResponse, error) + // VExplain provides information on how Vitess plans to execute a + // particular query. + VExplain(ctx context.Context, in *VExplainRequest, opts ...grpc.CallOption) (*VExplainResponse, error) // WorkflowDelete deletes a vreplication workflow. WorkflowDelete(ctx context.Context, in *WorkflowDeleteRequest, opts ...grpc.CallOption) (*vtctldata.WorkflowDeleteResponse, error) // WorkflowSwitchTraffic switches traffic for a VReplication workflow. @@ -859,6 +862,15 @@ func (c *vTAdminClient) VTExplain(ctx context.Context, in *VTExplainRequest, opt return out, nil } +func (c *vTAdminClient) VExplain(ctx context.Context, in *VExplainRequest, opts ...grpc.CallOption) (*VExplainResponse, error) { + out := new(VExplainResponse) + err := c.cc.Invoke(ctx, "/vtadmin.VTAdmin/VExplain", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *vTAdminClient) WorkflowDelete(ctx context.Context, in *WorkflowDeleteRequest, opts ...grpc.CallOption) (*vtctldata.WorkflowDeleteResponse, error) { out := new(vtctldata.WorkflowDeleteResponse) err := c.cc.Invoke(ctx, "/vtadmin.VTAdmin/WorkflowDelete", in, out, opts...) @@ -1073,6 +1085,9 @@ type VTAdminServer interface { // VTExplain provides information on how Vitess plans to execute a // particular query. VTExplain(context.Context, *VTExplainRequest) (*VTExplainResponse, error) + // VExplain provides information on how Vitess plans to execute a + // particular query. + VExplain(context.Context, *VExplainRequest) (*VExplainResponse, error) // WorkflowDelete deletes a vreplication workflow. WorkflowDelete(context.Context, *WorkflowDeleteRequest) (*vtctldata.WorkflowDeleteResponse, error) // WorkflowSwitchTraffic switches traffic for a VReplication workflow. @@ -1294,6 +1309,9 @@ func (UnimplementedVTAdminServer) VDiffShow(context.Context, *VDiffShowRequest) func (UnimplementedVTAdminServer) VTExplain(context.Context, *VTExplainRequest) (*VTExplainResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method VTExplain not implemented") } +func (UnimplementedVTAdminServer) VExplain(context.Context, *VExplainRequest) (*VExplainResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method VExplain not implemented") +} func (UnimplementedVTAdminServer) WorkflowDelete(context.Context, *WorkflowDeleteRequest) (*vtctldata.WorkflowDeleteResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method WorkflowDelete not implemented") } @@ -2573,6 +2591,24 @@ func _VTAdmin_VTExplain_Handler(srv interface{}, ctx context.Context, dec func(i return interceptor(ctx, in, info, handler) } +func _VTAdmin_VExplain_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(VExplainRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(VTAdminServer).VExplain(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/vtadmin.VTAdmin/VExplain", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(VTAdminServer).VExplain(ctx, req.(*VExplainRequest)) + } + return interceptor(ctx, in, info, handler) +} + func _VTAdmin_WorkflowDelete_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(WorkflowDeleteRequest) if err := dec(in); err != nil { @@ -2896,6 +2932,10 @@ var VTAdmin_ServiceDesc = grpc.ServiceDesc{ MethodName: "VTExplain", Handler: _VTAdmin_VTExplain_Handler, }, + { + MethodName: "VExplain", + Handler: _VTAdmin_VExplain_Handler, + }, { MethodName: "WorkflowDelete", Handler: _VTAdmin_WorkflowDelete_Handler, diff --git a/go/vt/proto/vtadmin/vtadmin_vtproto.pb.go b/go/vt/proto/vtadmin/vtadmin_vtproto.pb.go index 82cca2cea06..93001e5d228 100644 --- a/go/vt/proto/vtadmin/vtadmin_vtproto.pb.go +++ b/go/vt/proto/vtadmin/vtadmin_vtproto.pb.go @@ -1,5 +1,5 @@ // Code generated by protoc-gen-go-vtproto. DO NOT EDIT. -// protoc-gen-go-vtproto version: v0.6.1-0.20241011083415-71c992bc3c87 +// protoc-gen-go-vtproto version: v0.6.1-0.20241121165744-79df5c4772f2 // source: vtadmin.proto package vtadmin @@ -2801,6 +2801,42 @@ func (m *VTExplainResponse) CloneMessageVT() proto.Message { return m.CloneVT() } +func (m *VExplainRequest) CloneVT() *VExplainRequest { + if m == nil { + return (*VExplainRequest)(nil) + } + r := new(VExplainRequest) + r.ClusterId = m.ClusterId + r.Keyspace = m.Keyspace + r.Sql = m.Sql + if len(m.unknownFields) > 0 { + r.unknownFields = make([]byte, len(m.unknownFields)) + copy(r.unknownFields, m.unknownFields) + } + return r +} + +func (m *VExplainRequest) CloneMessageVT() proto.Message { + return m.CloneVT() +} + +func (m *VExplainResponse) CloneVT() *VExplainResponse { + if m == nil { + return (*VExplainResponse)(nil) + } + r := new(VExplainResponse) + r.Response = m.Response + if len(m.unknownFields) > 0 { + r.unknownFields = make([]byte, len(m.unknownFields)) + copy(r.unknownFields, m.unknownFields) + } + return r +} + +func (m *VExplainResponse) CloneMessageVT() proto.Message { + return m.CloneVT() +} + func (m *Cluster) MarshalVT() (dAtA []byte, err error) { if m == nil { return nil, nil @@ -9860,6 +9896,100 @@ func (m *VTExplainResponse) MarshalToSizedBufferVT(dAtA []byte) (int, error) { return len(dAtA) - i, nil } +func (m *VExplainRequest) MarshalVT() (dAtA []byte, err error) { + if m == nil { + return nil, nil + } + size := m.SizeVT() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBufferVT(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *VExplainRequest) MarshalToVT(dAtA []byte) (int, error) { + size := m.SizeVT() + return m.MarshalToSizedBufferVT(dAtA[:size]) +} + +func (m *VExplainRequest) MarshalToSizedBufferVT(dAtA []byte) (int, error) { + if m == nil { + return 0, nil + } + i := len(dAtA) + _ = i + var l int + _ = l + if m.unknownFields != nil { + i -= len(m.unknownFields) + copy(dAtA[i:], m.unknownFields) + } + if len(m.Sql) > 0 { + i -= len(m.Sql) + copy(dAtA[i:], m.Sql) + i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Sql))) + i-- + dAtA[i] = 0x1a + } + if len(m.Keyspace) > 0 { + i -= len(m.Keyspace) + copy(dAtA[i:], m.Keyspace) + i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Keyspace))) + i-- + dAtA[i] = 0x12 + } + if len(m.ClusterId) > 0 { + i -= len(m.ClusterId) + copy(dAtA[i:], m.ClusterId) + i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.ClusterId))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + +func (m *VExplainResponse) MarshalVT() (dAtA []byte, err error) { + if m == nil { + return nil, nil + } + size := m.SizeVT() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBufferVT(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *VExplainResponse) MarshalToVT(dAtA []byte) (int, error) { + size := m.SizeVT() + return m.MarshalToSizedBufferVT(dAtA[:size]) +} + +func (m *VExplainResponse) MarshalToSizedBufferVT(dAtA []byte) (int, error) { + if m == nil { + return 0, nil + } + i := len(dAtA) + _ = i + var l int + _ = l + if m.unknownFields != nil { + i -= len(m.unknownFields) + copy(dAtA[i:], m.unknownFields) + } + if len(m.Response) > 0 { + i -= len(m.Response) + copy(dAtA[i:], m.Response) + i = protohelpers.EncodeVarint(dAtA, i, uint64(len(m.Response))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + func (m *Cluster) SizeVT() (n int) { if m == nil { return 0 @@ -12560,6 +12690,42 @@ func (m *VTExplainResponse) SizeVT() (n int) { return n } +func (m *VExplainRequest) SizeVT() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.ClusterId) + if l > 0 { + n += 1 + l + protohelpers.SizeOfVarint(uint64(l)) + } + l = len(m.Keyspace) + if l > 0 { + n += 1 + l + protohelpers.SizeOfVarint(uint64(l)) + } + l = len(m.Sql) + if l > 0 { + n += 1 + l + protohelpers.SizeOfVarint(uint64(l)) + } + n += len(m.unknownFields) + return n +} + +func (m *VExplainResponse) SizeVT() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.Response) + if l > 0 { + n += 1 + l + protohelpers.SizeOfVarint(uint64(l)) + } + n += len(m.unknownFields) + return n +} + func (m *Cluster) UnmarshalVT(dAtA []byte) error { l := len(dAtA) iNdEx := 0 @@ -29699,3 +29865,233 @@ func (m *VTExplainResponse) UnmarshalVT(dAtA []byte) error { } return nil } +func (m *VExplainRequest) UnmarshalVT(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protohelpers.ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: VExplainRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: VExplainRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ClusterId", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protohelpers.ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protohelpers.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protohelpers.ErrInvalidLength + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ClusterId = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Keyspace", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protohelpers.ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protohelpers.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protohelpers.ErrInvalidLength + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Keyspace = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Sql", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protohelpers.ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protohelpers.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protohelpers.ErrInvalidLength + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Sql = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := protohelpers.Skip(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protohelpers.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *VExplainResponse) UnmarshalVT(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protohelpers.ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: VExplainResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: VExplainResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Response", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protohelpers.ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protohelpers.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protohelpers.ErrInvalidLength + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Response = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := protohelpers.Skip(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return protohelpers.ErrInvalidLength + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} diff --git a/go/vt/proto/vtctldata/vtctldata.pb.go b/go/vt/proto/vtctldata/vtctldata.pb.go index e036ef521de..ded30cd7f34 100644 --- a/go/vt/proto/vtctldata/vtctldata.pb.go +++ b/go/vt/proto/vtctldata/vtctldata.pb.go @@ -18,7 +18,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.35.1 +// protoc-gen-go v1.36.4 // protoc v3.21.3 // source: vtctldata.proto @@ -29,6 +29,7 @@ import ( protoimpl "google.golang.org/protobuf/runtime/protoimpl" reflect "reflect" sync "sync" + unsafe "unsafe" binlogdata "vitess.io/vitess/go/vt/proto/binlogdata" logutil "vitess.io/vitess/go/vt/proto/logutil" mysqlctl "vitess.io/vitess/go/vt/proto/mysqlctl" @@ -326,12 +327,11 @@ func (SchemaMigration_Status) EnumDescriptor() ([]byte, []int) { // ExecuteVtctlCommandRequest is the payload for ExecuteVtctlCommand. // timeouts are in nanoseconds. type ExecuteVtctlCommandRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Args []string `protobuf:"bytes,1,rep,name=args,proto3" json:"args,omitempty"` + ActionTimeout int64 `protobuf:"varint,2,opt,name=action_timeout,json=actionTimeout,proto3" json:"action_timeout,omitempty"` unknownFields protoimpl.UnknownFields - - Args []string `protobuf:"bytes,1,rep,name=args,proto3" json:"args,omitempty"` - ActionTimeout int64 `protobuf:"varint,2,opt,name=action_timeout,json=actionTimeout,proto3" json:"action_timeout,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ExecuteVtctlCommandRequest) Reset() { @@ -380,11 +380,10 @@ func (x *ExecuteVtctlCommandRequest) GetActionTimeout() int64 { // ExecuteVtctlCommandResponse is streamed back by ExecuteVtctlCommand. type ExecuteVtctlCommandResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Event *logutil.Event `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` unknownFields protoimpl.UnknownFields - - Event *logutil.Event `protobuf:"bytes,1,opt,name=event,proto3" json:"event,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ExecuteVtctlCommandResponse) Reset() { @@ -426,17 +425,16 @@ func (x *ExecuteVtctlCommandResponse) GetEvent() *logutil.Event { // TableMaterializeSttings contains the settings for one table. type TableMaterializeSettings struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - TargetTable string `protobuf:"bytes,1,opt,name=target_table,json=targetTable,proto3" json:"target_table,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + TargetTable string `protobuf:"bytes,1,opt,name=target_table,json=targetTable,proto3" json:"target_table,omitempty"` // source_expression is a select statement. SourceExpression string `protobuf:"bytes,2,opt,name=source_expression,json=sourceExpression,proto3" json:"source_expression,omitempty"` // create_ddl contains the DDL to create the target table. // If empty, the target table must already exist. // if "copy", the target table DDL is the same as the source table. - CreateDdl string `protobuf:"bytes,3,opt,name=create_ddl,json=createDdl,proto3" json:"create_ddl,omitempty"` + CreateDdl string `protobuf:"bytes,3,opt,name=create_ddl,json=createDdl,proto3" json:"create_ddl,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *TableMaterializeSettings) Reset() { @@ -492,10 +490,7 @@ func (x *TableMaterializeSettings) GetCreateDdl() string { // MaterializeSettings contains the settings for the Materialize command. type MaterializeSettings struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // workflow is the name of the workflow. Workflow string `protobuf:"bytes,1,opt,name=workflow,proto3" json:"workflow,omitempty"` SourceKeyspace string `protobuf:"bytes,2,opt,name=source_keyspace,json=sourceKeyspace,proto3" json:"source_keyspace,omitempty"` @@ -526,6 +521,8 @@ type MaterializeSettings struct { WorkflowOptions *WorkflowOptions `protobuf:"bytes,17,opt,name=workflow_options,json=workflowOptions,proto3" json:"workflow_options,omitempty"` // ReferenceTables is set to a csv list of tables, if the materialization is for reference tables. ReferenceTables []string `protobuf:"bytes,18,rep,name=reference_tables,json=referenceTables,proto3" json:"reference_tables,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *MaterializeSettings) Reset() { @@ -685,12 +682,11 @@ func (x *MaterializeSettings) GetReferenceTables() []string { } type Keyspace struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Keyspace *topodata.Keyspace `protobuf:"bytes,2,opt,name=keyspace,proto3" json:"keyspace,omitempty"` unknownFields protoimpl.UnknownFields - - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - Keyspace *topodata.Keyspace `protobuf:"bytes,2,opt,name=keyspace,proto3" json:"keyspace,omitempty"` + sizeCache protoimpl.SizeCache } func (x *Keyspace) Reset() { @@ -739,10 +735,7 @@ func (x *Keyspace) GetKeyspace() *topodata.Keyspace { // SchemaMigration represents a row in the schema_migrations sidecar table. type SchemaMigration struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Uuid string `protobuf:"bytes,1,opt,name=uuid,proto3" json:"uuid,omitempty"` Keyspace string `protobuf:"bytes,2,opt,name=keyspace,proto3" json:"keyspace,omitempty"` Shard string `protobuf:"bytes,3,opt,name=shard,proto3" json:"shard,omitempty"` @@ -797,6 +790,8 @@ type SchemaMigration struct { ReviewedAt *vttime.Time `protobuf:"bytes,52,opt,name=reviewed_at,json=reviewedAt,proto3" json:"reviewed_at,omitempty"` ReadyToCompleteAt *vttime.Time `protobuf:"bytes,53,opt,name=ready_to_complete_at,json=readyToCompleteAt,proto3" json:"ready_to_complete_at,omitempty"` RemovedForeignKeyNames string `protobuf:"bytes,54,opt,name=removed_foreign_key_names,json=removedForeignKeyNames,proto3" json:"removed_foreign_key_names,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *SchemaMigration) Reset() { @@ -1208,13 +1203,12 @@ func (x *SchemaMigration) GetRemovedForeignKeyNames() string { } type Shard struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + Shard *topodata.Shard `protobuf:"bytes,3,opt,name=shard,proto3" json:"shard,omitempty"` unknownFields protoimpl.UnknownFields - - Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"` - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - Shard *topodata.Shard `protobuf:"bytes,3,opt,name=shard,proto3" json:"shard,omitempty"` + sizeCache protoimpl.SizeCache } func (x *Shard) Reset() { @@ -1269,11 +1263,8 @@ func (x *Shard) GetShard() *topodata.Shard { } type WorkflowOptions struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - TenantId string `protobuf:"bytes,1,opt,name=tenant_id,json=tenantId,proto3" json:"tenant_id,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + TenantId string `protobuf:"bytes,1,opt,name=tenant_id,json=tenantId,proto3" json:"tenant_id,omitempty"` // Remove auto_increment clauses on tables when moving them to a sharded // keyspace and optionally replace them with vschema AutoIncrement // definitions. @@ -1281,10 +1272,12 @@ type WorkflowOptions struct { // Shards on which vreplication streams in the target keyspace are created for this workflow and to which the data // from the source will be vreplicated. Shards []string `protobuf:"bytes,3,rep,name=shards,proto3" json:"shards,omitempty"` - Config map[string]string `protobuf:"bytes,4,rep,name=config,proto3" json:"config,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Config map[string]string `protobuf:"bytes,4,rep,name=config,proto3" json:"config,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` // Where to create any related schema and vschema objects such as // sequence tables. GlobalKeyspace string `protobuf:"bytes,5,opt,name=global_keyspace,json=globalKeyspace,proto3" json:"global_keyspace,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *WorkflowOptions) Reset() { @@ -1354,17 +1347,14 @@ func (x *WorkflowOptions) GetGlobalKeyspace() string { // TODO: comment the hell out of this. type Workflow struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` Source *Workflow_ReplicationLocation `protobuf:"bytes,2,opt,name=source,proto3" json:"source,omitempty"` Target *Workflow_ReplicationLocation `protobuf:"bytes,3,opt,name=target,proto3" json:"target,omitempty"` // This represents how long it's been since we processed any event in the // stream. MaxVReplicationLag int64 `protobuf:"varint,4,opt,name=max_v_replication_lag,json=maxVReplicationLag,proto3" json:"max_v_replication_lag,omitempty"` - ShardStreams map[string]*Workflow_ShardStream `protobuf:"bytes,5,rep,name=shard_streams,json=shardStreams,proto3" json:"shard_streams,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + ShardStreams map[string]*Workflow_ShardStream `protobuf:"bytes,5,rep,name=shard_streams,json=shardStreams,proto3" json:"shard_streams,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` WorkflowType string `protobuf:"bytes,6,opt,name=workflow_type,json=workflowType,proto3" json:"workflow_type,omitempty"` WorkflowSubType string `protobuf:"bytes,7,opt,name=workflow_sub_type,json=workflowSubType,proto3" json:"workflow_sub_type,omitempty"` // This represents the lag across all shards, between the current time and @@ -1375,7 +1365,9 @@ type Workflow struct { DeferSecondaryKeys bool `protobuf:"varint,9,opt,name=defer_secondary_keys,json=deferSecondaryKeys,proto3" json:"defer_secondary_keys,omitempty"` // These are additional (optional) settings for vreplication workflows. Previously we used to add it to the // binlogdata.BinlogSource proto object. More details in go/vt/sidecardb/schema/vreplication.sql. - Options *WorkflowOptions `protobuf:"bytes,10,opt,name=options,proto3" json:"options,omitempty"` + Options *WorkflowOptions `protobuf:"bytes,10,opt,name=options,proto3" json:"options,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Workflow) Reset() { @@ -1479,12 +1471,11 @@ func (x *Workflow) GetOptions() *WorkflowOptions { } type AddCellInfoRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + CellInfo *topodata.CellInfo `protobuf:"bytes,2,opt,name=cell_info,json=cellInfo,proto3" json:"cell_info,omitempty"` unknownFields protoimpl.UnknownFields - - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - CellInfo *topodata.CellInfo `protobuf:"bytes,2,opt,name=cell_info,json=cellInfo,proto3" json:"cell_info,omitempty"` + sizeCache protoimpl.SizeCache } func (x *AddCellInfoRequest) Reset() { @@ -1532,9 +1523,9 @@ func (x *AddCellInfoRequest) GetCellInfo() *topodata.CellInfo { } type AddCellInfoResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *AddCellInfoResponse) Reset() { @@ -1568,12 +1559,11 @@ func (*AddCellInfoResponse) Descriptor() ([]byte, []int) { } type AddCellsAliasRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Cells []string `protobuf:"bytes,2,rep,name=cells,proto3" json:"cells,omitempty"` unknownFields protoimpl.UnknownFields - - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - Cells []string `protobuf:"bytes,2,rep,name=cells,proto3" json:"cells,omitempty"` + sizeCache protoimpl.SizeCache } func (x *AddCellsAliasRequest) Reset() { @@ -1621,9 +1611,9 @@ func (x *AddCellsAliasRequest) GetCells() []string { } type AddCellsAliasResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *AddCellsAliasResponse) Reset() { @@ -1657,10 +1647,7 @@ func (*AddCellsAliasResponse) Descriptor() ([]byte, []int) { } type ApplyKeyspaceRoutingRulesRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` KeyspaceRoutingRules *vschema.KeyspaceRoutingRules `protobuf:"bytes,1,opt,name=keyspace_routing_rules,json=keyspaceRoutingRules,proto3" json:"keyspace_routing_rules,omitempty"` // SkipRebuild, if set, will cause ApplyKeyspaceRoutingRules to skip rebuilding the // SrvVSchema objects in each cell in RebuildCells. @@ -1669,7 +1656,9 @@ type ApplyKeyspaceRoutingRulesRequest struct { // provided the SrvVSchema will be rebuilt in every cell in the topology. // // Ignored if SkipRebuild is set. - RebuildCells []string `protobuf:"bytes,3,rep,name=rebuild_cells,json=rebuildCells,proto3" json:"rebuild_cells,omitempty"` + RebuildCells []string `protobuf:"bytes,3,rep,name=rebuild_cells,json=rebuildCells,proto3" json:"rebuild_cells,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ApplyKeyspaceRoutingRulesRequest) Reset() { @@ -1724,12 +1713,11 @@ func (x *ApplyKeyspaceRoutingRulesRequest) GetRebuildCells() []string { } type ApplyKeyspaceRoutingRulesResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // KeyspaceRoutingRules returns the current set of rules. KeyspaceRoutingRules *vschema.KeyspaceRoutingRules `protobuf:"bytes,1,opt,name=keyspace_routing_rules,json=keyspaceRoutingRules,proto3" json:"keyspace_routing_rules,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ApplyKeyspaceRoutingRulesResponse) Reset() { @@ -1770,11 +1758,8 @@ func (x *ApplyKeyspaceRoutingRulesResponse) GetKeyspaceRoutingRules() *vschema.K } type ApplyRoutingRulesRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - RoutingRules *vschema.RoutingRules `protobuf:"bytes,1,opt,name=routing_rules,json=routingRules,proto3" json:"routing_rules,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + RoutingRules *vschema.RoutingRules `protobuf:"bytes,1,opt,name=routing_rules,json=routingRules,proto3" json:"routing_rules,omitempty"` // SkipRebuild, if set, will cause ApplyRoutingRules to skip rebuilding the // SrvVSchema objects in each cell in RebuildCells. SkipRebuild bool `protobuf:"varint,2,opt,name=skip_rebuild,json=skipRebuild,proto3" json:"skip_rebuild,omitempty"` @@ -1782,7 +1767,9 @@ type ApplyRoutingRulesRequest struct { // provided the SrvVSchema will be rebuilt in every cell in the topology. // // Ignored if SkipRebuild is set. - RebuildCells []string `protobuf:"bytes,3,rep,name=rebuild_cells,json=rebuildCells,proto3" json:"rebuild_cells,omitempty"` + RebuildCells []string `protobuf:"bytes,3,rep,name=rebuild_cells,json=rebuildCells,proto3" json:"rebuild_cells,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ApplyRoutingRulesRequest) Reset() { @@ -1837,9 +1824,9 @@ func (x *ApplyRoutingRulesRequest) GetRebuildCells() []string { } type ApplyRoutingRulesResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ApplyRoutingRulesResponse) Reset() { @@ -1873,10 +1860,7 @@ func (*ApplyRoutingRulesResponse) Descriptor() ([]byte, []int) { } type ApplyShardRoutingRulesRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` ShardRoutingRules *vschema.ShardRoutingRules `protobuf:"bytes,1,opt,name=shard_routing_rules,json=shardRoutingRules,proto3" json:"shard_routing_rules,omitempty"` // SkipRebuild, if set, will cause ApplyShardRoutingRules to skip rebuilding the // SrvVSchema objects in each cell in RebuildCells. @@ -1885,7 +1869,9 @@ type ApplyShardRoutingRulesRequest struct { // provided the SrvVSchema will be rebuilt in every cell in the topology. // // Ignored if SkipRebuild is set. - RebuildCells []string `protobuf:"bytes,3,rep,name=rebuild_cells,json=rebuildCells,proto3" json:"rebuild_cells,omitempty"` + RebuildCells []string `protobuf:"bytes,3,rep,name=rebuild_cells,json=rebuildCells,proto3" json:"rebuild_cells,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ApplyShardRoutingRulesRequest) Reset() { @@ -1940,9 +1926,9 @@ func (x *ApplyShardRoutingRulesRequest) GetRebuildCells() []string { } type ApplyShardRoutingRulesResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ApplyShardRoutingRulesResponse) Reset() { @@ -1976,11 +1962,8 @@ func (*ApplyShardRoutingRulesResponse) Descriptor() ([]byte, []int) { } type ApplySchemaRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"` // SQL commands to run. Sql []string `protobuf:"bytes,3,rep,name=sql,proto3" json:"sql,omitempty"` // Online DDL strategy, compatible with @@ddl_strategy session variable (examples: 'gh-ost', 'pt-osc', 'gh-ost --max-load=Threads_running=100'") @@ -1998,7 +1981,9 @@ type ApplySchemaRequest struct { // set by the application to further identify the caller. CallerId *vtrpc.CallerID `protobuf:"bytes,9,opt,name=caller_id,json=callerId,proto3" json:"caller_id,omitempty"` // BatchSize indicates how many queries to apply together - BatchSize int64 `protobuf:"varint,10,opt,name=batch_size,json=batchSize,proto3" json:"batch_size,omitempty"` + BatchSize int64 `protobuf:"varint,10,opt,name=batch_size,json=batchSize,proto3" json:"batch_size,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ApplySchemaRequest) Reset() { @@ -2088,12 +2073,11 @@ func (x *ApplySchemaRequest) GetBatchSize() int64 { } type ApplySchemaResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - UuidList []string `protobuf:"bytes,1,rep,name=uuid_list,json=uuidList,proto3" json:"uuid_list,omitempty"` - RowsAffectedByShard map[string]uint64 `protobuf:"bytes,2,rep,name=rows_affected_by_shard,json=rowsAffectedByShard,proto3" json:"rows_affected_by_shard,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` + state protoimpl.MessageState `protogen:"open.v1"` + UuidList []string `protobuf:"bytes,1,rep,name=uuid_list,json=uuidList,proto3" json:"uuid_list,omitempty"` + RowsAffectedByShard map[string]uint64 `protobuf:"bytes,2,rep,name=rows_affected_by_shard,json=rowsAffectedByShard,proto3" json:"rows_affected_by_shard,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ApplySchemaResponse) Reset() { @@ -2141,18 +2125,17 @@ func (x *ApplySchemaResponse) GetRowsAffectedByShard() map[string]uint64 { } type ApplyVSchemaRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"` - SkipRebuild bool `protobuf:"varint,2,opt,name=skip_rebuild,json=skipRebuild,proto3" json:"skip_rebuild,omitempty"` - DryRun bool `protobuf:"varint,3,opt,name=dry_run,json=dryRun,proto3" json:"dry_run,omitempty"` - Cells []string `protobuf:"bytes,4,rep,name=cells,proto3" json:"cells,omitempty"` - VSchema *vschema.Keyspace `protobuf:"bytes,5,opt,name=v_schema,json=vSchema,proto3" json:"v_schema,omitempty"` - Sql string `protobuf:"bytes,6,opt,name=sql,proto3" json:"sql,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"` + SkipRebuild bool `protobuf:"varint,2,opt,name=skip_rebuild,json=skipRebuild,proto3" json:"skip_rebuild,omitempty"` + DryRun bool `protobuf:"varint,3,opt,name=dry_run,json=dryRun,proto3" json:"dry_run,omitempty"` + Cells []string `protobuf:"bytes,4,rep,name=cells,proto3" json:"cells,omitempty"` + VSchema *vschema.Keyspace `protobuf:"bytes,5,opt,name=v_schema,json=vSchema,proto3" json:"v_schema,omitempty"` + Sql string `protobuf:"bytes,6,opt,name=sql,proto3" json:"sql,omitempty"` // Strict returns an error if there are unknown vindex params. - Strict bool `protobuf:"varint,7,opt,name=strict,proto3" json:"strict,omitempty"` + Strict bool `protobuf:"varint,7,opt,name=strict,proto3" json:"strict,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ApplyVSchemaRequest) Reset() { @@ -2235,11 +2218,8 @@ func (x *ApplyVSchemaRequest) GetStrict() bool { } type ApplyVSchemaResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - VSchema *vschema.Keyspace `protobuf:"bytes,1,opt,name=v_schema,json=vSchema,proto3" json:"v_schema,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + VSchema *vschema.Keyspace `protobuf:"bytes,1,opt,name=v_schema,json=vSchema,proto3" json:"v_schema,omitempty"` // UnknownVindexParams is a map of vindex name to params that were not recognized by the vindex // type. E.g.: // @@ -2248,7 +2228,9 @@ type ApplyVSchemaResponse struct { // "params": ["raed_lock", "not_verify"] // } // } - UnknownVindexParams map[string]*ApplyVSchemaResponse_ParamList `protobuf:"bytes,2,rep,name=unknown_vindex_params,json=unknownVindexParams,proto3" json:"unknown_vindex_params,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + UnknownVindexParams map[string]*ApplyVSchemaResponse_ParamList `protobuf:"bytes,2,rep,name=unknown_vindex_params,json=unknownVindexParams,proto3" json:"unknown_vindex_params,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ApplyVSchemaResponse) Reset() { @@ -2296,11 +2278,8 @@ func (x *ApplyVSchemaResponse) GetUnknownVindexParams() map[string]*ApplyVSchema } type BackupRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - TabletAlias *topodata.TabletAlias `protobuf:"bytes,1,opt,name=tablet_alias,json=tabletAlias,proto3" json:"tablet_alias,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + TabletAlias *topodata.TabletAlias `protobuf:"bytes,1,opt,name=tablet_alias,json=tabletAlias,proto3" json:"tablet_alias,omitempty"` // AllowPrimary allows the backup to proceed if TabletAlias is a PRIMARY. // // WARNING: If using the builtin backup engine, this will shutdown mysqld on @@ -2316,7 +2295,9 @@ type BackupRequest struct { // so that it's a backup that can be used for an upgrade. UpgradeSafe bool `protobuf:"varint,5,opt,name=upgrade_safe,json=upgradeSafe,proto3" json:"upgrade_safe,omitempty"` // BackupEngine specifies if we want to use a particular backup engine for this backup request - BackupEngine *string `protobuf:"bytes,6,opt,name=backup_engine,json=backupEngine,proto3,oneof" json:"backup_engine,omitempty"` + BackupEngine *string `protobuf:"bytes,6,opt,name=backup_engine,json=backupEngine,proto3,oneof" json:"backup_engine,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *BackupRequest) Reset() { @@ -2392,15 +2373,14 @@ func (x *BackupRequest) GetBackupEngine() string { } type BackupResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // TabletAlias is the alias being used for the backup. - TabletAlias *topodata.TabletAlias `protobuf:"bytes,1,opt,name=tablet_alias,json=tabletAlias,proto3" json:"tablet_alias,omitempty"` - Keyspace string `protobuf:"bytes,2,opt,name=keyspace,proto3" json:"keyspace,omitempty"` - Shard string `protobuf:"bytes,3,opt,name=shard,proto3" json:"shard,omitempty"` - Event *logutil.Event `protobuf:"bytes,4,opt,name=event,proto3" json:"event,omitempty"` + TabletAlias *topodata.TabletAlias `protobuf:"bytes,1,opt,name=tablet_alias,json=tabletAlias,proto3" json:"tablet_alias,omitempty"` + Keyspace string `protobuf:"bytes,2,opt,name=keyspace,proto3" json:"keyspace,omitempty"` + Shard string `protobuf:"bytes,3,opt,name=shard,proto3" json:"shard,omitempty"` + Event *logutil.Event `protobuf:"bytes,4,opt,name=event,proto3" json:"event,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *BackupResponse) Reset() { @@ -2462,12 +2442,9 @@ func (x *BackupResponse) GetEvent() *logutil.Event { } type BackupShardRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"` - Shard string `protobuf:"bytes,2,opt,name=shard,proto3" json:"shard,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"` + Shard string `protobuf:"bytes,2,opt,name=shard,proto3" json:"shard,omitempty"` // AllowPrimary allows the backup to occur on a PRIMARY tablet. See // BackupRequest.AllowPrimary for warnings and caveats. AllowPrimary bool `protobuf:"varint,3,opt,name=allow_primary,json=allowPrimary,proto3" json:"allow_primary,omitempty"` @@ -2480,6 +2457,8 @@ type BackupShardRequest struct { // IncrementalFromPos indicates a position of a previous backup. When this value is non-empty // then the backup becomes incremental and applies as of given position. IncrementalFromPos string `protobuf:"bytes,6,opt,name=incremental_from_pos,json=incrementalFromPos,proto3" json:"incremental_from_pos,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *BackupShardRequest) Reset() { @@ -2555,12 +2534,11 @@ func (x *BackupShardRequest) GetIncrementalFromPos() string { } type CancelSchemaMigrationRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"` + Uuid string `protobuf:"bytes,2,opt,name=uuid,proto3" json:"uuid,omitempty"` unknownFields protoimpl.UnknownFields - - Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"` - Uuid string `protobuf:"bytes,2,opt,name=uuid,proto3" json:"uuid,omitempty"` + sizeCache protoimpl.SizeCache } func (x *CancelSchemaMigrationRequest) Reset() { @@ -2608,11 +2586,10 @@ func (x *CancelSchemaMigrationRequest) GetUuid() string { } type CancelSchemaMigrationResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - RowsAffectedByShard map[string]uint64 `protobuf:"bytes,1,rep,name=rows_affected_by_shard,json=rowsAffectedByShard,proto3" json:"rows_affected_by_shard,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` + state protoimpl.MessageState `protogen:"open.v1"` + RowsAffectedByShard map[string]uint64 `protobuf:"bytes,1,rep,name=rows_affected_by_shard,json=rowsAffectedByShard,proto3" json:"rows_affected_by_shard,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *CancelSchemaMigrationResponse) Reset() { @@ -2653,13 +2630,12 @@ func (x *CancelSchemaMigrationResponse) GetRowsAffectedByShard() map[string]uint } type ChangeTabletTagsRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + TabletAlias *topodata.TabletAlias `protobuf:"bytes,1,opt,name=tablet_alias,json=tabletAlias,proto3" json:"tablet_alias,omitempty"` + Tags map[string]string `protobuf:"bytes,2,rep,name=tags,proto3" json:"tags,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + Replace bool `protobuf:"varint,3,opt,name=replace,proto3" json:"replace,omitempty"` unknownFields protoimpl.UnknownFields - - TabletAlias *topodata.TabletAlias `protobuf:"bytes,1,opt,name=tablet_alias,json=tabletAlias,proto3" json:"tablet_alias,omitempty"` - Tags map[string]string `protobuf:"bytes,2,rep,name=tags,proto3" json:"tags,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - Replace bool `protobuf:"varint,3,opt,name=replace,proto3" json:"replace,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ChangeTabletTagsRequest) Reset() { @@ -2714,12 +2690,11 @@ func (x *ChangeTabletTagsRequest) GetReplace() bool { } type ChangeTabletTagsResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + BeforeTags map[string]string `protobuf:"bytes,1,rep,name=before_tags,json=beforeTags,proto3" json:"before_tags,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + AfterTags map[string]string `protobuf:"bytes,2,rep,name=after_tags,json=afterTags,proto3" json:"after_tags,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` unknownFields protoimpl.UnknownFields - - BeforeTags map[string]string `protobuf:"bytes,1,rep,name=before_tags,json=beforeTags,proto3" json:"before_tags,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - AfterTags map[string]string `protobuf:"bytes,2,rep,name=after_tags,json=afterTags,proto3" json:"after_tags,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + sizeCache protoimpl.SizeCache } func (x *ChangeTabletTagsResponse) Reset() { @@ -2767,13 +2742,12 @@ func (x *ChangeTabletTagsResponse) GetAfterTags() map[string]string { } type ChangeTabletTypeRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + TabletAlias *topodata.TabletAlias `protobuf:"bytes,1,opt,name=tablet_alias,json=tabletAlias,proto3" json:"tablet_alias,omitempty"` + DbType topodata.TabletType `protobuf:"varint,2,opt,name=db_type,json=dbType,proto3,enum=topodata.TabletType" json:"db_type,omitempty"` + DryRun bool `protobuf:"varint,3,opt,name=dry_run,json=dryRun,proto3" json:"dry_run,omitempty"` unknownFields protoimpl.UnknownFields - - TabletAlias *topodata.TabletAlias `protobuf:"bytes,1,opt,name=tablet_alias,json=tabletAlias,proto3" json:"tablet_alias,omitempty"` - DbType topodata.TabletType `protobuf:"varint,2,opt,name=db_type,json=dbType,proto3,enum=topodata.TabletType" json:"db_type,omitempty"` - DryRun bool `protobuf:"varint,3,opt,name=dry_run,json=dryRun,proto3" json:"dry_run,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ChangeTabletTypeRequest) Reset() { @@ -2828,13 +2802,12 @@ func (x *ChangeTabletTypeRequest) GetDryRun() bool { } type ChangeTabletTypeResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + BeforeTablet *topodata.Tablet `protobuf:"bytes,1,opt,name=before_tablet,json=beforeTablet,proto3" json:"before_tablet,omitempty"` + AfterTablet *topodata.Tablet `protobuf:"bytes,2,opt,name=after_tablet,json=afterTablet,proto3" json:"after_tablet,omitempty"` + WasDryRun bool `protobuf:"varint,3,opt,name=was_dry_run,json=wasDryRun,proto3" json:"was_dry_run,omitempty"` unknownFields protoimpl.UnknownFields - - BeforeTablet *topodata.Tablet `protobuf:"bytes,1,opt,name=before_tablet,json=beforeTablet,proto3" json:"before_tablet,omitempty"` - AfterTablet *topodata.Tablet `protobuf:"bytes,2,opt,name=after_tablet,json=afterTablet,proto3" json:"after_tablet,omitempty"` - WasDryRun bool `protobuf:"varint,3,opt,name=was_dry_run,json=wasDryRun,proto3" json:"was_dry_run,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ChangeTabletTypeResponse) Reset() { @@ -2889,17 +2862,16 @@ func (x *ChangeTabletTypeResponse) GetWasDryRun() bool { } type CheckThrottlerRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - TabletAlias *topodata.TabletAlias `protobuf:"bytes,1,opt,name=tablet_alias,json=tabletAlias,proto3" json:"tablet_alias,omitempty"` - AppName string `protobuf:"bytes,2,opt,name=app_name,json=appName,proto3" json:"app_name,omitempty"` - Scope string `protobuf:"bytes,3,opt,name=scope,proto3" json:"scope,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + TabletAlias *topodata.TabletAlias `protobuf:"bytes,1,opt,name=tablet_alias,json=tabletAlias,proto3" json:"tablet_alias,omitempty"` + AppName string `protobuf:"bytes,2,opt,name=app_name,json=appName,proto3" json:"app_name,omitempty"` + Scope string `protobuf:"bytes,3,opt,name=scope,proto3" json:"scope,omitempty"` // SkipRequestHeartbeats ensures this check does not renew heartbeat lease SkipRequestHeartbeats bool `protobuf:"varint,4,opt,name=skip_request_heartbeats,json=skipRequestHeartbeats,proto3" json:"skip_request_heartbeats,omitempty"` // OKIfNotExists asks the throttler to return OK even if the metric does not exist OkIfNotExists bool `protobuf:"varint,5,opt,name=ok_if_not_exists,json=okIfNotExists,proto3" json:"ok_if_not_exists,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *CheckThrottlerRequest) Reset() { @@ -2968,12 +2940,11 @@ func (x *CheckThrottlerRequest) GetOkIfNotExists() bool { } type CheckThrottlerResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + TabletAlias *topodata.TabletAlias `protobuf:"bytes,1,opt,name=tablet_alias,json=tabletAlias,proto3" json:"tablet_alias,omitempty"` + Check *tabletmanagerdata.CheckThrottlerResponse `protobuf:"bytes,2,opt,name=Check,proto3" json:"Check,omitempty"` unknownFields protoimpl.UnknownFields - - TabletAlias *topodata.TabletAlias `protobuf:"bytes,1,opt,name=tablet_alias,json=tabletAlias,proto3" json:"tablet_alias,omitempty"` - Check *tabletmanagerdata.CheckThrottlerResponse `protobuf:"bytes,2,opt,name=Check,proto3" json:"Check,omitempty"` + sizeCache protoimpl.SizeCache } func (x *CheckThrottlerResponse) Reset() { @@ -3021,12 +2992,11 @@ func (x *CheckThrottlerResponse) GetCheck() *tabletmanagerdata.CheckThrottlerRes } type CleanupSchemaMigrationRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"` + Uuid string `protobuf:"bytes,2,opt,name=uuid,proto3" json:"uuid,omitempty"` unknownFields protoimpl.UnknownFields - - Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"` - Uuid string `protobuf:"bytes,2,opt,name=uuid,proto3" json:"uuid,omitempty"` + sizeCache protoimpl.SizeCache } func (x *CleanupSchemaMigrationRequest) Reset() { @@ -3074,11 +3044,10 @@ func (x *CleanupSchemaMigrationRequest) GetUuid() string { } type CleanupSchemaMigrationResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - RowsAffectedByShard map[string]uint64 `protobuf:"bytes,1,rep,name=rows_affected_by_shard,json=rowsAffectedByShard,proto3" json:"rows_affected_by_shard,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` + state protoimpl.MessageState `protogen:"open.v1"` + RowsAffectedByShard map[string]uint64 `protobuf:"bytes,1,rep,name=rows_affected_by_shard,json=rowsAffectedByShard,proto3" json:"rows_affected_by_shard,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *CleanupSchemaMigrationResponse) Reset() { @@ -3119,12 +3088,11 @@ func (x *CleanupSchemaMigrationResponse) GetRowsAffectedByShard() map[string]uin } type CompleteSchemaMigrationRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"` + Uuid string `protobuf:"bytes,2,opt,name=uuid,proto3" json:"uuid,omitempty"` unknownFields protoimpl.UnknownFields - - Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"` - Uuid string `protobuf:"bytes,2,opt,name=uuid,proto3" json:"uuid,omitempty"` + sizeCache protoimpl.SizeCache } func (x *CompleteSchemaMigrationRequest) Reset() { @@ -3172,11 +3140,10 @@ func (x *CompleteSchemaMigrationRequest) GetUuid() string { } type CompleteSchemaMigrationResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - RowsAffectedByShard map[string]uint64 `protobuf:"bytes,1,rep,name=rows_affected_by_shard,json=rowsAffectedByShard,proto3" json:"rows_affected_by_shard,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` + state protoimpl.MessageState `protogen:"open.v1"` + RowsAffectedByShard map[string]uint64 `protobuf:"bytes,1,rep,name=rows_affected_by_shard,json=rowsAffectedByShard,proto3" json:"rows_affected_by_shard,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *CompleteSchemaMigrationResponse) Reset() { @@ -3217,18 +3184,17 @@ func (x *CompleteSchemaMigrationResponse) GetRowsAffectedByShard() map[string]ui } type CopySchemaShardRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - SourceTabletAlias *topodata.TabletAlias `protobuf:"bytes,1,opt,name=source_tablet_alias,json=sourceTabletAlias,proto3" json:"source_tablet_alias,omitempty"` - Tables []string `protobuf:"bytes,2,rep,name=tables,proto3" json:"tables,omitempty"` - ExcludeTables []string `protobuf:"bytes,3,rep,name=exclude_tables,json=excludeTables,proto3" json:"exclude_tables,omitempty"` - IncludeViews bool `protobuf:"varint,4,opt,name=include_views,json=includeViews,proto3" json:"include_views,omitempty"` - SkipVerify bool `protobuf:"varint,5,opt,name=skip_verify,json=skipVerify,proto3" json:"skip_verify,omitempty"` - WaitReplicasTimeout *vttime.Duration `protobuf:"bytes,6,opt,name=wait_replicas_timeout,json=waitReplicasTimeout,proto3" json:"wait_replicas_timeout,omitempty"` - DestinationKeyspace string `protobuf:"bytes,7,opt,name=destination_keyspace,json=destinationKeyspace,proto3" json:"destination_keyspace,omitempty"` - DestinationShard string `protobuf:"bytes,8,opt,name=destination_shard,json=destinationShard,proto3" json:"destination_shard,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + SourceTabletAlias *topodata.TabletAlias `protobuf:"bytes,1,opt,name=source_tablet_alias,json=sourceTabletAlias,proto3" json:"source_tablet_alias,omitempty"` + Tables []string `protobuf:"bytes,2,rep,name=tables,proto3" json:"tables,omitempty"` + ExcludeTables []string `protobuf:"bytes,3,rep,name=exclude_tables,json=excludeTables,proto3" json:"exclude_tables,omitempty"` + IncludeViews bool `protobuf:"varint,4,opt,name=include_views,json=includeViews,proto3" json:"include_views,omitempty"` + SkipVerify bool `protobuf:"varint,5,opt,name=skip_verify,json=skipVerify,proto3" json:"skip_verify,omitempty"` + WaitReplicasTimeout *vttime.Duration `protobuf:"bytes,6,opt,name=wait_replicas_timeout,json=waitReplicasTimeout,proto3" json:"wait_replicas_timeout,omitempty"` + DestinationKeyspace string `protobuf:"bytes,7,opt,name=destination_keyspace,json=destinationKeyspace,proto3" json:"destination_keyspace,omitempty"` + DestinationShard string `protobuf:"bytes,8,opt,name=destination_shard,json=destinationShard,proto3" json:"destination_shard,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *CopySchemaShardRequest) Reset() { @@ -3318,9 +3284,9 @@ func (x *CopySchemaShardRequest) GetDestinationShard() string { } type CopySchemaShardResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *CopySchemaShardResponse) Reset() { @@ -3354,10 +3320,7 @@ func (*CopySchemaShardResponse) Descriptor() ([]byte, []int) { } type CreateKeyspaceRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Name is the name of the keyspace. Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` // Force proceeds with the request even if the keyspace already exists. @@ -3378,6 +3341,8 @@ type CreateKeyspaceRequest struct { // SidecarDBName is the name of the sidecar database that // each vttablet in the keyspace will use. SidecarDbName string `protobuf:"bytes,11,opt,name=sidecar_db_name,json=sidecarDbName,proto3" json:"sidecar_db_name,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *CreateKeyspaceRequest) Reset() { @@ -3467,12 +3432,11 @@ func (x *CreateKeyspaceRequest) GetSidecarDbName() string { } type CreateKeyspaceResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Keyspace is the newly-created keyspace. - Keyspace *Keyspace `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"` + Keyspace *Keyspace `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *CreateKeyspaceResponse) Reset() { @@ -3513,10 +3477,7 @@ func (x *CreateKeyspaceResponse) GetKeyspace() *Keyspace { } type CreateShardRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Keyspace is the name of the keyspace to create the shard in. Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"` // ShardName is the name of the shard to create. E.g. "-" or "-80". @@ -3527,6 +3488,8 @@ type CreateShardRequest struct { // IncludeParent creates the parent keyspace as an empty BASE keyspace, if it // doesn't already exist. IncludeParent bool `protobuf:"varint,4,opt,name=include_parent,json=includeParent,proto3" json:"include_parent,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *CreateShardRequest) Reset() { @@ -3588,10 +3551,7 @@ func (x *CreateShardRequest) GetIncludeParent() bool { } type CreateShardResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Keyspace is the created keyspace. It is set only if IncludeParent was // specified in the request and the parent keyspace needed to be created. Keyspace *Keyspace `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"` @@ -3600,6 +3560,8 @@ type CreateShardResponse struct { // ShardAlreadyExists is set if Force was specified in the request and the // shard already existed. ShardAlreadyExists bool `protobuf:"varint,3,opt,name=shard_already_exists,json=shardAlreadyExists,proto3" json:"shard_already_exists,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *CreateShardResponse) Reset() { @@ -3654,12 +3616,11 @@ func (x *CreateShardResponse) GetShardAlreadyExists() bool { } type DeleteCellInfoRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Force bool `protobuf:"varint,2,opt,name=force,proto3" json:"force,omitempty"` unknownFields protoimpl.UnknownFields - - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - Force bool `protobuf:"varint,2,opt,name=force,proto3" json:"force,omitempty"` + sizeCache protoimpl.SizeCache } func (x *DeleteCellInfoRequest) Reset() { @@ -3707,9 +3668,9 @@ func (x *DeleteCellInfoRequest) GetForce() bool { } type DeleteCellInfoResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *DeleteCellInfoResponse) Reset() { @@ -3743,11 +3704,10 @@ func (*DeleteCellInfoResponse) Descriptor() ([]byte, []int) { } type DeleteCellsAliasRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` unknownFields protoimpl.UnknownFields - - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + sizeCache protoimpl.SizeCache } func (x *DeleteCellsAliasRequest) Reset() { @@ -3788,9 +3748,9 @@ func (x *DeleteCellsAliasRequest) GetName() string { } type DeleteCellsAliasResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *DeleteCellsAliasResponse) Reset() { @@ -3824,10 +3784,7 @@ func (*DeleteCellsAliasResponse) Descriptor() ([]byte, []int) { } type DeleteKeyspaceRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Keyspace is the name of the keyspace to delete. Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"` // Recursive causes all shards in the keyspace to be recursively deleted @@ -3836,7 +3793,9 @@ type DeleteKeyspaceRequest struct { Recursive bool `protobuf:"varint,2,opt,name=recursive,proto3" json:"recursive,omitempty"` // Force allows a keyspace to be deleted even if the keyspace lock cannot be // obtained. This should only be used to force-clean a keyspace. - Force bool `protobuf:"varint,3,opt,name=force,proto3" json:"force,omitempty"` + Force bool `protobuf:"varint,3,opt,name=force,proto3" json:"force,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *DeleteKeyspaceRequest) Reset() { @@ -3891,9 +3850,9 @@ func (x *DeleteKeyspaceRequest) GetForce() bool { } type DeleteKeyspaceResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *DeleteKeyspaceResponse) Reset() { @@ -3927,10 +3886,7 @@ func (*DeleteKeyspaceResponse) Descriptor() ([]byte, []int) { } type DeleteShardsRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Shards is the list of shards to delete. The nested topodatapb.Shard field // is not required for DeleteShard, but the Keyspace and Shard fields are. Shards []*Shard `protobuf:"bytes,1,rep,name=shards,proto3" json:"shards,omitempty"` @@ -3943,7 +3899,9 @@ type DeleteShardsRequest struct { EvenIfServing bool `protobuf:"varint,4,opt,name=even_if_serving,json=evenIfServing,proto3" json:"even_if_serving,omitempty"` // Force allows a shard to be deleted even if the shard lock cannot be // obtained. This should only be used to force-clean a shard. - Force bool `protobuf:"varint,5,opt,name=force,proto3" json:"force,omitempty"` + Force bool `protobuf:"varint,5,opt,name=force,proto3" json:"force,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *DeleteShardsRequest) Reset() { @@ -4005,9 +3963,9 @@ func (x *DeleteShardsRequest) GetForce() bool { } type DeleteShardsResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *DeleteShardsResponse) Reset() { @@ -4041,11 +3999,10 @@ func (*DeleteShardsResponse) Descriptor() ([]byte, []int) { } type DeleteSrvVSchemaRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Cell string `protobuf:"bytes,1,opt,name=cell,proto3" json:"cell,omitempty"` unknownFields protoimpl.UnknownFields - - Cell string `protobuf:"bytes,1,opt,name=cell,proto3" json:"cell,omitempty"` + sizeCache protoimpl.SizeCache } func (x *DeleteSrvVSchemaRequest) Reset() { @@ -4086,9 +4043,9 @@ func (x *DeleteSrvVSchemaRequest) GetCell() string { } type DeleteSrvVSchemaResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *DeleteSrvVSchemaResponse) Reset() { @@ -4122,15 +4079,14 @@ func (*DeleteSrvVSchemaResponse) Descriptor() ([]byte, []int) { } type DeleteTabletsRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // TabletAliases is the list of tablets to delete. TabletAliases []*topodata.TabletAlias `protobuf:"bytes,1,rep,name=tablet_aliases,json=tabletAliases,proto3" json:"tablet_aliases,omitempty"` // AllowPrimary allows for the primary tablet of a shard to be deleted. // Use with caution. - AllowPrimary bool `protobuf:"varint,2,opt,name=allow_primary,json=allowPrimary,proto3" json:"allow_primary,omitempty"` + AllowPrimary bool `protobuf:"varint,2,opt,name=allow_primary,json=allowPrimary,proto3" json:"allow_primary,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *DeleteTabletsRequest) Reset() { @@ -4178,9 +4134,9 @@ func (x *DeleteTabletsRequest) GetAllowPrimary() bool { } type DeleteTabletsResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *DeleteTabletsResponse) Reset() { @@ -4214,10 +4170,7 @@ func (*DeleteTabletsResponse) Descriptor() ([]byte, []int) { } type EmergencyReparentShardRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Keyspace is the name of the keyspace to perform the Emergency Reparent in. Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"` // Shard is the name of the shard to perform the Emergency Reparent in. @@ -4242,6 +4195,8 @@ type EmergencyReparentShardRequest struct { // ExpectedPrimary is the optional alias we expect to be the current primary in order for // the reparent operation to succeed. ExpectedPrimary *topodata.TabletAlias `protobuf:"bytes,8,opt,name=expected_primary,json=expectedPrimary,proto3" json:"expected_primary,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *EmergencyReparentShardRequest) Reset() { @@ -4331,10 +4286,7 @@ func (x *EmergencyReparentShardRequest) GetExpectedPrimary() *topodata.TabletAli } type EmergencyReparentShardResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Keyspace is the name of the keyspace the Emergency Reparent took place in. Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"` // Shard is the name of the shard the Emergency Reparent took place in. @@ -4345,6 +4297,8 @@ type EmergencyReparentShardResponse struct { // up-to-date. PromotedPrimary *topodata.TabletAlias `protobuf:"bytes,3,opt,name=promoted_primary,json=promotedPrimary,proto3" json:"promoted_primary,omitempty"` Events []*logutil.Event `protobuf:"bytes,4,rep,name=events,proto3" json:"events,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *EmergencyReparentShardResponse) Reset() { @@ -4406,12 +4360,9 @@ func (x *EmergencyReparentShardResponse) GetEvents() []*logutil.Event { } type ExecuteFetchAsAppRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - TabletAlias *topodata.TabletAlias `protobuf:"bytes,1,opt,name=tablet_alias,json=tabletAlias,proto3" json:"tablet_alias,omitempty"` - Query string `protobuf:"bytes,2,opt,name=query,proto3" json:"query,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + TabletAlias *topodata.TabletAlias `protobuf:"bytes,1,opt,name=tablet_alias,json=tabletAlias,proto3" json:"tablet_alias,omitempty"` + Query string `protobuf:"bytes,2,opt,name=query,proto3" json:"query,omitempty"` // MaxRows is an optional parameter to limit the number of rows read into the // QueryResult. Note that this does not apply a LIMIT to the query, just how // many rows are read from the MySQL server on the tablet side. @@ -4420,7 +4371,9 @@ type ExecuteFetchAsAppRequest struct { // default is configured in the VtctldService. MaxRows int64 `protobuf:"varint,3,opt,name=max_rows,json=maxRows,proto3" json:"max_rows,omitempty"` // UsePool causes the query to be run with a pooled connection to the tablet. - UsePool bool `protobuf:"varint,4,opt,name=use_pool,json=usePool,proto3" json:"use_pool,omitempty"` + UsePool bool `protobuf:"varint,4,opt,name=use_pool,json=usePool,proto3" json:"use_pool,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ExecuteFetchAsAppRequest) Reset() { @@ -4482,11 +4435,10 @@ func (x *ExecuteFetchAsAppRequest) GetUsePool() bool { } type ExecuteFetchAsAppResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Result *query.QueryResult `protobuf:"bytes,1,opt,name=result,proto3" json:"result,omitempty"` unknownFields protoimpl.UnknownFields - - Result *query.QueryResult `protobuf:"bytes,1,opt,name=result,proto3" json:"result,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ExecuteFetchAsAppResponse) Reset() { @@ -4527,12 +4479,9 @@ func (x *ExecuteFetchAsAppResponse) GetResult() *query.QueryResult { } type ExecuteFetchAsDBARequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - TabletAlias *topodata.TabletAlias `protobuf:"bytes,1,opt,name=tablet_alias,json=tabletAlias,proto3" json:"tablet_alias,omitempty"` - Query string `protobuf:"bytes,2,opt,name=query,proto3" json:"query,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + TabletAlias *topodata.TabletAlias `protobuf:"bytes,1,opt,name=tablet_alias,json=tabletAlias,proto3" json:"tablet_alias,omitempty"` + Query string `protobuf:"bytes,2,opt,name=query,proto3" json:"query,omitempty"` // MaxRows is an optional parameter to limit the number of rows read into the // QueryResult. Note that this does not apply a LIMIT to the query, just how // many rows are read from the MySQL server on the tablet side. @@ -4545,7 +4494,9 @@ type ExecuteFetchAsDBARequest struct { DisableBinlogs bool `protobuf:"varint,4,opt,name=disable_binlogs,json=disableBinlogs,proto3" json:"disable_binlogs,omitempty"` // ReloadSchema instructs the tablet to reload its schema after executing the // query. - ReloadSchema bool `protobuf:"varint,5,opt,name=reload_schema,json=reloadSchema,proto3" json:"reload_schema,omitempty"` + ReloadSchema bool `protobuf:"varint,5,opt,name=reload_schema,json=reloadSchema,proto3" json:"reload_schema,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ExecuteFetchAsDBARequest) Reset() { @@ -4614,11 +4565,10 @@ func (x *ExecuteFetchAsDBARequest) GetReloadSchema() bool { } type ExecuteFetchAsDBAResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Result *query.QueryResult `protobuf:"bytes,1,opt,name=result,proto3" json:"result,omitempty"` unknownFields protoimpl.UnknownFields - - Result *query.QueryResult `protobuf:"bytes,1,opt,name=result,proto3" json:"result,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ExecuteFetchAsDBAResponse) Reset() { @@ -4659,12 +4609,11 @@ func (x *ExecuteFetchAsDBAResponse) GetResult() *query.QueryResult { } type ExecuteHookRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` TabletAlias *topodata.TabletAlias `protobuf:"bytes,1,opt,name=tablet_alias,json=tabletAlias,proto3" json:"tablet_alias,omitempty"` TabletHookRequest *tabletmanagerdata.ExecuteHookRequest `protobuf:"bytes,2,opt,name=tablet_hook_request,json=tabletHookRequest,proto3" json:"tablet_hook_request,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ExecuteHookRequest) Reset() { @@ -4712,11 +4661,10 @@ func (x *ExecuteHookRequest) GetTabletHookRequest() *tabletmanagerdata.ExecuteHo } type ExecuteHookResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + HookResult *tabletmanagerdata.ExecuteHookResponse `protobuf:"bytes,1,opt,name=hook_result,json=hookResult,proto3" json:"hook_result,omitempty"` unknownFields protoimpl.UnknownFields - - HookResult *tabletmanagerdata.ExecuteHookResponse `protobuf:"bytes,1,opt,name=hook_result,json=hookResult,proto3" json:"hook_result,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ExecuteHookResponse) Reset() { @@ -4757,11 +4705,8 @@ func (x *ExecuteHookResponse) GetHookResult() *tabletmanagerdata.ExecuteHookResp } type ExecuteMultiFetchAsDBARequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - TabletAlias *topodata.TabletAlias `protobuf:"bytes,1,opt,name=tablet_alias,json=tabletAlias,proto3" json:"tablet_alias,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + TabletAlias *topodata.TabletAlias `protobuf:"bytes,1,opt,name=tablet_alias,json=tabletAlias,proto3" json:"tablet_alias,omitempty"` // SQL could have potentially multiple queries separated by semicolons. Sql string `protobuf:"bytes,2,opt,name=sql,proto3" json:"sql,omitempty"` // MaxRows is an optional parameter to limit the number of rows read into the @@ -4776,7 +4721,9 @@ type ExecuteMultiFetchAsDBARequest struct { DisableBinlogs bool `protobuf:"varint,4,opt,name=disable_binlogs,json=disableBinlogs,proto3" json:"disable_binlogs,omitempty"` // ReloadSchema instructs the tablet to reload its schema after executing the // query. - ReloadSchema bool `protobuf:"varint,5,opt,name=reload_schema,json=reloadSchema,proto3" json:"reload_schema,omitempty"` + ReloadSchema bool `protobuf:"varint,5,opt,name=reload_schema,json=reloadSchema,proto3" json:"reload_schema,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ExecuteMultiFetchAsDBARequest) Reset() { @@ -4845,11 +4792,10 @@ func (x *ExecuteMultiFetchAsDBARequest) GetReloadSchema() bool { } type ExecuteMultiFetchAsDBAResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Results []*query.QueryResult `protobuf:"bytes,1,rep,name=results,proto3" json:"results,omitempty"` unknownFields protoimpl.UnknownFields - - Results []*query.QueryResult `protobuf:"bytes,1,rep,name=results,proto3" json:"results,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ExecuteMultiFetchAsDBAResponse) Reset() { @@ -4890,11 +4836,10 @@ func (x *ExecuteMultiFetchAsDBAResponse) GetResults() []*query.QueryResult { } type FindAllShardsInKeyspaceRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"` unknownFields protoimpl.UnknownFields - - Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"` + sizeCache protoimpl.SizeCache } func (x *FindAllShardsInKeyspaceRequest) Reset() { @@ -4935,11 +4880,10 @@ func (x *FindAllShardsInKeyspaceRequest) GetKeyspace() string { } type FindAllShardsInKeyspaceResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Shards map[string]*Shard `protobuf:"bytes,1,rep,name=shards,proto3" json:"shards,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` unknownFields protoimpl.UnknownFields - - Shards map[string]*Shard `protobuf:"bytes,1,rep,name=shards,proto3" json:"shards,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + sizeCache protoimpl.SizeCache } func (x *FindAllShardsInKeyspaceResponse) Reset() { @@ -4980,12 +4924,11 @@ func (x *FindAllShardsInKeyspaceResponse) GetShards() map[string]*Shard { } type ForceCutOverSchemaMigrationRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"` + Uuid string `protobuf:"bytes,2,opt,name=uuid,proto3" json:"uuid,omitempty"` unknownFields protoimpl.UnknownFields - - Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"` - Uuid string `protobuf:"bytes,2,opt,name=uuid,proto3" json:"uuid,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ForceCutOverSchemaMigrationRequest) Reset() { @@ -5033,11 +4976,10 @@ func (x *ForceCutOverSchemaMigrationRequest) GetUuid() string { } type ForceCutOverSchemaMigrationResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - RowsAffectedByShard map[string]uint64 `protobuf:"bytes,1,rep,name=rows_affected_by_shard,json=rowsAffectedByShard,proto3" json:"rows_affected_by_shard,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` + state protoimpl.MessageState `protogen:"open.v1"` + RowsAffectedByShard map[string]uint64 `protobuf:"bytes,1,rep,name=rows_affected_by_shard,json=rowsAffectedByShard,proto3" json:"rows_affected_by_shard,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ForceCutOverSchemaMigrationResponse) Reset() { @@ -5078,12 +5020,9 @@ func (x *ForceCutOverSchemaMigrationResponse) GetRowsAffectedByShard() map[strin } type GetBackupsRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"` - Shard string `protobuf:"bytes,2,opt,name=shard,proto3" json:"shard,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"` + Shard string `protobuf:"bytes,2,opt,name=shard,proto3" json:"shard,omitempty"` // Limit, if nonzero, will return only the most N recent backups. Limit uint32 `protobuf:"varint,3,opt,name=limit,proto3" json:"limit,omitempty"` // Detailed indicates whether to use the backupengine, if supported, to @@ -5098,6 +5037,8 @@ type GetBackupsRequest struct { // backup infos will have additional fields set, and any remaining backups // will not. DetailedLimit uint32 `protobuf:"varint,5,opt,name=detailed_limit,json=detailedLimit,proto3" json:"detailed_limit,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GetBackupsRequest) Reset() { @@ -5166,11 +5107,10 @@ func (x *GetBackupsRequest) GetDetailedLimit() uint32 { } type GetBackupsResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Backups []*mysqlctl.BackupInfo `protobuf:"bytes,1,rep,name=backups,proto3" json:"backups,omitempty"` unknownFields protoimpl.UnknownFields - - Backups []*mysqlctl.BackupInfo `protobuf:"bytes,1,rep,name=backups,proto3" json:"backups,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetBackupsResponse) Reset() { @@ -5211,11 +5151,10 @@ func (x *GetBackupsResponse) GetBackups() []*mysqlctl.BackupInfo { } type GetCellInfoRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Cell string `protobuf:"bytes,1,opt,name=cell,proto3" json:"cell,omitempty"` unknownFields protoimpl.UnknownFields - - Cell string `protobuf:"bytes,1,opt,name=cell,proto3" json:"cell,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetCellInfoRequest) Reset() { @@ -5256,11 +5195,10 @@ func (x *GetCellInfoRequest) GetCell() string { } type GetCellInfoResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + CellInfo *topodata.CellInfo `protobuf:"bytes,1,opt,name=cell_info,json=cellInfo,proto3" json:"cell_info,omitempty"` unknownFields protoimpl.UnknownFields - - CellInfo *topodata.CellInfo `protobuf:"bytes,1,opt,name=cell_info,json=cellInfo,proto3" json:"cell_info,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetCellInfoResponse) Reset() { @@ -5301,9 +5239,9 @@ func (x *GetCellInfoResponse) GetCellInfo() *topodata.CellInfo { } type GetCellInfoNamesRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GetCellInfoNamesRequest) Reset() { @@ -5337,11 +5275,10 @@ func (*GetCellInfoNamesRequest) Descriptor() ([]byte, []int) { } type GetCellInfoNamesResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Names []string `protobuf:"bytes,1,rep,name=names,proto3" json:"names,omitempty"` unknownFields protoimpl.UnknownFields - - Names []string `protobuf:"bytes,1,rep,name=names,proto3" json:"names,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetCellInfoNamesResponse) Reset() { @@ -5382,9 +5319,9 @@ func (x *GetCellInfoNamesResponse) GetNames() []string { } type GetCellsAliasesRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GetCellsAliasesRequest) Reset() { @@ -5418,11 +5355,10 @@ func (*GetCellsAliasesRequest) Descriptor() ([]byte, []int) { } type GetCellsAliasesResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Aliases map[string]*topodata.CellsAlias `protobuf:"bytes,1,rep,name=aliases,proto3" json:"aliases,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` unknownFields protoimpl.UnknownFields - - Aliases map[string]*topodata.CellsAlias `protobuf:"bytes,1,rep,name=aliases,proto3" json:"aliases,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + sizeCache protoimpl.SizeCache } func (x *GetCellsAliasesResponse) Reset() { @@ -5463,11 +5399,10 @@ func (x *GetCellsAliasesResponse) GetAliases() map[string]*topodata.CellsAlias { } type GetFullStatusRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + TabletAlias *topodata.TabletAlias `protobuf:"bytes,1,opt,name=tablet_alias,json=tabletAlias,proto3" json:"tablet_alias,omitempty"` unknownFields protoimpl.UnknownFields - - TabletAlias *topodata.TabletAlias `protobuf:"bytes,1,opt,name=tablet_alias,json=tabletAlias,proto3" json:"tablet_alias,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetFullStatusRequest) Reset() { @@ -5508,11 +5443,10 @@ func (x *GetFullStatusRequest) GetTabletAlias() *topodata.TabletAlias { } type GetFullStatusResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Status *replicationdata.FullStatus `protobuf:"bytes,1,opt,name=status,proto3" json:"status,omitempty"` unknownFields protoimpl.UnknownFields - - Status *replicationdata.FullStatus `protobuf:"bytes,1,opt,name=status,proto3" json:"status,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetFullStatusResponse) Reset() { @@ -5553,9 +5487,9 @@ func (x *GetFullStatusResponse) GetStatus() *replicationdata.FullStatus { } type GetKeyspacesRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GetKeyspacesRequest) Reset() { @@ -5589,11 +5523,10 @@ func (*GetKeyspacesRequest) Descriptor() ([]byte, []int) { } type GetKeyspacesResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Keyspaces []*Keyspace `protobuf:"bytes,1,rep,name=keyspaces,proto3" json:"keyspaces,omitempty"` unknownFields protoimpl.UnknownFields - - Keyspaces []*Keyspace `protobuf:"bytes,1,rep,name=keyspaces,proto3" json:"keyspaces,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetKeyspacesResponse) Reset() { @@ -5634,11 +5567,10 @@ func (x *GetKeyspacesResponse) GetKeyspaces() []*Keyspace { } type GetKeyspaceRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"` unknownFields protoimpl.UnknownFields - - Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetKeyspaceRequest) Reset() { @@ -5679,11 +5611,10 @@ func (x *GetKeyspaceRequest) GetKeyspace() string { } type GetKeyspaceResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Keyspace *Keyspace `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"` unknownFields protoimpl.UnknownFields - - Keyspace *Keyspace `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetKeyspaceResponse) Reset() { @@ -5724,11 +5655,10 @@ func (x *GetKeyspaceResponse) GetKeyspace() *Keyspace { } type GetPermissionsRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + TabletAlias *topodata.TabletAlias `protobuf:"bytes,1,opt,name=tablet_alias,json=tabletAlias,proto3" json:"tablet_alias,omitempty"` unknownFields protoimpl.UnknownFields - - TabletAlias *topodata.TabletAlias `protobuf:"bytes,1,opt,name=tablet_alias,json=tabletAlias,proto3" json:"tablet_alias,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetPermissionsRequest) Reset() { @@ -5769,11 +5699,10 @@ func (x *GetPermissionsRequest) GetTabletAlias() *topodata.TabletAlias { } type GetPermissionsResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Permissions *tabletmanagerdata.Permissions `protobuf:"bytes,1,opt,name=permissions,proto3" json:"permissions,omitempty"` unknownFields protoimpl.UnknownFields - - Permissions *tabletmanagerdata.Permissions `protobuf:"bytes,1,opt,name=permissions,proto3" json:"permissions,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetPermissionsResponse) Reset() { @@ -5814,9 +5743,9 @@ func (x *GetPermissionsResponse) GetPermissions() *tabletmanagerdata.Permissions } type GetKeyspaceRoutingRulesRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GetKeyspaceRoutingRulesRequest) Reset() { @@ -5850,11 +5779,10 @@ func (*GetKeyspaceRoutingRulesRequest) Descriptor() ([]byte, []int) { } type GetKeyspaceRoutingRulesResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` KeyspaceRoutingRules *vschema.KeyspaceRoutingRules `protobuf:"bytes,1,opt,name=keyspace_routing_rules,json=keyspaceRoutingRules,proto3" json:"keyspace_routing_rules,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GetKeyspaceRoutingRulesResponse) Reset() { @@ -5895,9 +5823,9 @@ func (x *GetKeyspaceRoutingRulesResponse) GetKeyspaceRoutingRules() *vschema.Key } type GetRoutingRulesRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GetRoutingRulesRequest) Reset() { @@ -5931,11 +5859,10 @@ func (*GetRoutingRulesRequest) Descriptor() ([]byte, []int) { } type GetRoutingRulesResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + RoutingRules *vschema.RoutingRules `protobuf:"bytes,1,opt,name=routing_rules,json=routingRules,proto3" json:"routing_rules,omitempty"` unknownFields protoimpl.UnknownFields - - RoutingRules *vschema.RoutingRules `protobuf:"bytes,1,opt,name=routing_rules,json=routingRules,proto3" json:"routing_rules,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetRoutingRulesResponse) Reset() { @@ -5976,11 +5903,8 @@ func (x *GetRoutingRulesResponse) GetRoutingRules() *vschema.RoutingRules { } type GetSchemaRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - TabletAlias *topodata.TabletAlias `protobuf:"bytes,1,opt,name=tablet_alias,json=tabletAlias,proto3" json:"tablet_alias,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + TabletAlias *topodata.TabletAlias `protobuf:"bytes,1,opt,name=tablet_alias,json=tabletAlias,proto3" json:"tablet_alias,omitempty"` // Tables is a list of tables for which we should gather information. Each is // either an exact match, or a regular expression of the form /regexp/. Tables []string `protobuf:"bytes,2,rep,name=tables,proto3" json:"tables,omitempty"` @@ -5999,6 +5923,8 @@ type GetSchemaRequest struct { // TableSchemaOnly specifies whether to limit the results to just table/view // schema definition (CREATE TABLE/VIEW statements) and skip column/field information TableSchemaOnly bool `protobuf:"varint,7,opt,name=table_schema_only,json=tableSchemaOnly,proto3" json:"table_schema_only,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GetSchemaRequest) Reset() { @@ -6081,11 +6007,10 @@ func (x *GetSchemaRequest) GetTableSchemaOnly() bool { } type GetSchemaResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Schema *tabletmanagerdata.SchemaDefinition `protobuf:"bytes,1,opt,name=schema,proto3" json:"schema,omitempty"` unknownFields protoimpl.UnknownFields - - Schema *tabletmanagerdata.SchemaDefinition `protobuf:"bytes,1,opt,name=schema,proto3" json:"schema,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetSchemaResponse) Reset() { @@ -6136,11 +6061,8 @@ func (x *GetSchemaResponse) GetSchema() *tabletmanagerdata.SchemaDefinition { // // MigrationContext, Status, and Recent are mutually exclusive. type GetSchemaMigrationsRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"` // Uuid, if set, will cause GetSchemaMigrations to return exactly 1 migration, // namely the one with that UUID. If no migration exists, the response will // be an empty slice, not an error. @@ -6152,10 +6074,12 @@ type GetSchemaMigrationsRequest struct { Status SchemaMigration_Status `protobuf:"varint,4,opt,name=status,proto3,enum=vtctldata.SchemaMigration_Status" json:"status,omitempty"` // Recent, if set, returns migrations requested between now and the provided // value. - Recent *vttime.Duration `protobuf:"bytes,5,opt,name=recent,proto3" json:"recent,omitempty"` - Order QueryOrdering `protobuf:"varint,6,opt,name=order,proto3,enum=vtctldata.QueryOrdering" json:"order,omitempty"` - Limit uint64 `protobuf:"varint,7,opt,name=limit,proto3" json:"limit,omitempty"` - Skip uint64 `protobuf:"varint,8,opt,name=skip,proto3" json:"skip,omitempty"` + Recent *vttime.Duration `protobuf:"bytes,5,opt,name=recent,proto3" json:"recent,omitempty"` + Order QueryOrdering `protobuf:"varint,6,opt,name=order,proto3,enum=vtctldata.QueryOrdering" json:"order,omitempty"` + Limit uint64 `protobuf:"varint,7,opt,name=limit,proto3" json:"limit,omitempty"` + Skip uint64 `protobuf:"varint,8,opt,name=skip,proto3" json:"skip,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GetSchemaMigrationsRequest) Reset() { @@ -6245,11 +6169,10 @@ func (x *GetSchemaMigrationsRequest) GetSkip() uint64 { } type GetSchemaMigrationsResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Migrations []*SchemaMigration `protobuf:"bytes,1,rep,name=migrations,proto3" json:"migrations,omitempty"` unknownFields protoimpl.UnknownFields - - Migrations []*SchemaMigration `protobuf:"bytes,1,rep,name=migrations,proto3" json:"migrations,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetSchemaMigrationsResponse) Reset() { @@ -6290,15 +6213,14 @@ func (x *GetSchemaMigrationsResponse) GetMigrations() []*SchemaMigration { } type GetShardReplicationRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"` - Shard string `protobuf:"bytes,2,opt,name=shard,proto3" json:"shard,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"` + Shard string `protobuf:"bytes,2,opt,name=shard,proto3" json:"shard,omitempty"` // Cells is the list of cells to fetch data for. Omit to fetch data from all // cells. - Cells []string `protobuf:"bytes,3,rep,name=cells,proto3" json:"cells,omitempty"` + Cells []string `protobuf:"bytes,3,rep,name=cells,proto3" json:"cells,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GetShardReplicationRequest) Reset() { @@ -6353,11 +6275,10 @@ func (x *GetShardReplicationRequest) GetCells() []string { } type GetShardReplicationResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - ShardReplicationByCell map[string]*topodata.ShardReplication `protobuf:"bytes,1,rep,name=shard_replication_by_cell,json=shardReplicationByCell,proto3" json:"shard_replication_by_cell,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + state protoimpl.MessageState `protogen:"open.v1"` + ShardReplicationByCell map[string]*topodata.ShardReplication `protobuf:"bytes,1,rep,name=shard_replication_by_cell,json=shardReplicationByCell,proto3" json:"shard_replication_by_cell,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GetShardReplicationResponse) Reset() { @@ -6398,12 +6319,11 @@ func (x *GetShardReplicationResponse) GetShardReplicationByCell() map[string]*to } type GetShardRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"` + ShardName string `protobuf:"bytes,2,opt,name=shard_name,json=shardName,proto3" json:"shard_name,omitempty"` unknownFields protoimpl.UnknownFields - - Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"` - ShardName string `protobuf:"bytes,2,opt,name=shard_name,json=shardName,proto3" json:"shard_name,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetShardRequest) Reset() { @@ -6451,11 +6371,10 @@ func (x *GetShardRequest) GetShardName() string { } type GetShardResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Shard *Shard `protobuf:"bytes,1,opt,name=shard,proto3" json:"shard,omitempty"` unknownFields protoimpl.UnknownFields - - Shard *Shard `protobuf:"bytes,1,opt,name=shard,proto3" json:"shard,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetShardResponse) Reset() { @@ -6496,9 +6415,9 @@ func (x *GetShardResponse) GetShard() *Shard { } type GetShardRoutingRulesRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GetShardRoutingRulesRequest) Reset() { @@ -6532,11 +6451,10 @@ func (*GetShardRoutingRulesRequest) Descriptor() ([]byte, []int) { } type GetShardRoutingRulesResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` ShardRoutingRules *vschema.ShardRoutingRules `protobuf:"bytes,1,opt,name=shard_routing_rules,json=shardRoutingRules,proto3" json:"shard_routing_rules,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GetShardRoutingRulesResponse) Reset() { @@ -6577,11 +6495,10 @@ func (x *GetShardRoutingRulesResponse) GetShardRoutingRules() *vschema.ShardRout } type GetSrvKeyspaceNamesRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Cells []string `protobuf:"bytes,1,rep,name=cells,proto3" json:"cells,omitempty"` unknownFields protoimpl.UnknownFields - - Cells []string `protobuf:"bytes,1,rep,name=cells,proto3" json:"cells,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetSrvKeyspaceNamesRequest) Reset() { @@ -6622,12 +6539,11 @@ func (x *GetSrvKeyspaceNamesRequest) GetCells() []string { } type GetSrvKeyspaceNamesResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Names is a mapping of cell name to a list of SrvKeyspace names. - Names map[string]*GetSrvKeyspaceNamesResponse_NameList `protobuf:"bytes,1,rep,name=names,proto3" json:"names,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Names map[string]*GetSrvKeyspaceNamesResponse_NameList `protobuf:"bytes,1,rep,name=names,proto3" json:"names,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GetSrvKeyspaceNamesResponse) Reset() { @@ -6668,14 +6584,13 @@ func (x *GetSrvKeyspaceNamesResponse) GetNames() map[string]*GetSrvKeyspaceNames } type GetSrvKeyspacesRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"` // Cells is a list of cells to lookup a SrvKeyspace for. Leaving this empty is // equivalent to specifying all cells in the topo. - Cells []string `protobuf:"bytes,2,rep,name=cells,proto3" json:"cells,omitempty"` + Cells []string `protobuf:"bytes,2,rep,name=cells,proto3" json:"cells,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GetSrvKeyspacesRequest) Reset() { @@ -6723,12 +6638,11 @@ func (x *GetSrvKeyspacesRequest) GetCells() []string { } type GetSrvKeyspacesResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // SrvKeyspaces is a mapping of cell name to SrvKeyspace. - SrvKeyspaces map[string]*topodata.SrvKeyspace `protobuf:"bytes,1,rep,name=srv_keyspaces,json=srvKeyspaces,proto3" json:"srv_keyspaces,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + SrvKeyspaces map[string]*topodata.SrvKeyspace `protobuf:"bytes,1,rep,name=srv_keyspaces,json=srvKeyspaces,proto3" json:"srv_keyspaces,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GetSrvKeyspacesResponse) Reset() { @@ -6769,11 +6683,8 @@ func (x *GetSrvKeyspacesResponse) GetSrvKeyspaces() map[string]*topodata.SrvKeys } type UpdateThrottlerConfigRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"` // Enable instructs to enable the throttler Enable bool `protobuf:"varint,2,opt,name=enable,proto3" json:"enable,omitempty"` // Disable instructs to disable the throttler @@ -6797,6 +6708,8 @@ type UpdateThrottlerConfigRequest struct { // AppCheckedMetrics are the metrics to be checked got the given AppName. These can be scoped. For example: // ["lag", "self/loadvg", "shard/threads_running"] AppCheckedMetrics []string `protobuf:"bytes,12,rep,name=app_checked_metrics,json=appCheckedMetrics,proto3" json:"app_checked_metrics,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *UpdateThrottlerConfigRequest) Reset() { @@ -6914,9 +6827,9 @@ func (x *UpdateThrottlerConfigRequest) GetAppCheckedMetrics() []string { } type UpdateThrottlerConfigResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *UpdateThrottlerConfigResponse) Reset() { @@ -6950,11 +6863,10 @@ func (*UpdateThrottlerConfigResponse) Descriptor() ([]byte, []int) { } type GetSrvVSchemaRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Cell string `protobuf:"bytes,1,opt,name=cell,proto3" json:"cell,omitempty"` unknownFields protoimpl.UnknownFields - - Cell string `protobuf:"bytes,1,opt,name=cell,proto3" json:"cell,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetSrvVSchemaRequest) Reset() { @@ -6995,11 +6907,10 @@ func (x *GetSrvVSchemaRequest) GetCell() string { } type GetSrvVSchemaResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + SrvVSchema *vschema.SrvVSchema `protobuf:"bytes,1,opt,name=srv_v_schema,json=srvVSchema,proto3" json:"srv_v_schema,omitempty"` unknownFields protoimpl.UnknownFields - - SrvVSchema *vschema.SrvVSchema `protobuf:"bytes,1,opt,name=srv_v_schema,json=srvVSchema,proto3" json:"srv_v_schema,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetSrvVSchemaResponse) Reset() { @@ -7040,11 +6951,10 @@ func (x *GetSrvVSchemaResponse) GetSrvVSchema() *vschema.SrvVSchema { } type GetSrvVSchemasRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Cells []string `protobuf:"bytes,2,rep,name=cells,proto3" json:"cells,omitempty"` unknownFields protoimpl.UnknownFields - - Cells []string `protobuf:"bytes,2,rep,name=cells,proto3" json:"cells,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetSrvVSchemasRequest) Reset() { @@ -7085,12 +6995,11 @@ func (x *GetSrvVSchemasRequest) GetCells() []string { } type GetSrvVSchemasResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // SrvVSchemas is a mapping of cell name to SrvVSchema - SrvVSchemas map[string]*vschema.SrvVSchema `protobuf:"bytes,1,rep,name=srv_v_schemas,json=srvVSchemas,proto3" json:"srv_v_schemas,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + SrvVSchemas map[string]*vschema.SrvVSchema `protobuf:"bytes,1,rep,name=srv_v_schemas,json=srvVSchemas,proto3" json:"srv_v_schemas,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GetSrvVSchemasResponse) Reset() { @@ -7131,11 +7040,10 @@ func (x *GetSrvVSchemasResponse) GetSrvVSchemas() map[string]*vschema.SrvVSchema } type GetTabletRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + TabletAlias *topodata.TabletAlias `protobuf:"bytes,1,opt,name=tablet_alias,json=tabletAlias,proto3" json:"tablet_alias,omitempty"` unknownFields protoimpl.UnknownFields - - TabletAlias *topodata.TabletAlias `protobuf:"bytes,1,opt,name=tablet_alias,json=tabletAlias,proto3" json:"tablet_alias,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetTabletRequest) Reset() { @@ -7176,11 +7084,10 @@ func (x *GetTabletRequest) GetTabletAlias() *topodata.TabletAlias { } type GetTabletResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Tablet *topodata.Tablet `protobuf:"bytes,1,opt,name=tablet,proto3" json:"tablet,omitempty"` unknownFields protoimpl.UnknownFields - - Tablet *topodata.Tablet `protobuf:"bytes,1,opt,name=tablet,proto3" json:"tablet,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetTabletResponse) Reset() { @@ -7221,10 +7128,7 @@ func (x *GetTabletResponse) GetTablet() *topodata.Tablet { } type GetTabletsRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Keyspace is the name of the keyspace to return tablets for. Omit to return // tablets from all keyspaces. Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"` @@ -7246,7 +7150,9 @@ type GetTabletsRequest struct { TabletAliases []*topodata.TabletAlias `protobuf:"bytes,5,rep,name=tablet_aliases,json=tabletAliases,proto3" json:"tablet_aliases,omitempty"` // tablet_type specifies the type of tablets to return. Omit to return all // tablet types. - TabletType topodata.TabletType `protobuf:"varint,6,opt,name=tablet_type,json=tabletType,proto3,enum=topodata.TabletType" json:"tablet_type,omitempty"` + TabletType topodata.TabletType `protobuf:"varint,6,opt,name=tablet_type,json=tabletType,proto3,enum=topodata.TabletType" json:"tablet_type,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GetTabletsRequest) Reset() { @@ -7322,11 +7228,10 @@ func (x *GetTabletsRequest) GetTabletType() topodata.TabletType { } type GetTabletsResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Tablets []*topodata.Tablet `protobuf:"bytes,1,rep,name=tablets,proto3" json:"tablets,omitempty"` unknownFields protoimpl.UnknownFields - - Tablets []*topodata.Tablet `protobuf:"bytes,1,rep,name=tablets,proto3" json:"tablets,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetTabletsResponse) Reset() { @@ -7367,12 +7272,11 @@ func (x *GetTabletsResponse) GetTablets() []*topodata.Tablet { } type GetThrottlerStatusRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // TabletAlias is the alias of the tablet to probe - TabletAlias *topodata.TabletAlias `protobuf:"bytes,1,opt,name=tablet_alias,json=tabletAlias,proto3" json:"tablet_alias,omitempty"` + TabletAlias *topodata.TabletAlias `protobuf:"bytes,1,opt,name=tablet_alias,json=tabletAlias,proto3" json:"tablet_alias,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GetThrottlerStatusRequest) Reset() { @@ -7413,11 +7317,10 @@ func (x *GetThrottlerStatusRequest) GetTabletAlias() *topodata.TabletAlias { } type GetThrottlerStatusResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Status *tabletmanagerdata.GetThrottlerStatusResponse `protobuf:"bytes,1,opt,name=status,proto3" json:"status,omitempty"` unknownFields protoimpl.UnknownFields - - Status *tabletmanagerdata.GetThrottlerStatusResponse `protobuf:"bytes,1,opt,name=status,proto3" json:"status,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetThrottlerStatusResponse) Reset() { @@ -7458,13 +7361,12 @@ func (x *GetThrottlerStatusResponse) GetStatus() *tabletmanagerdata.GetThrottler } type GetTopologyPathRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Path string `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"` + Version int64 `protobuf:"varint,2,opt,name=version,proto3" json:"version,omitempty"` + AsJson bool `protobuf:"varint,3,opt,name=as_json,json=asJson,proto3" json:"as_json,omitempty"` unknownFields protoimpl.UnknownFields - - Path string `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"` - Version int64 `protobuf:"varint,2,opt,name=version,proto3" json:"version,omitempty"` - AsJson bool `protobuf:"varint,3,opt,name=as_json,json=asJson,proto3" json:"as_json,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetTopologyPathRequest) Reset() { @@ -7519,11 +7421,10 @@ func (x *GetTopologyPathRequest) GetAsJson() bool { } type GetTopologyPathResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Cell *TopologyCell `protobuf:"bytes,1,opt,name=cell,proto3" json:"cell,omitempty"` unknownFields protoimpl.UnknownFields - - Cell *TopologyCell `protobuf:"bytes,1,opt,name=cell,proto3" json:"cell,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetTopologyPathResponse) Reset() { @@ -7564,17 +7465,16 @@ func (x *GetTopologyPathResponse) GetCell() *TopologyCell { } type TopologyCell struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - Path string `protobuf:"bytes,2,opt,name=path,proto3" json:"path,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Path string `protobuf:"bytes,2,opt,name=path,proto3" json:"path,omitempty"` // Data is the file contents of the cell located at path. // It is only populated if the cell is a terminal node. - Data string `protobuf:"bytes,3,opt,name=data,proto3" json:"data,omitempty"` - Children []string `protobuf:"bytes,4,rep,name=children,proto3" json:"children,omitempty"` - Version int64 `protobuf:"varint,5,opt,name=version,proto3" json:"version,omitempty"` + Data string `protobuf:"bytes,3,opt,name=data,proto3" json:"data,omitempty"` + Children []string `protobuf:"bytes,4,rep,name=children,proto3" json:"children,omitempty"` + Version int64 `protobuf:"varint,5,opt,name=version,proto3" json:"version,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *TopologyCell) Reset() { @@ -7643,12 +7543,11 @@ func (x *TopologyCell) GetVersion() int64 { } type GetUnresolvedTransactionsRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"` + AbandonAge int64 `protobuf:"varint,2,opt,name=abandon_age,json=abandonAge,proto3" json:"abandon_age,omitempty"` // in seconds unknownFields protoimpl.UnknownFields - - Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"` - AbandonAge int64 `protobuf:"varint,2,opt,name=abandon_age,json=abandonAge,proto3" json:"abandon_age,omitempty"` // in seconds + sizeCache protoimpl.SizeCache } func (x *GetUnresolvedTransactionsRequest) Reset() { @@ -7696,11 +7595,10 @@ func (x *GetUnresolvedTransactionsRequest) GetAbandonAge() int64 { } type GetUnresolvedTransactionsResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Transactions []*query.TransactionMetadata `protobuf:"bytes,1,rep,name=transactions,proto3" json:"transactions,omitempty"` unknownFields protoimpl.UnknownFields - - Transactions []*query.TransactionMetadata `protobuf:"bytes,1,rep,name=transactions,proto3" json:"transactions,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetUnresolvedTransactionsResponse) Reset() { @@ -7741,11 +7639,10 @@ func (x *GetUnresolvedTransactionsResponse) GetTransactions() []*query.Transacti } type GetTransactionInfoRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Dtid string `protobuf:"bytes,1,opt,name=dtid,proto3" json:"dtid,omitempty"` unknownFields protoimpl.UnknownFields - - Dtid string `protobuf:"bytes,1,opt,name=dtid,proto3" json:"dtid,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetTransactionInfoRequest) Reset() { @@ -7786,15 +7683,14 @@ func (x *GetTransactionInfoRequest) GetDtid() string { } type ShardTransactionState struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Shard string `protobuf:"bytes,1,opt,name=shard,proto3" json:"shard,omitempty"` + State string `protobuf:"bytes,2,opt,name=state,proto3" json:"state,omitempty"` + Message string `protobuf:"bytes,3,opt,name=message,proto3" json:"message,omitempty"` + TimeCreated int64 `protobuf:"varint,4,opt,name=time_created,json=timeCreated,proto3" json:"time_created,omitempty"` + Statements []string `protobuf:"bytes,5,rep,name=statements,proto3" json:"statements,omitempty"` unknownFields protoimpl.UnknownFields - - Shard string `protobuf:"bytes,1,opt,name=shard,proto3" json:"shard,omitempty"` - State string `protobuf:"bytes,2,opt,name=state,proto3" json:"state,omitempty"` - Message string `protobuf:"bytes,3,opt,name=message,proto3" json:"message,omitempty"` - TimeCreated int64 `protobuf:"varint,4,opt,name=time_created,json=timeCreated,proto3" json:"time_created,omitempty"` - Statements []string `protobuf:"bytes,5,rep,name=statements,proto3" json:"statements,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ShardTransactionState) Reset() { @@ -7863,12 +7759,11 @@ func (x *ShardTransactionState) GetStatements() []string { } type GetTransactionInfoResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Metadata *query.TransactionMetadata `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"` + ShardStates []*ShardTransactionState `protobuf:"bytes,2,rep,name=shard_states,json=shardStates,proto3" json:"shard_states,omitempty"` unknownFields protoimpl.UnknownFields - - Metadata *query.TransactionMetadata `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"` - ShardStates []*ShardTransactionState `protobuf:"bytes,2,rep,name=shard_states,json=shardStates,proto3" json:"shard_states,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetTransactionInfoResponse) Reset() { @@ -7916,12 +7811,11 @@ func (x *GetTransactionInfoResponse) GetShardStates() []*ShardTransactionState { } type ConcludeTransactionRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Dtid string `protobuf:"bytes,1,opt,name=dtid,proto3" json:"dtid,omitempty"` + Participants []*query.Target `protobuf:"bytes,2,rep,name=participants,proto3" json:"participants,omitempty"` unknownFields protoimpl.UnknownFields - - Dtid string `protobuf:"bytes,1,opt,name=dtid,proto3" json:"dtid,omitempty"` - Participants []*query.Target `protobuf:"bytes,2,rep,name=participants,proto3" json:"participants,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ConcludeTransactionRequest) Reset() { @@ -7969,9 +7863,9 @@ func (x *ConcludeTransactionRequest) GetParticipants() []*query.Target { } type ConcludeTransactionResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ConcludeTransactionResponse) Reset() { @@ -8005,11 +7899,10 @@ func (*ConcludeTransactionResponse) Descriptor() ([]byte, []int) { } type GetVSchemaRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"` unknownFields protoimpl.UnknownFields - - Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetVSchemaRequest) Reset() { @@ -8050,11 +7943,10 @@ func (x *GetVSchemaRequest) GetKeyspace() string { } type GetVersionRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + TabletAlias *topodata.TabletAlias `protobuf:"bytes,1,opt,name=tablet_alias,json=tabletAlias,proto3" json:"tablet_alias,omitempty"` unknownFields protoimpl.UnknownFields - - TabletAlias *topodata.TabletAlias `protobuf:"bytes,1,opt,name=tablet_alias,json=tabletAlias,proto3" json:"tablet_alias,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetVersionRequest) Reset() { @@ -8095,11 +7987,10 @@ func (x *GetVersionRequest) GetTabletAlias() *topodata.TabletAlias { } type GetVersionResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Version string `protobuf:"bytes,1,opt,name=version,proto3" json:"version,omitempty"` unknownFields protoimpl.UnknownFields - - Version string `protobuf:"bytes,1,opt,name=version,proto3" json:"version,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetVersionResponse) Reset() { @@ -8140,11 +8031,10 @@ func (x *GetVersionResponse) GetVersion() string { } type GetVSchemaResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + VSchema *vschema.Keyspace `protobuf:"bytes,1,opt,name=v_schema,json=vSchema,proto3" json:"v_schema,omitempty"` unknownFields protoimpl.UnknownFields - - VSchema *vschema.Keyspace `protobuf:"bytes,1,opt,name=v_schema,json=vSchema,proto3" json:"v_schema,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetVSchemaResponse) Reset() { @@ -8185,17 +8075,16 @@ func (x *GetVSchemaResponse) GetVSchema() *vschema.Keyspace { } type GetWorkflowsRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"` - ActiveOnly bool `protobuf:"varint,2,opt,name=active_only,json=activeOnly,proto3" json:"active_only,omitempty"` - NameOnly bool `protobuf:"varint,3,opt,name=name_only,json=nameOnly,proto3" json:"name_only,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"` + ActiveOnly bool `protobuf:"varint,2,opt,name=active_only,json=activeOnly,proto3" json:"active_only,omitempty"` + NameOnly bool `protobuf:"varint,3,opt,name=name_only,json=nameOnly,proto3" json:"name_only,omitempty"` // If you only want a specific workflow then set this field. - Workflow string `protobuf:"bytes,4,opt,name=workflow,proto3" json:"workflow,omitempty"` - IncludeLogs bool `protobuf:"varint,5,opt,name=include_logs,json=includeLogs,proto3" json:"include_logs,omitempty"` - Shards []string `protobuf:"bytes,6,rep,name=shards,proto3" json:"shards,omitempty"` + Workflow string `protobuf:"bytes,4,opt,name=workflow,proto3" json:"workflow,omitempty"` + IncludeLogs bool `protobuf:"varint,5,opt,name=include_logs,json=includeLogs,proto3" json:"include_logs,omitempty"` + Shards []string `protobuf:"bytes,6,rep,name=shards,proto3" json:"shards,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GetWorkflowsRequest) Reset() { @@ -8271,11 +8160,10 @@ func (x *GetWorkflowsRequest) GetShards() []string { } type GetWorkflowsResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Workflows []*Workflow `protobuf:"bytes,1,rep,name=workflows,proto3" json:"workflows,omitempty"` unknownFields protoimpl.UnknownFields - - Workflows []*Workflow `protobuf:"bytes,1,rep,name=workflows,proto3" json:"workflows,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetWorkflowsResponse) Reset() { @@ -8316,15 +8204,14 @@ func (x *GetWorkflowsResponse) GetWorkflows() []*Workflow { } type InitShardPrimaryRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"` - Shard string `protobuf:"bytes,2,opt,name=shard,proto3" json:"shard,omitempty"` - PrimaryElectTabletAlias *topodata.TabletAlias `protobuf:"bytes,3,opt,name=primary_elect_tablet_alias,json=primaryElectTabletAlias,proto3" json:"primary_elect_tablet_alias,omitempty"` - Force bool `protobuf:"varint,4,opt,name=force,proto3" json:"force,omitempty"` - WaitReplicasTimeout *vttime.Duration `protobuf:"bytes,5,opt,name=wait_replicas_timeout,json=waitReplicasTimeout,proto3" json:"wait_replicas_timeout,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"` + Shard string `protobuf:"bytes,2,opt,name=shard,proto3" json:"shard,omitempty"` + PrimaryElectTabletAlias *topodata.TabletAlias `protobuf:"bytes,3,opt,name=primary_elect_tablet_alias,json=primaryElectTabletAlias,proto3" json:"primary_elect_tablet_alias,omitempty"` + Force bool `protobuf:"varint,4,opt,name=force,proto3" json:"force,omitempty"` + WaitReplicasTimeout *vttime.Duration `protobuf:"bytes,5,opt,name=wait_replicas_timeout,json=waitReplicasTimeout,proto3" json:"wait_replicas_timeout,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *InitShardPrimaryRequest) Reset() { @@ -8393,11 +8280,10 @@ func (x *InitShardPrimaryRequest) GetWaitReplicasTimeout() *vttime.Duration { } type InitShardPrimaryResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Events []*logutil.Event `protobuf:"bytes,1,rep,name=events,proto3" json:"events,omitempty"` unknownFields protoimpl.UnknownFields - - Events []*logutil.Event `protobuf:"bytes,1,rep,name=events,proto3" json:"events,omitempty"` + sizeCache protoimpl.SizeCache } func (x *InitShardPrimaryResponse) Reset() { @@ -8438,12 +8324,11 @@ func (x *InitShardPrimaryResponse) GetEvents() []*logutil.Event { } type LaunchSchemaMigrationRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"` + Uuid string `protobuf:"bytes,2,opt,name=uuid,proto3" json:"uuid,omitempty"` unknownFields protoimpl.UnknownFields - - Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"` - Uuid string `protobuf:"bytes,2,opt,name=uuid,proto3" json:"uuid,omitempty"` + sizeCache protoimpl.SizeCache } func (x *LaunchSchemaMigrationRequest) Reset() { @@ -8491,11 +8376,10 @@ func (x *LaunchSchemaMigrationRequest) GetUuid() string { } type LaunchSchemaMigrationResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - RowsAffectedByShard map[string]uint64 `protobuf:"bytes,1,rep,name=rows_affected_by_shard,json=rowsAffectedByShard,proto3" json:"rows_affected_by_shard,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` + state protoimpl.MessageState `protogen:"open.v1"` + RowsAffectedByShard map[string]uint64 `protobuf:"bytes,1,rep,name=rows_affected_by_shard,json=rowsAffectedByShard,proto3" json:"rows_affected_by_shard,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *LaunchSchemaMigrationResponse) Reset() { @@ -8536,16 +8420,15 @@ func (x *LaunchSchemaMigrationResponse) GetRowsAffectedByShard() map[string]uint } type LookupVindexCompleteRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Where the lookup vindex lives. Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"` // This is the name of the lookup vindex and the vreplication workflow. Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` // Where the vreplication workflow lives. TableKeyspace string `protobuf:"bytes,3,opt,name=table_keyspace,json=tableKeyspace,proto3" json:"table_keyspace,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *LookupVindexCompleteRequest) Reset() { @@ -8600,9 +8483,9 @@ func (x *LookupVindexCompleteRequest) GetTableKeyspace() string { } type LookupVindexCompleteResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *LookupVindexCompleteResponse) Reset() { @@ -8636,10 +8519,7 @@ func (*LookupVindexCompleteResponse) Descriptor() ([]byte, []int) { } type LookupVindexCreateRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"` Workflow string `protobuf:"bytes,2,opt,name=workflow,proto3" json:"workflow,omitempty"` Cells []string `protobuf:"bytes,3,rep,name=cells,proto3" json:"cells,omitempty"` @@ -8647,6 +8527,8 @@ type LookupVindexCreateRequest struct { ContinueAfterCopyWithOwner bool `protobuf:"varint,5,opt,name=continue_after_copy_with_owner,json=continueAfterCopyWithOwner,proto3" json:"continue_after_copy_with_owner,omitempty"` TabletTypes []topodata.TabletType `protobuf:"varint,6,rep,packed,name=tablet_types,json=tabletTypes,proto3,enum=topodata.TabletType" json:"tablet_types,omitempty"` TabletSelectionPreference tabletmanagerdata.TabletSelectionPreference `protobuf:"varint,7,opt,name=tablet_selection_preference,json=tabletSelectionPreference,proto3,enum=tabletmanagerdata.TabletSelectionPreference" json:"tablet_selection_preference,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *LookupVindexCreateRequest) Reset() { @@ -8729,9 +8611,9 @@ func (x *LookupVindexCreateRequest) GetTabletSelectionPreference() tabletmanager } type LookupVindexCreateResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *LookupVindexCreateResponse) Reset() { @@ -8765,10 +8647,7 @@ func (*LookupVindexCreateResponse) Descriptor() ([]byte, []int) { } type LookupVindexExternalizeRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Where the lookup vindex lives. Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"` // This is the name of the lookup vindex and the vreplication workflow. @@ -8778,6 +8657,8 @@ type LookupVindexExternalizeRequest struct { // If this is set true, we directly delete the workflow instead of stopping. // Also, complete command is not required to delete workflow in that case. DeleteWorkflow bool `protobuf:"varint,4,opt,name=delete_workflow,json=deleteWorkflow,proto3" json:"delete_workflow,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *LookupVindexExternalizeRequest) Reset() { @@ -8839,14 +8720,13 @@ func (x *LookupVindexExternalizeRequest) GetDeleteWorkflow() bool { } type LookupVindexExternalizeResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Was the workflow stopped. WorkflowStopped bool `protobuf:"varint,1,opt,name=workflow_stopped,json=workflowStopped,proto3" json:"workflow_stopped,omitempty"` // Was the workflow deleted. WorkflowDeleted bool `protobuf:"varint,2,opt,name=workflow_deleted,json=workflowDeleted,proto3" json:"workflow_deleted,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *LookupVindexExternalizeResponse) Reset() { @@ -8894,16 +8774,15 @@ func (x *LookupVindexExternalizeResponse) GetWorkflowDeleted() bool { } type LookupVindexInternalizeRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Where the lookup vindex lives. Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"` // This is the name of the lookup vindex and the vreplication workflow. Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` // Where the vreplication workflow lives. TableKeyspace string `protobuf:"bytes,3,opt,name=table_keyspace,json=tableKeyspace,proto3" json:"table_keyspace,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *LookupVindexInternalizeRequest) Reset() { @@ -8958,9 +8837,9 @@ func (x *LookupVindexInternalizeRequest) GetTableKeyspace() string { } type LookupVindexInternalizeResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *LookupVindexInternalizeResponse) Reset() { @@ -8994,11 +8873,10 @@ func (*LookupVindexInternalizeResponse) Descriptor() ([]byte, []int) { } type MaterializeCreateRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Settings *MaterializeSettings `protobuf:"bytes,1,opt,name=settings,proto3" json:"settings,omitempty"` unknownFields protoimpl.UnknownFields - - Settings *MaterializeSettings `protobuf:"bytes,1,opt,name=settings,proto3" json:"settings,omitempty"` + sizeCache protoimpl.SizeCache } func (x *MaterializeCreateRequest) Reset() { @@ -9039,9 +8917,9 @@ func (x *MaterializeCreateRequest) GetSettings() *MaterializeSettings { } type MaterializeCreateResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *MaterializeCreateResponse) Reset() { @@ -9075,10 +8953,7 @@ func (*MaterializeCreateResponse) Descriptor() ([]byte, []int) { } type MigrateCreateRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The necessary info gets passed on to each primary tablet involved // in the workflow via the CreateVReplicationWorkflow tabletmanager RPC. Workflow string `protobuf:"bytes,1,opt,name=workflow,proto3" json:"workflow,omitempty"` @@ -9105,6 +8980,8 @@ type MigrateCreateRequest struct { AutoStart bool `protobuf:"varint,16,opt,name=auto_start,json=autoStart,proto3" json:"auto_start,omitempty"` // NoRoutingRules is set to true if routing rules should not be created on the target when the workflow is created. NoRoutingRules bool `protobuf:"varint,17,opt,name=no_routing_rules,json=noRoutingRules,proto3" json:"no_routing_rules,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *MigrateCreateRequest) Reset() { @@ -9257,16 +9134,15 @@ func (x *MigrateCreateRequest) GetNoRoutingRules() bool { } type MigrateCompleteRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Workflow string `protobuf:"bytes,1,opt,name=workflow,proto3" json:"workflow,omitempty"` - TargetKeyspace string `protobuf:"bytes,3,opt,name=target_keyspace,json=targetKeyspace,proto3" json:"target_keyspace,omitempty"` - KeepData bool `protobuf:"varint,4,opt,name=keep_data,json=keepData,proto3" json:"keep_data,omitempty"` - KeepRoutingRules bool `protobuf:"varint,5,opt,name=keep_routing_rules,json=keepRoutingRules,proto3" json:"keep_routing_rules,omitempty"` - RenameTables bool `protobuf:"varint,6,opt,name=rename_tables,json=renameTables,proto3" json:"rename_tables,omitempty"` - DryRun bool `protobuf:"varint,7,opt,name=dry_run,json=dryRun,proto3" json:"dry_run,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Workflow string `protobuf:"bytes,1,opt,name=workflow,proto3" json:"workflow,omitempty"` + TargetKeyspace string `protobuf:"bytes,3,opt,name=target_keyspace,json=targetKeyspace,proto3" json:"target_keyspace,omitempty"` + KeepData bool `protobuf:"varint,4,opt,name=keep_data,json=keepData,proto3" json:"keep_data,omitempty"` + KeepRoutingRules bool `protobuf:"varint,5,opt,name=keep_routing_rules,json=keepRoutingRules,proto3" json:"keep_routing_rules,omitempty"` + RenameTables bool `protobuf:"varint,6,opt,name=rename_tables,json=renameTables,proto3" json:"rename_tables,omitempty"` + DryRun bool `protobuf:"varint,7,opt,name=dry_run,json=dryRun,proto3" json:"dry_run,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *MigrateCompleteRequest) Reset() { @@ -9342,12 +9218,11 @@ func (x *MigrateCompleteRequest) GetDryRun() bool { } type MigrateCompleteResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Summary string `protobuf:"bytes,1,opt,name=summary,proto3" json:"summary,omitempty"` + DryRunResults []string `protobuf:"bytes,2,rep,name=dry_run_results,json=dryRunResults,proto3" json:"dry_run_results,omitempty"` unknownFields protoimpl.UnknownFields - - Summary string `protobuf:"bytes,1,opt,name=summary,proto3" json:"summary,omitempty"` - DryRunResults []string `protobuf:"bytes,2,rep,name=dry_run_results,json=dryRunResults,proto3" json:"dry_run_results,omitempty"` + sizeCache protoimpl.SizeCache } func (x *MigrateCompleteResponse) Reset() { @@ -9395,14 +9270,13 @@ func (x *MigrateCompleteResponse) GetDryRunResults() []string { } type MountRegisterRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + TopoType string `protobuf:"bytes,1,opt,name=topo_type,json=topoType,proto3" json:"topo_type,omitempty"` + TopoServer string `protobuf:"bytes,2,opt,name=topo_server,json=topoServer,proto3" json:"topo_server,omitempty"` + TopoRoot string `protobuf:"bytes,3,opt,name=topo_root,json=topoRoot,proto3" json:"topo_root,omitempty"` + Name string `protobuf:"bytes,4,opt,name=name,proto3" json:"name,omitempty"` unknownFields protoimpl.UnknownFields - - TopoType string `protobuf:"bytes,1,opt,name=topo_type,json=topoType,proto3" json:"topo_type,omitempty"` - TopoServer string `protobuf:"bytes,2,opt,name=topo_server,json=topoServer,proto3" json:"topo_server,omitempty"` - TopoRoot string `protobuf:"bytes,3,opt,name=topo_root,json=topoRoot,proto3" json:"topo_root,omitempty"` - Name string `protobuf:"bytes,4,opt,name=name,proto3" json:"name,omitempty"` + sizeCache protoimpl.SizeCache } func (x *MountRegisterRequest) Reset() { @@ -9464,9 +9338,9 @@ func (x *MountRegisterRequest) GetName() string { } type MountRegisterResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *MountRegisterResponse) Reset() { @@ -9500,11 +9374,10 @@ func (*MountRegisterResponse) Descriptor() ([]byte, []int) { } type MountUnregisterRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,4,opt,name=name,proto3" json:"name,omitempty"` unknownFields protoimpl.UnknownFields - - Name string `protobuf:"bytes,4,opt,name=name,proto3" json:"name,omitempty"` + sizeCache protoimpl.SizeCache } func (x *MountUnregisterRequest) Reset() { @@ -9545,9 +9418,9 @@ func (x *MountUnregisterRequest) GetName() string { } type MountUnregisterResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *MountUnregisterResponse) Reset() { @@ -9581,11 +9454,10 @@ func (*MountUnregisterResponse) Descriptor() ([]byte, []int) { } type MountShowRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,4,opt,name=name,proto3" json:"name,omitempty"` unknownFields protoimpl.UnknownFields - - Name string `protobuf:"bytes,4,opt,name=name,proto3" json:"name,omitempty"` + sizeCache protoimpl.SizeCache } func (x *MountShowRequest) Reset() { @@ -9626,14 +9498,13 @@ func (x *MountShowRequest) GetName() string { } type MountShowResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + TopoType string `protobuf:"bytes,1,opt,name=topo_type,json=topoType,proto3" json:"topo_type,omitempty"` + TopoServer string `protobuf:"bytes,2,opt,name=topo_server,json=topoServer,proto3" json:"topo_server,omitempty"` + TopoRoot string `protobuf:"bytes,3,opt,name=topo_root,json=topoRoot,proto3" json:"topo_root,omitempty"` + Name string `protobuf:"bytes,4,opt,name=name,proto3" json:"name,omitempty"` unknownFields protoimpl.UnknownFields - - TopoType string `protobuf:"bytes,1,opt,name=topo_type,json=topoType,proto3" json:"topo_type,omitempty"` - TopoServer string `protobuf:"bytes,2,opt,name=topo_server,json=topoServer,proto3" json:"topo_server,omitempty"` - TopoRoot string `protobuf:"bytes,3,opt,name=topo_root,json=topoRoot,proto3" json:"topo_root,omitempty"` - Name string `protobuf:"bytes,4,opt,name=name,proto3" json:"name,omitempty"` + sizeCache protoimpl.SizeCache } func (x *MountShowResponse) Reset() { @@ -9695,9 +9566,9 @@ func (x *MountShowResponse) GetName() string { } type MountListRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *MountListRequest) Reset() { @@ -9731,11 +9602,10 @@ func (*MountListRequest) Descriptor() ([]byte, []int) { } type MountListResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Names []string `protobuf:"bytes,1,rep,name=names,proto3" json:"names,omitempty"` unknownFields protoimpl.UnknownFields - - Names []string `protobuf:"bytes,1,rep,name=names,proto3" json:"names,omitempty"` + sizeCache protoimpl.SizeCache } func (x *MountListResponse) Reset() { @@ -9776,10 +9646,7 @@ func (x *MountListResponse) GetNames() []string { } type MoveTablesCreateRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The necessary info gets passed on to each primary tablet involved // in the workflow via the CreateVReplicationWorkflow tabletmanager RPC. Workflow string `protobuf:"bytes,1,opt,name=workflow,proto3" json:"workflow,omitempty"` @@ -9811,6 +9678,8 @@ type MoveTablesCreateRequest struct { // Run a single copy phase for the entire database. AtomicCopy bool `protobuf:"varint,19,opt,name=atomic_copy,json=atomicCopy,proto3" json:"atomic_copy,omitempty"` WorkflowOptions *WorkflowOptions `protobuf:"bytes,20,opt,name=workflow_options,json=workflowOptions,proto3" json:"workflow_options,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *MoveTablesCreateRequest) Reset() { @@ -9984,12 +9853,11 @@ func (x *MoveTablesCreateRequest) GetWorkflowOptions() *WorkflowOptions { } type MoveTablesCreateResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Summary string `protobuf:"bytes,1,opt,name=summary,proto3" json:"summary,omitempty"` + Details []*MoveTablesCreateResponse_TabletInfo `protobuf:"bytes,2,rep,name=details,proto3" json:"details,omitempty"` unknownFields protoimpl.UnknownFields - - Summary string `protobuf:"bytes,1,opt,name=summary,proto3" json:"summary,omitempty"` - Details []*MoveTablesCreateResponse_TabletInfo `protobuf:"bytes,2,rep,name=details,proto3" json:"details,omitempty"` + sizeCache protoimpl.SizeCache } func (x *MoveTablesCreateResponse) Reset() { @@ -10037,17 +9905,16 @@ func (x *MoveTablesCreateResponse) GetDetails() []*MoveTablesCreateResponse_Tabl } type MoveTablesCompleteRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Workflow string `protobuf:"bytes,1,opt,name=workflow,proto3" json:"workflow,omitempty"` - TargetKeyspace string `protobuf:"bytes,3,opt,name=target_keyspace,json=targetKeyspace,proto3" json:"target_keyspace,omitempty"` - KeepData bool `protobuf:"varint,4,opt,name=keep_data,json=keepData,proto3" json:"keep_data,omitempty"` - KeepRoutingRules bool `protobuf:"varint,5,opt,name=keep_routing_rules,json=keepRoutingRules,proto3" json:"keep_routing_rules,omitempty"` - RenameTables bool `protobuf:"varint,6,opt,name=rename_tables,json=renameTables,proto3" json:"rename_tables,omitempty"` - DryRun bool `protobuf:"varint,7,opt,name=dry_run,json=dryRun,proto3" json:"dry_run,omitempty"` - Shards []string `protobuf:"bytes,8,rep,name=shards,proto3" json:"shards,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Workflow string `protobuf:"bytes,1,opt,name=workflow,proto3" json:"workflow,omitempty"` + TargetKeyspace string `protobuf:"bytes,3,opt,name=target_keyspace,json=targetKeyspace,proto3" json:"target_keyspace,omitempty"` + KeepData bool `protobuf:"varint,4,opt,name=keep_data,json=keepData,proto3" json:"keep_data,omitempty"` + KeepRoutingRules bool `protobuf:"varint,5,opt,name=keep_routing_rules,json=keepRoutingRules,proto3" json:"keep_routing_rules,omitempty"` + RenameTables bool `protobuf:"varint,6,opt,name=rename_tables,json=renameTables,proto3" json:"rename_tables,omitempty"` + DryRun bool `protobuf:"varint,7,opt,name=dry_run,json=dryRun,proto3" json:"dry_run,omitempty"` + Shards []string `protobuf:"bytes,8,rep,name=shards,proto3" json:"shards,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *MoveTablesCompleteRequest) Reset() { @@ -10130,12 +9997,11 @@ func (x *MoveTablesCompleteRequest) GetShards() []string { } type MoveTablesCompleteResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Summary string `protobuf:"bytes,1,opt,name=summary,proto3" json:"summary,omitempty"` + DryRunResults []string `protobuf:"bytes,2,rep,name=dry_run_results,json=dryRunResults,proto3" json:"dry_run_results,omitempty"` unknownFields protoimpl.UnknownFields - - Summary string `protobuf:"bytes,1,opt,name=summary,proto3" json:"summary,omitempty"` - DryRunResults []string `protobuf:"bytes,2,rep,name=dry_run_results,json=dryRunResults,proto3" json:"dry_run_results,omitempty"` + sizeCache protoimpl.SizeCache } func (x *MoveTablesCompleteResponse) Reset() { @@ -10183,11 +10049,10 @@ func (x *MoveTablesCompleteResponse) GetDryRunResults() []string { } type PingTabletRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + TabletAlias *topodata.TabletAlias `protobuf:"bytes,1,opt,name=tablet_alias,json=tabletAlias,proto3" json:"tablet_alias,omitempty"` unknownFields protoimpl.UnknownFields - - TabletAlias *topodata.TabletAlias `protobuf:"bytes,1,opt,name=tablet_alias,json=tabletAlias,proto3" json:"tablet_alias,omitempty"` + sizeCache protoimpl.SizeCache } func (x *PingTabletRequest) Reset() { @@ -10228,9 +10093,9 @@ func (x *PingTabletRequest) GetTabletAlias() *topodata.TabletAlias { } type PingTabletResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *PingTabletResponse) Reset() { @@ -10264,10 +10129,7 @@ func (*PingTabletResponse) Descriptor() ([]byte, []int) { } type PlannedReparentShardRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Keyspace is the name of the keyspace to perform the Planned Reparent in. Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"` // Shard is the name of the shard to perform teh Planned Reparent in. @@ -10299,6 +10161,8 @@ type PlannedReparentShardRequest struct { // ExpectedPrimary is the optional alias we expect to be the current primary in order for // the reparent operation to succeed. ExpectedPrimary *topodata.TabletAlias `protobuf:"bytes,8,opt,name=expected_primary,json=expectedPrimary,proto3" json:"expected_primary,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *PlannedReparentShardRequest) Reset() { @@ -10388,10 +10252,7 @@ func (x *PlannedReparentShardRequest) GetExpectedPrimary() *topodata.TabletAlias } type PlannedReparentShardResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Keyspace is the name of the keyspace the Planned Reparent took place in. Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"` // Shard is the name of the shard the Planned Reparent took place in. @@ -10402,6 +10263,8 @@ type PlannedReparentShardResponse struct { // up-to-date. PromotedPrimary *topodata.TabletAlias `protobuf:"bytes,3,opt,name=promoted_primary,json=promotedPrimary,proto3" json:"promoted_primary,omitempty"` Events []*logutil.Event `protobuf:"bytes,4,rep,name=events,proto3" json:"events,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *PlannedReparentShardResponse) Reset() { @@ -10463,15 +10326,14 @@ func (x *PlannedReparentShardResponse) GetEvents() []*logutil.Event { } type RebuildKeyspaceGraphRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"` - Cells []string `protobuf:"bytes,2,rep,name=cells,proto3" json:"cells,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"` + Cells []string `protobuf:"bytes,2,rep,name=cells,proto3" json:"cells,omitempty"` // AllowPartial, when set, allows a SNAPSHOT keyspace to serve with an // incomplete set of shards. It is ignored for all other keyspace types. - AllowPartial bool `protobuf:"varint,3,opt,name=allow_partial,json=allowPartial,proto3" json:"allow_partial,omitempty"` + AllowPartial bool `protobuf:"varint,3,opt,name=allow_partial,json=allowPartial,proto3" json:"allow_partial,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RebuildKeyspaceGraphRequest) Reset() { @@ -10526,9 +10388,9 @@ func (x *RebuildKeyspaceGraphRequest) GetAllowPartial() bool { } type RebuildKeyspaceGraphResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RebuildKeyspaceGraphResponse) Reset() { @@ -10562,13 +10424,12 @@ func (*RebuildKeyspaceGraphResponse) Descriptor() ([]byte, []int) { } type RebuildVSchemaGraphRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Cells specifies the cells to rebuild the SrvVSchema objects for. If empty, // RebuildVSchemaGraph rebuilds the SrvVSchema for every cell in the topo. - Cells []string `protobuf:"bytes,1,rep,name=cells,proto3" json:"cells,omitempty"` + Cells []string `protobuf:"bytes,1,rep,name=cells,proto3" json:"cells,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RebuildVSchemaGraphRequest) Reset() { @@ -10609,9 +10470,9 @@ func (x *RebuildVSchemaGraphRequest) GetCells() []string { } type RebuildVSchemaGraphResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RebuildVSchemaGraphResponse) Reset() { @@ -10645,11 +10506,10 @@ func (*RebuildVSchemaGraphResponse) Descriptor() ([]byte, []int) { } type RefreshStateRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + TabletAlias *topodata.TabletAlias `protobuf:"bytes,1,opt,name=tablet_alias,json=tabletAlias,proto3" json:"tablet_alias,omitempty"` unknownFields protoimpl.UnknownFields - - TabletAlias *topodata.TabletAlias `protobuf:"bytes,1,opt,name=tablet_alias,json=tabletAlias,proto3" json:"tablet_alias,omitempty"` + sizeCache protoimpl.SizeCache } func (x *RefreshStateRequest) Reset() { @@ -10690,9 +10550,9 @@ func (x *RefreshStateRequest) GetTabletAlias() *topodata.TabletAlias { } type RefreshStateResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RefreshStateResponse) Reset() { @@ -10726,13 +10586,12 @@ func (*RefreshStateResponse) Descriptor() ([]byte, []int) { } type RefreshStateByShardRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"` + Shard string `protobuf:"bytes,2,opt,name=shard,proto3" json:"shard,omitempty"` + Cells []string `protobuf:"bytes,3,rep,name=cells,proto3" json:"cells,omitempty"` unknownFields protoimpl.UnknownFields - - Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"` - Shard string `protobuf:"bytes,2,opt,name=shard,proto3" json:"shard,omitempty"` - Cells []string `protobuf:"bytes,3,rep,name=cells,proto3" json:"cells,omitempty"` + sizeCache protoimpl.SizeCache } func (x *RefreshStateByShardRequest) Reset() { @@ -10787,13 +10646,12 @@ func (x *RefreshStateByShardRequest) GetCells() []string { } type RefreshStateByShardResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - IsPartialRefresh bool `protobuf:"varint,1,opt,name=is_partial_refresh,json=isPartialRefresh,proto3" json:"is_partial_refresh,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + IsPartialRefresh bool `protobuf:"varint,1,opt,name=is_partial_refresh,json=isPartialRefresh,proto3" json:"is_partial_refresh,omitempty"` // This explains why we had a partial refresh (if we did) PartialRefreshDetails string `protobuf:"bytes,2,opt,name=partial_refresh_details,json=partialRefreshDetails,proto3" json:"partial_refresh_details,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RefreshStateByShardResponse) Reset() { @@ -10841,11 +10699,10 @@ func (x *RefreshStateByShardResponse) GetPartialRefreshDetails() string { } type ReloadSchemaRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + TabletAlias *topodata.TabletAlias `protobuf:"bytes,1,opt,name=tablet_alias,json=tabletAlias,proto3" json:"tablet_alias,omitempty"` unknownFields protoimpl.UnknownFields - - TabletAlias *topodata.TabletAlias `protobuf:"bytes,1,opt,name=tablet_alias,json=tabletAlias,proto3" json:"tablet_alias,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ReloadSchemaRequest) Reset() { @@ -10886,9 +10743,9 @@ func (x *ReloadSchemaRequest) GetTabletAlias() *topodata.TabletAlias { } type ReloadSchemaResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ReloadSchemaResponse) Reset() { @@ -10922,17 +10779,16 @@ func (*ReloadSchemaResponse) Descriptor() ([]byte, []int) { } type ReloadSchemaKeyspaceRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"` - WaitPosition string `protobuf:"bytes,2,opt,name=wait_position,json=waitPosition,proto3" json:"wait_position,omitempty"` - IncludePrimary bool `protobuf:"varint,3,opt,name=include_primary,json=includePrimary,proto3" json:"include_primary,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"` + WaitPosition string `protobuf:"bytes,2,opt,name=wait_position,json=waitPosition,proto3" json:"wait_position,omitempty"` + IncludePrimary bool `protobuf:"varint,3,opt,name=include_primary,json=includePrimary,proto3" json:"include_primary,omitempty"` // Concurrency is the global concurrency across all shards in the keyspace // (so, at most this many tablets will be reloaded across the keyspace at any // given point). - Concurrency int32 `protobuf:"varint,4,opt,name=concurrency,proto3" json:"concurrency,omitempty"` + Concurrency int32 `protobuf:"varint,4,opt,name=concurrency,proto3" json:"concurrency,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ReloadSchemaKeyspaceRequest) Reset() { @@ -10994,11 +10850,10 @@ func (x *ReloadSchemaKeyspaceRequest) GetConcurrency() int32 { } type ReloadSchemaKeyspaceResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Events []*logutil.Event `protobuf:"bytes,1,rep,name=events,proto3" json:"events,omitempty"` unknownFields protoimpl.UnknownFields - - Events []*logutil.Event `protobuf:"bytes,1,rep,name=events,proto3" json:"events,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ReloadSchemaKeyspaceResponse) Reset() { @@ -11039,16 +10894,15 @@ func (x *ReloadSchemaKeyspaceResponse) GetEvents() []*logutil.Event { } type ReloadSchemaShardRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"` - Shard string `protobuf:"bytes,2,opt,name=shard,proto3" json:"shard,omitempty"` - WaitPosition string `protobuf:"bytes,3,opt,name=wait_position,json=waitPosition,proto3" json:"wait_position,omitempty"` - IncludePrimary bool `protobuf:"varint,4,opt,name=include_primary,json=includePrimary,proto3" json:"include_primary,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"` + Shard string `protobuf:"bytes,2,opt,name=shard,proto3" json:"shard,omitempty"` + WaitPosition string `protobuf:"bytes,3,opt,name=wait_position,json=waitPosition,proto3" json:"wait_position,omitempty"` + IncludePrimary bool `protobuf:"varint,4,opt,name=include_primary,json=includePrimary,proto3" json:"include_primary,omitempty"` // Concurrency is the maximum number of tablets to reload at one time. - Concurrency int32 `protobuf:"varint,5,opt,name=concurrency,proto3" json:"concurrency,omitempty"` + Concurrency int32 `protobuf:"varint,5,opt,name=concurrency,proto3" json:"concurrency,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ReloadSchemaShardRequest) Reset() { @@ -11117,11 +10971,10 @@ func (x *ReloadSchemaShardRequest) GetConcurrency() int32 { } type ReloadSchemaShardResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Events []*logutil.Event `protobuf:"bytes,2,rep,name=events,proto3" json:"events,omitempty"` unknownFields protoimpl.UnknownFields - - Events []*logutil.Event `protobuf:"bytes,2,rep,name=events,proto3" json:"events,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ReloadSchemaShardResponse) Reset() { @@ -11162,13 +11015,12 @@ func (x *ReloadSchemaShardResponse) GetEvents() []*logutil.Event { } type RemoveBackupRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"` + Shard string `protobuf:"bytes,2,opt,name=shard,proto3" json:"shard,omitempty"` + Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` unknownFields protoimpl.UnknownFields - - Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"` - Shard string `protobuf:"bytes,2,opt,name=shard,proto3" json:"shard,omitempty"` - Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` + sizeCache protoimpl.SizeCache } func (x *RemoveBackupRequest) Reset() { @@ -11223,9 +11075,9 @@ func (x *RemoveBackupRequest) GetName() string { } type RemoveBackupResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RemoveBackupResponse) Reset() { @@ -11259,19 +11111,18 @@ func (*RemoveBackupResponse) Descriptor() ([]byte, []int) { } type RemoveKeyspaceCellRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"` - Cell string `protobuf:"bytes,2,opt,name=cell,proto3" json:"cell,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"` + Cell string `protobuf:"bytes,2,opt,name=cell,proto3" json:"cell,omitempty"` // Force proceeds even if the cell's topology server cannot be reached. This // should only be set if a cell has been shut down entirely, and the global // topology data just needs to be updated. Force bool `protobuf:"varint,3,opt,name=force,proto3" json:"force,omitempty"` // Recursive also deletes all tablets in that cell belonging to the specified // keyspace. - Recursive bool `protobuf:"varint,4,opt,name=recursive,proto3" json:"recursive,omitempty"` + Recursive bool `protobuf:"varint,4,opt,name=recursive,proto3" json:"recursive,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RemoveKeyspaceCellRequest) Reset() { @@ -11333,9 +11184,9 @@ func (x *RemoveKeyspaceCellRequest) GetRecursive() bool { } type RemoveKeyspaceCellResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RemoveKeyspaceCellResponse) Reset() { @@ -11369,20 +11220,19 @@ func (*RemoveKeyspaceCellResponse) Descriptor() ([]byte, []int) { } type RemoveShardCellRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"` - ShardName string `protobuf:"bytes,2,opt,name=shard_name,json=shardName,proto3" json:"shard_name,omitempty"` - Cell string `protobuf:"bytes,3,opt,name=cell,proto3" json:"cell,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"` + ShardName string `protobuf:"bytes,2,opt,name=shard_name,json=shardName,proto3" json:"shard_name,omitempty"` + Cell string `protobuf:"bytes,3,opt,name=cell,proto3" json:"cell,omitempty"` // Force proceeds even if the cell's topology server cannot be reached. This // should only be set if a cell has been shut down entirely, and the global // topology data just needs to be updated. Force bool `protobuf:"varint,4,opt,name=force,proto3" json:"force,omitempty"` // Recursive also deletes all tablets in that cell belonging to the specified // keyspace and shard. - Recursive bool `protobuf:"varint,5,opt,name=recursive,proto3" json:"recursive,omitempty"` + Recursive bool `protobuf:"varint,5,opt,name=recursive,proto3" json:"recursive,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RemoveShardCellRequest) Reset() { @@ -11451,9 +11301,9 @@ func (x *RemoveShardCellRequest) GetRecursive() bool { } type RemoveShardCellResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RemoveShardCellResponse) Reset() { @@ -11487,13 +11337,12 @@ func (*RemoveShardCellResponse) Descriptor() ([]byte, []int) { } type ReparentTabletRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Tablet is the alias of the tablet that should be reparented under the // current shard primary. - Tablet *topodata.TabletAlias `protobuf:"bytes,1,opt,name=tablet,proto3" json:"tablet,omitempty"` + Tablet *topodata.TabletAlias `protobuf:"bytes,1,opt,name=tablet,proto3" json:"tablet,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ReparentTabletRequest) Reset() { @@ -11534,16 +11383,15 @@ func (x *ReparentTabletRequest) GetTablet() *topodata.TabletAlias { } type ReparentTabletResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Keyspace is the name of the keyspace the tablet was reparented in. Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"` // Shard is the name of the shard the tablet was reparented in. Shard string `protobuf:"bytes,2,opt,name=shard,proto3" json:"shard,omitempty"` // Primary is the alias of the tablet that the tablet was reparented under. - Primary *topodata.TabletAlias `protobuf:"bytes,3,opt,name=primary,proto3" json:"primary,omitempty"` + Primary *topodata.TabletAlias `protobuf:"bytes,3,opt,name=primary,proto3" json:"primary,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ReparentTabletResponse) Reset() { @@ -11598,10 +11446,7 @@ func (x *ReparentTabletResponse) GetPrimary() *topodata.TabletAlias { } type ReshardCreateRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Workflow string `protobuf:"bytes,1,opt,name=workflow,proto3" json:"workflow,omitempty"` Keyspace string `protobuf:"bytes,2,opt,name=keyspace,proto3" json:"keyspace,omitempty"` SourceShards []string `protobuf:"bytes,3,rep,name=source_shards,json=sourceShards,proto3" json:"source_shards,omitempty"` @@ -11621,6 +11466,8 @@ type ReshardCreateRequest struct { // Start the workflow after creating it. AutoStart bool `protobuf:"varint,12,opt,name=auto_start,json=autoStart,proto3" json:"auto_start,omitempty"` WorkflowOptions *WorkflowOptions `protobuf:"bytes,13,opt,name=workflow_options,json=workflowOptions,proto3" json:"workflow_options,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ReshardCreateRequest) Reset() { @@ -11745,11 +11592,8 @@ func (x *ReshardCreateRequest) GetWorkflowOptions() *WorkflowOptions { } type RestoreFromBackupRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - TabletAlias *topodata.TabletAlias `protobuf:"bytes,1,opt,name=tablet_alias,json=tabletAlias,proto3" json:"tablet_alias,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + TabletAlias *topodata.TabletAlias `protobuf:"bytes,1,opt,name=tablet_alias,json=tabletAlias,proto3" json:"tablet_alias,omitempty"` // BackupTime, if set, will use the backup taken most closely at or before // this time. If nil, the latest backup will be restored on the tablet. BackupTime *vttime.Time `protobuf:"bytes,2,opt,name=backup_time,json=backupTime,proto3" json:"backup_time,omitempty"` @@ -11764,6 +11608,8 @@ type RestoreFromBackupRequest struct { RestoreToTimestamp *vttime.Time `protobuf:"bytes,5,opt,name=restore_to_timestamp,json=restoreToTimestamp,proto3" json:"restore_to_timestamp,omitempty"` // AllowedBackupEngines, if present will filter out any backups taken with engines not included in the list AllowedBackupEngines []string `protobuf:"bytes,6,rep,name=allowed_backup_engines,json=allowedBackupEngines,proto3" json:"allowed_backup_engines,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RestoreFromBackupRequest) Reset() { @@ -11839,15 +11685,14 @@ func (x *RestoreFromBackupRequest) GetAllowedBackupEngines() []string { } type RestoreFromBackupResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // TabletAlias is the alias of the tablet doing the restore. - TabletAlias *topodata.TabletAlias `protobuf:"bytes,1,opt,name=tablet_alias,json=tabletAlias,proto3" json:"tablet_alias,omitempty"` - Keyspace string `protobuf:"bytes,2,opt,name=keyspace,proto3" json:"keyspace,omitempty"` - Shard string `protobuf:"bytes,3,opt,name=shard,proto3" json:"shard,omitempty"` - Event *logutil.Event `protobuf:"bytes,4,opt,name=event,proto3" json:"event,omitempty"` + TabletAlias *topodata.TabletAlias `protobuf:"bytes,1,opt,name=tablet_alias,json=tabletAlias,proto3" json:"tablet_alias,omitempty"` + Keyspace string `protobuf:"bytes,2,opt,name=keyspace,proto3" json:"keyspace,omitempty"` + Shard string `protobuf:"bytes,3,opt,name=shard,proto3" json:"shard,omitempty"` + Event *logutil.Event `protobuf:"bytes,4,opt,name=event,proto3" json:"event,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RestoreFromBackupResponse) Reset() { @@ -11909,12 +11754,11 @@ func (x *RestoreFromBackupResponse) GetEvent() *logutil.Event { } type RetrySchemaMigrationRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"` + Uuid string `protobuf:"bytes,2,opt,name=uuid,proto3" json:"uuid,omitempty"` unknownFields protoimpl.UnknownFields - - Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"` - Uuid string `protobuf:"bytes,2,opt,name=uuid,proto3" json:"uuid,omitempty"` + sizeCache protoimpl.SizeCache } func (x *RetrySchemaMigrationRequest) Reset() { @@ -11962,11 +11806,10 @@ func (x *RetrySchemaMigrationRequest) GetUuid() string { } type RetrySchemaMigrationResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - RowsAffectedByShard map[string]uint64 `protobuf:"bytes,1,rep,name=rows_affected_by_shard,json=rowsAffectedByShard,proto3" json:"rows_affected_by_shard,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` + state protoimpl.MessageState `protogen:"open.v1"` + RowsAffectedByShard map[string]uint64 `protobuf:"bytes,1,rep,name=rows_affected_by_shard,json=rowsAffectedByShard,proto3" json:"rows_affected_by_shard,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RetrySchemaMigrationResponse) Reset() { @@ -12007,11 +11850,10 @@ func (x *RetrySchemaMigrationResponse) GetRowsAffectedByShard() map[string]uint6 } type RunHealthCheckRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + TabletAlias *topodata.TabletAlias `protobuf:"bytes,1,opt,name=tablet_alias,json=tabletAlias,proto3" json:"tablet_alias,omitempty"` unknownFields protoimpl.UnknownFields - - TabletAlias *topodata.TabletAlias `protobuf:"bytes,1,opt,name=tablet_alias,json=tabletAlias,proto3" json:"tablet_alias,omitempty"` + sizeCache protoimpl.SizeCache } func (x *RunHealthCheckRequest) Reset() { @@ -12052,9 +11894,9 @@ func (x *RunHealthCheckRequest) GetTabletAlias() *topodata.TabletAlias { } type RunHealthCheckResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *RunHealthCheckResponse) Reset() { @@ -12088,12 +11930,11 @@ func (*RunHealthCheckResponse) Descriptor() ([]byte, []int) { } type SetKeyspaceDurabilityPolicyRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"` - DurabilityPolicy string `protobuf:"bytes,2,opt,name=durability_policy,json=durabilityPolicy,proto3" json:"durability_policy,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"` + DurabilityPolicy string `protobuf:"bytes,2,opt,name=durability_policy,json=durabilityPolicy,proto3" json:"durability_policy,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *SetKeyspaceDurabilityPolicyRequest) Reset() { @@ -12141,12 +11982,11 @@ func (x *SetKeyspaceDurabilityPolicyRequest) GetDurabilityPolicy() string { } type SetKeyspaceDurabilityPolicyResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Keyspace is the updated keyspace record. - Keyspace *topodata.Keyspace `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"` + Keyspace *topodata.Keyspace `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *SetKeyspaceDurabilityPolicyResponse) Reset() { @@ -12187,12 +12027,11 @@ func (x *SetKeyspaceDurabilityPolicyResponse) GetKeyspace() *topodata.Keyspace { } type SetKeyspaceShardingInfoRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"` + Force bool `protobuf:"varint,4,opt,name=force,proto3" json:"force,omitempty"` unknownFields protoimpl.UnknownFields - - Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"` - Force bool `protobuf:"varint,4,opt,name=force,proto3" json:"force,omitempty"` + sizeCache protoimpl.SizeCache } func (x *SetKeyspaceShardingInfoRequest) Reset() { @@ -12240,12 +12079,11 @@ func (x *SetKeyspaceShardingInfoRequest) GetForce() bool { } type SetKeyspaceShardingInfoResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Keyspace is the updated keyspace record. - Keyspace *topodata.Keyspace `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"` + Keyspace *topodata.Keyspace `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *SetKeyspaceShardingInfoResponse) Reset() { @@ -12286,13 +12124,12 @@ func (x *SetKeyspaceShardingInfoResponse) GetKeyspace() *topodata.Keyspace { } type SetShardIsPrimaryServingRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"` + Shard string `protobuf:"bytes,2,opt,name=shard,proto3" json:"shard,omitempty"` + IsServing bool `protobuf:"varint,3,opt,name=is_serving,json=isServing,proto3" json:"is_serving,omitempty"` unknownFields protoimpl.UnknownFields - - Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"` - Shard string `protobuf:"bytes,2,opt,name=shard,proto3" json:"shard,omitempty"` - IsServing bool `protobuf:"varint,3,opt,name=is_serving,json=isServing,proto3" json:"is_serving,omitempty"` + sizeCache protoimpl.SizeCache } func (x *SetShardIsPrimaryServingRequest) Reset() { @@ -12347,12 +12184,11 @@ func (x *SetShardIsPrimaryServingRequest) GetIsServing() bool { } type SetShardIsPrimaryServingResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Shard is the updated shard record. - Shard *topodata.Shard `protobuf:"bytes,1,opt,name=shard,proto3" json:"shard,omitempty"` + Shard *topodata.Shard `protobuf:"bytes,1,opt,name=shard,proto3" json:"shard,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *SetShardIsPrimaryServingResponse) Reset() { @@ -12393,14 +12229,11 @@ func (x *SetShardIsPrimaryServingResponse) GetShard() *topodata.Shard { } type SetShardTabletControlRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"` - Shard string `protobuf:"bytes,2,opt,name=shard,proto3" json:"shard,omitempty"` - TabletType topodata.TabletType `protobuf:"varint,3,opt,name=tablet_type,json=tabletType,proto3,enum=topodata.TabletType" json:"tablet_type,omitempty"` - Cells []string `protobuf:"bytes,4,rep,name=cells,proto3" json:"cells,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"` + Shard string `protobuf:"bytes,2,opt,name=shard,proto3" json:"shard,omitempty"` + TabletType topodata.TabletType `protobuf:"varint,3,opt,name=tablet_type,json=tabletType,proto3,enum=topodata.TabletType" json:"tablet_type,omitempty"` + Cells []string `protobuf:"bytes,4,rep,name=cells,proto3" json:"cells,omitempty"` // DeniedTables updates the list of denied tables the shard will serve for // the given tablet type. This is useful to fix tables that are being blocked // after a MoveTables operation. @@ -12417,7 +12250,9 @@ type SetShardTabletControlRequest struct { // precedence over DeniedTables and DisableQueryService fields, and is useful // to manually remove serving restrictions after a completed MoveTables // operation. - Remove bool `protobuf:"varint,7,opt,name=remove,proto3" json:"remove,omitempty"` + Remove bool `protobuf:"varint,7,opt,name=remove,proto3" json:"remove,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *SetShardTabletControlRequest) Reset() { @@ -12500,12 +12335,11 @@ func (x *SetShardTabletControlRequest) GetRemove() bool { } type SetShardTabletControlResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Shard is the updated shard record. - Shard *topodata.Shard `protobuf:"bytes,1,opt,name=shard,proto3" json:"shard,omitempty"` + Shard *topodata.Shard `protobuf:"bytes,1,opt,name=shard,proto3" json:"shard,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *SetShardTabletControlResponse) Reset() { @@ -12546,12 +12380,11 @@ func (x *SetShardTabletControlResponse) GetShard() *topodata.Shard { } type SetWritableRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + TabletAlias *topodata.TabletAlias `protobuf:"bytes,1,opt,name=tablet_alias,json=tabletAlias,proto3" json:"tablet_alias,omitempty"` + Writable bool `protobuf:"varint,2,opt,name=writable,proto3" json:"writable,omitempty"` unknownFields protoimpl.UnknownFields - - TabletAlias *topodata.TabletAlias `protobuf:"bytes,1,opt,name=tablet_alias,json=tabletAlias,proto3" json:"tablet_alias,omitempty"` - Writable bool `protobuf:"varint,2,opt,name=writable,proto3" json:"writable,omitempty"` + sizeCache protoimpl.SizeCache } func (x *SetWritableRequest) Reset() { @@ -12599,9 +12432,9 @@ func (x *SetWritableRequest) GetWritable() bool { } type SetWritableResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *SetWritableResponse) Reset() { @@ -12635,13 +12468,12 @@ func (*SetWritableResponse) Descriptor() ([]byte, []int) { } type ShardReplicationAddRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"` + Shard string `protobuf:"bytes,2,opt,name=shard,proto3" json:"shard,omitempty"` + TabletAlias *topodata.TabletAlias `protobuf:"bytes,3,opt,name=tablet_alias,json=tabletAlias,proto3" json:"tablet_alias,omitempty"` unknownFields protoimpl.UnknownFields - - Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"` - Shard string `protobuf:"bytes,2,opt,name=shard,proto3" json:"shard,omitempty"` - TabletAlias *topodata.TabletAlias `protobuf:"bytes,3,opt,name=tablet_alias,json=tabletAlias,proto3" json:"tablet_alias,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ShardReplicationAddRequest) Reset() { @@ -12696,9 +12528,9 @@ func (x *ShardReplicationAddRequest) GetTabletAlias() *topodata.TabletAlias { } type ShardReplicationAddResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ShardReplicationAddResponse) Reset() { @@ -12732,13 +12564,12 @@ func (*ShardReplicationAddResponse) Descriptor() ([]byte, []int) { } type ShardReplicationFixRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"` + Shard string `protobuf:"bytes,2,opt,name=shard,proto3" json:"shard,omitempty"` + Cell string `protobuf:"bytes,3,opt,name=cell,proto3" json:"cell,omitempty"` unknownFields protoimpl.UnknownFields - - Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"` - Shard string `protobuf:"bytes,2,opt,name=shard,proto3" json:"shard,omitempty"` - Cell string `protobuf:"bytes,3,opt,name=cell,proto3" json:"cell,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ShardReplicationFixRequest) Reset() { @@ -12790,17 +12621,16 @@ func (x *ShardReplicationFixRequest) GetCell() string { return x.Cell } return "" -} - -type ShardReplicationFixResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields +} +type ShardReplicationFixResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` // Error contains information about the error fixed by a // ShardReplicationFix RPC. If there were no errors to fix (i.e. all nodes // in the replication graph are valid), this field is nil. - Error *topodata.ShardReplicationError `protobuf:"bytes,1,opt,name=error,proto3" json:"error,omitempty"` + Error *topodata.ShardReplicationError `protobuf:"bytes,1,opt,name=error,proto3" json:"error,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ShardReplicationFixResponse) Reset() { @@ -12841,12 +12671,11 @@ func (x *ShardReplicationFixResponse) GetError() *topodata.ShardReplicationError } type ShardReplicationPositionsRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"` + Shard string `protobuf:"bytes,2,opt,name=shard,proto3" json:"shard,omitempty"` unknownFields protoimpl.UnknownFields - - Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"` - Shard string `protobuf:"bytes,2,opt,name=shard,proto3" json:"shard,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ShardReplicationPositionsRequest) Reset() { @@ -12894,16 +12723,15 @@ func (x *ShardReplicationPositionsRequest) GetShard() string { } type ShardReplicationPositionsResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // ReplicationStatuses is a mapping of tablet alias string to replication // status for that tablet. - ReplicationStatuses map[string]*replicationdata.Status `protobuf:"bytes,1,rep,name=replication_statuses,json=replicationStatuses,proto3" json:"replication_statuses,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + ReplicationStatuses map[string]*replicationdata.Status `protobuf:"bytes,1,rep,name=replication_statuses,json=replicationStatuses,proto3" json:"replication_statuses,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` // TabletMap is the set of tablets whose replication statuses were queried, // keyed by tablet alias. - TabletMap map[string]*topodata.Tablet `protobuf:"bytes,2,rep,name=tablet_map,json=tabletMap,proto3" json:"tablet_map,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + TabletMap map[string]*topodata.Tablet `protobuf:"bytes,2,rep,name=tablet_map,json=tabletMap,proto3" json:"tablet_map,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ShardReplicationPositionsResponse) Reset() { @@ -12951,13 +12779,12 @@ func (x *ShardReplicationPositionsResponse) GetTabletMap() map[string]*topodata. } type ShardReplicationRemoveRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"` + Shard string `protobuf:"bytes,2,opt,name=shard,proto3" json:"shard,omitempty"` + TabletAlias *topodata.TabletAlias `protobuf:"bytes,3,opt,name=tablet_alias,json=tabletAlias,proto3" json:"tablet_alias,omitempty"` unknownFields protoimpl.UnknownFields - - Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"` - Shard string `protobuf:"bytes,2,opt,name=shard,proto3" json:"shard,omitempty"` - TabletAlias *topodata.TabletAlias `protobuf:"bytes,3,opt,name=tablet_alias,json=tabletAlias,proto3" json:"tablet_alias,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ShardReplicationRemoveRequest) Reset() { @@ -13012,9 +12839,9 @@ func (x *ShardReplicationRemoveRequest) GetTabletAlias() *topodata.TabletAlias { } type ShardReplicationRemoveResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ShardReplicationRemoveResponse) Reset() { @@ -13048,12 +12875,11 @@ func (*ShardReplicationRemoveResponse) Descriptor() ([]byte, []int) { } type SleepTabletRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + TabletAlias *topodata.TabletAlias `protobuf:"bytes,1,opt,name=tablet_alias,json=tabletAlias,proto3" json:"tablet_alias,omitempty"` + Duration *vttime.Duration `protobuf:"bytes,2,opt,name=duration,proto3" json:"duration,omitempty"` unknownFields protoimpl.UnknownFields - - TabletAlias *topodata.TabletAlias `protobuf:"bytes,1,opt,name=tablet_alias,json=tabletAlias,proto3" json:"tablet_alias,omitempty"` - Duration *vttime.Duration `protobuf:"bytes,2,opt,name=duration,proto3" json:"duration,omitempty"` + sizeCache protoimpl.SizeCache } func (x *SleepTabletRequest) Reset() { @@ -13101,9 +12927,9 @@ func (x *SleepTabletRequest) GetDuration() *vttime.Duration { } type SleepTabletResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *SleepTabletResponse) Reset() { @@ -13137,21 +12963,20 @@ func (*SleepTabletResponse) Descriptor() ([]byte, []int) { } type SourceShardAddRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"` - Shard string `protobuf:"bytes,2,opt,name=shard,proto3" json:"shard,omitempty"` - Uid int32 `protobuf:"varint,3,opt,name=uid,proto3" json:"uid,omitempty"` - SourceKeyspace string `protobuf:"bytes,4,opt,name=source_keyspace,json=sourceKeyspace,proto3" json:"source_keyspace,omitempty"` - SourceShard string `protobuf:"bytes,5,opt,name=source_shard,json=sourceShard,proto3" json:"source_shard,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"` + Shard string `protobuf:"bytes,2,opt,name=shard,proto3" json:"shard,omitempty"` + Uid int32 `protobuf:"varint,3,opt,name=uid,proto3" json:"uid,omitempty"` + SourceKeyspace string `protobuf:"bytes,4,opt,name=source_keyspace,json=sourceKeyspace,proto3" json:"source_keyspace,omitempty"` + SourceShard string `protobuf:"bytes,5,opt,name=source_shard,json=sourceShard,proto3" json:"source_shard,omitempty"` // KeyRange identifies the key range to use for the SourceShard. This field is // optional. KeyRange *topodata.KeyRange `protobuf:"bytes,6,opt,name=key_range,json=keyRange,proto3" json:"key_range,omitempty"` // Tables is a list of tables replicate (for MoveTables). Each "table" can be // either an exact match or a regular expression of the form "/regexp/". - Tables []string `protobuf:"bytes,7,rep,name=tables,proto3" json:"tables,omitempty"` + Tables []string `protobuf:"bytes,7,rep,name=tables,proto3" json:"tables,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *SourceShardAddRequest) Reset() { @@ -13234,12 +13059,11 @@ func (x *SourceShardAddRequest) GetTables() []string { } type SourceShardAddResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Shard is the updated shard record. - Shard *topodata.Shard `protobuf:"bytes,1,opt,name=shard,proto3" json:"shard,omitempty"` + Shard *topodata.Shard `protobuf:"bytes,1,opt,name=shard,proto3" json:"shard,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *SourceShardAddResponse) Reset() { @@ -13280,13 +13104,12 @@ func (x *SourceShardAddResponse) GetShard() *topodata.Shard { } type SourceShardDeleteRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"` + Shard string `protobuf:"bytes,2,opt,name=shard,proto3" json:"shard,omitempty"` + Uid int32 `protobuf:"varint,3,opt,name=uid,proto3" json:"uid,omitempty"` unknownFields protoimpl.UnknownFields - - Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"` - Shard string `protobuf:"bytes,2,opt,name=shard,proto3" json:"shard,omitempty"` - Uid int32 `protobuf:"varint,3,opt,name=uid,proto3" json:"uid,omitempty"` + sizeCache protoimpl.SizeCache } func (x *SourceShardDeleteRequest) Reset() { @@ -13341,12 +13164,11 @@ func (x *SourceShardDeleteRequest) GetUid() int32 { } type SourceShardDeleteResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Shard is the updated shard record. - Shard *topodata.Shard `protobuf:"bytes,1,opt,name=shard,proto3" json:"shard,omitempty"` + Shard *topodata.Shard `protobuf:"bytes,1,opt,name=shard,proto3" json:"shard,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *SourceShardDeleteResponse) Reset() { @@ -13387,11 +13209,10 @@ func (x *SourceShardDeleteResponse) GetShard() *topodata.Shard { } type StartReplicationRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + TabletAlias *topodata.TabletAlias `protobuf:"bytes,1,opt,name=tablet_alias,json=tabletAlias,proto3" json:"tablet_alias,omitempty"` unknownFields protoimpl.UnknownFields - - TabletAlias *topodata.TabletAlias `protobuf:"bytes,1,opt,name=tablet_alias,json=tabletAlias,proto3" json:"tablet_alias,omitempty"` + sizeCache protoimpl.SizeCache } func (x *StartReplicationRequest) Reset() { @@ -13432,9 +13253,9 @@ func (x *StartReplicationRequest) GetTabletAlias() *topodata.TabletAlias { } type StartReplicationResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *StartReplicationResponse) Reset() { @@ -13468,11 +13289,10 @@ func (*StartReplicationResponse) Descriptor() ([]byte, []int) { } type StopReplicationRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + TabletAlias *topodata.TabletAlias `protobuf:"bytes,1,opt,name=tablet_alias,json=tabletAlias,proto3" json:"tablet_alias,omitempty"` unknownFields protoimpl.UnknownFields - - TabletAlias *topodata.TabletAlias `protobuf:"bytes,1,opt,name=tablet_alias,json=tabletAlias,proto3" json:"tablet_alias,omitempty"` + sizeCache protoimpl.SizeCache } func (x *StopReplicationRequest) Reset() { @@ -13513,9 +13333,9 @@ func (x *StopReplicationRequest) GetTabletAlias() *topodata.TabletAlias { } type StopReplicationResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *StopReplicationResponse) Reset() { @@ -13549,13 +13369,12 @@ func (*StopReplicationResponse) Descriptor() ([]byte, []int) { } type TabletExternallyReparentedRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Tablet is the alias of the tablet that was promoted externally and should // be updated to the shard primary in the topo. - Tablet *topodata.TabletAlias `protobuf:"bytes,1,opt,name=tablet,proto3" json:"tablet,omitempty"` + Tablet *topodata.TabletAlias `protobuf:"bytes,1,opt,name=tablet,proto3" json:"tablet,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *TabletExternallyReparentedRequest) Reset() { @@ -13596,14 +13415,13 @@ func (x *TabletExternallyReparentedRequest) GetTablet() *topodata.TabletAlias { } type TabletExternallyReparentedResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"` + Shard string `protobuf:"bytes,2,opt,name=shard,proto3" json:"shard,omitempty"` + NewPrimary *topodata.TabletAlias `protobuf:"bytes,3,opt,name=new_primary,json=newPrimary,proto3" json:"new_primary,omitempty"` + OldPrimary *topodata.TabletAlias `protobuf:"bytes,4,opt,name=old_primary,json=oldPrimary,proto3" json:"old_primary,omitempty"` unknownFields protoimpl.UnknownFields - - Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"` - Shard string `protobuf:"bytes,2,opt,name=shard,proto3" json:"shard,omitempty"` - NewPrimary *topodata.TabletAlias `protobuf:"bytes,3,opt,name=new_primary,json=newPrimary,proto3" json:"new_primary,omitempty"` - OldPrimary *topodata.TabletAlias `protobuf:"bytes,4,opt,name=old_primary,json=oldPrimary,proto3" json:"old_primary,omitempty"` + sizeCache protoimpl.SizeCache } func (x *TabletExternallyReparentedResponse) Reset() { @@ -13665,12 +13483,11 @@ func (x *TabletExternallyReparentedResponse) GetOldPrimary() *topodata.TabletAli } type UpdateCellInfoRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + CellInfo *topodata.CellInfo `protobuf:"bytes,2,opt,name=cell_info,json=cellInfo,proto3" json:"cell_info,omitempty"` unknownFields protoimpl.UnknownFields - - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - CellInfo *topodata.CellInfo `protobuf:"bytes,2,opt,name=cell_info,json=cellInfo,proto3" json:"cell_info,omitempty"` + sizeCache protoimpl.SizeCache } func (x *UpdateCellInfoRequest) Reset() { @@ -13718,12 +13535,11 @@ func (x *UpdateCellInfoRequest) GetCellInfo() *topodata.CellInfo { } type UpdateCellInfoResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + CellInfo *topodata.CellInfo `protobuf:"bytes,2,opt,name=cell_info,json=cellInfo,proto3" json:"cell_info,omitempty"` unknownFields protoimpl.UnknownFields - - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - CellInfo *topodata.CellInfo `protobuf:"bytes,2,opt,name=cell_info,json=cellInfo,proto3" json:"cell_info,omitempty"` + sizeCache protoimpl.SizeCache } func (x *UpdateCellInfoResponse) Reset() { @@ -13771,12 +13587,11 @@ func (x *UpdateCellInfoResponse) GetCellInfo() *topodata.CellInfo { } type UpdateCellsAliasRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + CellsAlias *topodata.CellsAlias `protobuf:"bytes,2,opt,name=cells_alias,json=cellsAlias,proto3" json:"cells_alias,omitempty"` unknownFields protoimpl.UnknownFields - - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - CellsAlias *topodata.CellsAlias `protobuf:"bytes,2,opt,name=cells_alias,json=cellsAlias,proto3" json:"cells_alias,omitempty"` + sizeCache protoimpl.SizeCache } func (x *UpdateCellsAliasRequest) Reset() { @@ -13824,12 +13639,11 @@ func (x *UpdateCellsAliasRequest) GetCellsAlias() *topodata.CellsAlias { } type UpdateCellsAliasResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + CellsAlias *topodata.CellsAlias `protobuf:"bytes,2,opt,name=cells_alias,json=cellsAlias,proto3" json:"cells_alias,omitempty"` unknownFields protoimpl.UnknownFields - - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - CellsAlias *topodata.CellsAlias `protobuf:"bytes,2,opt,name=cells_alias,json=cellsAlias,proto3" json:"cells_alias,omitempty"` + sizeCache protoimpl.SizeCache } func (x *UpdateCellsAliasResponse) Reset() { @@ -13877,11 +13691,10 @@ func (x *UpdateCellsAliasResponse) GetCellsAlias() *topodata.CellsAlias { } type ValidateRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + PingTablets bool `protobuf:"varint,1,opt,name=ping_tablets,json=pingTablets,proto3" json:"ping_tablets,omitempty"` unknownFields protoimpl.UnknownFields - - PingTablets bool `protobuf:"varint,1,opt,name=ping_tablets,json=pingTablets,proto3" json:"ping_tablets,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ValidateRequest) Reset() { @@ -13922,12 +13735,11 @@ func (x *ValidateRequest) GetPingTablets() bool { } type ValidateResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Results []string `protobuf:"bytes,1,rep,name=results,proto3" json:"results,omitempty"` - ResultsByKeyspace map[string]*ValidateKeyspaceResponse `protobuf:"bytes,2,rep,name=results_by_keyspace,json=resultsByKeyspace,proto3" json:"results_by_keyspace,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + ResultsByKeyspace map[string]*ValidateKeyspaceResponse `protobuf:"bytes,2,rep,name=results_by_keyspace,json=resultsByKeyspace,proto3" json:"results_by_keyspace,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ValidateResponse) Reset() { @@ -13975,12 +13787,11 @@ func (x *ValidateResponse) GetResultsByKeyspace() map[string]*ValidateKeyspaceRe } type ValidateKeyspaceRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"` + PingTablets bool `protobuf:"varint,2,opt,name=ping_tablets,json=pingTablets,proto3" json:"ping_tablets,omitempty"` unknownFields protoimpl.UnknownFields - - Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"` - PingTablets bool `protobuf:"varint,2,opt,name=ping_tablets,json=pingTablets,proto3" json:"ping_tablets,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ValidateKeyspaceRequest) Reset() { @@ -14028,12 +13839,11 @@ func (x *ValidateKeyspaceRequest) GetPingTablets() bool { } type ValidateKeyspaceResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Results []string `protobuf:"bytes,1,rep,name=results,proto3" json:"results,omitempty"` - ResultsByShard map[string]*ValidateShardResponse `protobuf:"bytes,2,rep,name=results_by_shard,json=resultsByShard,proto3" json:"results_by_shard,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + ResultsByShard map[string]*ValidateShardResponse `protobuf:"bytes,2,rep,name=results_by_shard,json=resultsByShard,proto3" json:"results_by_shard,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ValidateKeyspaceResponse) Reset() { @@ -14081,14 +13891,13 @@ func (x *ValidateKeyspaceResponse) GetResultsByShard() map[string]*ValidateShard } type ValidatePermissionsKeyspaceRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"` // If you only want to validate a subset of the shards in the // keyspace, then specify a list of shard names. - Shards []string `protobuf:"bytes,2,rep,name=shards,proto3" json:"shards,omitempty"` + Shards []string `protobuf:"bytes,2,rep,name=shards,proto3" json:"shards,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ValidatePermissionsKeyspaceRequest) Reset() { @@ -14136,9 +13945,9 @@ func (x *ValidatePermissionsKeyspaceRequest) GetShards() []string { } type ValidatePermissionsKeyspaceResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ValidatePermissionsKeyspaceResponse) Reset() { @@ -14172,18 +13981,17 @@ func (*ValidatePermissionsKeyspaceResponse) Descriptor() ([]byte, []int) { } type ValidateSchemaKeyspaceRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"` - ExcludeTables []string `protobuf:"bytes,2,rep,name=exclude_tables,json=excludeTables,proto3" json:"exclude_tables,omitempty"` - IncludeViews bool `protobuf:"varint,3,opt,name=include_views,json=includeViews,proto3" json:"include_views,omitempty"` - SkipNoPrimary bool `protobuf:"varint,4,opt,name=skip_no_primary,json=skipNoPrimary,proto3" json:"skip_no_primary,omitempty"` - IncludeVschema bool `protobuf:"varint,5,opt,name=include_vschema,json=includeVschema,proto3" json:"include_vschema,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"` + ExcludeTables []string `protobuf:"bytes,2,rep,name=exclude_tables,json=excludeTables,proto3" json:"exclude_tables,omitempty"` + IncludeViews bool `protobuf:"varint,3,opt,name=include_views,json=includeViews,proto3" json:"include_views,omitempty"` + SkipNoPrimary bool `protobuf:"varint,4,opt,name=skip_no_primary,json=skipNoPrimary,proto3" json:"skip_no_primary,omitempty"` + IncludeVschema bool `protobuf:"varint,5,opt,name=include_vschema,json=includeVschema,proto3" json:"include_vschema,omitempty"` // If you only want to validate a subset of the shards in the // keyspace, then specify a list of shard names. - Shards []string `protobuf:"bytes,6,rep,name=shards,proto3" json:"shards,omitempty"` + Shards []string `protobuf:"bytes,6,rep,name=shards,proto3" json:"shards,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ValidateSchemaKeyspaceRequest) Reset() { @@ -14259,12 +14067,11 @@ func (x *ValidateSchemaKeyspaceRequest) GetShards() []string { } type ValidateSchemaKeyspaceResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Results []string `protobuf:"bytes,1,rep,name=results,proto3" json:"results,omitempty"` - ResultsByShard map[string]*ValidateShardResponse `protobuf:"bytes,2,rep,name=results_by_shard,json=resultsByShard,proto3" json:"results_by_shard,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + ResultsByShard map[string]*ValidateShardResponse `protobuf:"bytes,2,rep,name=results_by_shard,json=resultsByShard,proto3" json:"results_by_shard,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ValidateSchemaKeyspaceResponse) Reset() { @@ -14312,13 +14119,12 @@ func (x *ValidateSchemaKeyspaceResponse) GetResultsByShard() map[string]*Validat } type ValidateShardRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"` + Shard string `protobuf:"bytes,2,opt,name=shard,proto3" json:"shard,omitempty"` + PingTablets bool `protobuf:"varint,3,opt,name=ping_tablets,json=pingTablets,proto3" json:"ping_tablets,omitempty"` unknownFields protoimpl.UnknownFields - - Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"` - Shard string `protobuf:"bytes,2,opt,name=shard,proto3" json:"shard,omitempty"` - PingTablets bool `protobuf:"varint,3,opt,name=ping_tablets,json=pingTablets,proto3" json:"ping_tablets,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ValidateShardRequest) Reset() { @@ -14373,11 +14179,10 @@ func (x *ValidateShardRequest) GetPingTablets() bool { } type ValidateShardResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Results []string `protobuf:"bytes,1,rep,name=results,proto3" json:"results,omitempty"` unknownFields protoimpl.UnknownFields - - Results []string `protobuf:"bytes,1,rep,name=results,proto3" json:"results,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ValidateShardResponse) Reset() { @@ -14418,11 +14223,10 @@ func (x *ValidateShardResponse) GetResults() []string { } type ValidateVersionKeyspaceRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"` unknownFields protoimpl.UnknownFields - - Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ValidateVersionKeyspaceRequest) Reset() { @@ -14463,12 +14267,11 @@ func (x *ValidateVersionKeyspaceRequest) GetKeyspace() string { } type ValidateVersionKeyspaceResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Results []string `protobuf:"bytes,1,rep,name=results,proto3" json:"results,omitempty"` - ResultsByShard map[string]*ValidateShardResponse `protobuf:"bytes,2,rep,name=results_by_shard,json=resultsByShard,proto3" json:"results_by_shard,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + ResultsByShard map[string]*ValidateShardResponse `protobuf:"bytes,2,rep,name=results_by_shard,json=resultsByShard,proto3" json:"results_by_shard,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ValidateVersionKeyspaceResponse) Reset() { @@ -14516,12 +14319,11 @@ func (x *ValidateVersionKeyspaceResponse) GetResultsByShard() map[string]*Valida } type ValidateVersionShardRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"` + Shard string `protobuf:"bytes,2,opt,name=shard,proto3" json:"shard,omitempty"` unknownFields protoimpl.UnknownFields - - Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"` - Shard string `protobuf:"bytes,2,opt,name=shard,proto3" json:"shard,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ValidateVersionShardRequest) Reset() { @@ -14569,11 +14371,10 @@ func (x *ValidateVersionShardRequest) GetShard() string { } type ValidateVersionShardResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Results []string `protobuf:"bytes,1,rep,name=results,proto3" json:"results,omitempty"` unknownFields protoimpl.UnknownFields - - Results []string `protobuf:"bytes,1,rep,name=results,proto3" json:"results,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ValidateVersionShardResponse) Reset() { @@ -14614,14 +14415,13 @@ func (x *ValidateVersionShardResponse) GetResults() []string { } type ValidateVSchemaRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"` + Shards []string `protobuf:"bytes,2,rep,name=shards,proto3" json:"shards,omitempty"` + ExcludeTables []string `protobuf:"bytes,3,rep,name=exclude_tables,json=excludeTables,proto3" json:"exclude_tables,omitempty"` + IncludeViews bool `protobuf:"varint,4,opt,name=include_views,json=includeViews,proto3" json:"include_views,omitempty"` unknownFields protoimpl.UnknownFields - - Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"` - Shards []string `protobuf:"bytes,2,rep,name=shards,proto3" json:"shards,omitempty"` - ExcludeTables []string `protobuf:"bytes,3,rep,name=exclude_tables,json=excludeTables,proto3" json:"exclude_tables,omitempty"` - IncludeViews bool `protobuf:"varint,4,opt,name=include_views,json=includeViews,proto3" json:"include_views,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ValidateVSchemaRequest) Reset() { @@ -14683,12 +14483,11 @@ func (x *ValidateVSchemaRequest) GetIncludeViews() bool { } type ValidateVSchemaResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Results []string `protobuf:"bytes,1,rep,name=results,proto3" json:"results,omitempty"` - ResultsByShard map[string]*ValidateShardResponse `protobuf:"bytes,2,rep,name=results_by_shard,json=resultsByShard,proto3" json:"results_by_shard,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + ResultsByShard map[string]*ValidateShardResponse `protobuf:"bytes,2,rep,name=results_by_shard,json=resultsByShard,proto3" json:"results_by_shard,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ValidateVSchemaResponse) Reset() { @@ -14736,10 +14535,7 @@ func (x *ValidateVSchemaResponse) GetResultsByShard() map[string]*ValidateShardR } type VDiffCreateRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The name of the workflow that we're diffing tables for. Workflow string `protobuf:"bytes,1,opt,name=workflow,proto3" json:"workflow,omitempty"` // The keyspace where the vreplication workflow is running. @@ -14819,7 +14615,9 @@ type VDiffCreateRequest struct { RowDiffColumnTruncateAt int64 `protobuf:"varint,21,opt,name=row_diff_column_truncate_at,json=rowDiffColumnTruncateAt,proto3" json:"row_diff_column_truncate_at,omitempty"` // Auto start the vdiff after creating it. // The default is true if no value is specified. - AutoStart *bool `protobuf:"varint,22,opt,name=auto_start,json=autoStart,proto3,oneof" json:"auto_start,omitempty"` + AutoStart *bool `protobuf:"varint,22,opt,name=auto_start,json=autoStart,proto3,oneof" json:"auto_start,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *VDiffCreateRequest) Reset() { @@ -15007,13 +14805,12 @@ func (x *VDiffCreateRequest) GetAutoStart() bool { } type VDiffCreateResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // Intentionally upper case to maintain compatibility with // vtctlclient and other VDiff client command output. - UUID string `protobuf:"bytes,1,opt,name=UUID,proto3" json:"UUID,omitempty"` + UUID string `protobuf:"bytes,1,opt,name=UUID,proto3" json:"UUID,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *VDiffCreateResponse) Reset() { @@ -15054,14 +14851,13 @@ func (x *VDiffCreateResponse) GetUUID() string { } type VDiffDeleteRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Workflow string `protobuf:"bytes,1,opt,name=workflow,proto3" json:"workflow,omitempty"` - TargetKeyspace string `protobuf:"bytes,2,opt,name=target_keyspace,json=targetKeyspace,proto3" json:"target_keyspace,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Workflow string `protobuf:"bytes,1,opt,name=workflow,proto3" json:"workflow,omitempty"` + TargetKeyspace string `protobuf:"bytes,2,opt,name=target_keyspace,json=targetKeyspace,proto3" json:"target_keyspace,omitempty"` // This will be 'all' or a UUID. - Arg string `protobuf:"bytes,3,opt,name=arg,proto3" json:"arg,omitempty"` + Arg string `protobuf:"bytes,3,opt,name=arg,proto3" json:"arg,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *VDiffDeleteRequest) Reset() { @@ -15116,9 +14912,9 @@ func (x *VDiffDeleteRequest) GetArg() string { } type VDiffDeleteResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *VDiffDeleteResponse) Reset() { @@ -15152,14 +14948,13 @@ func (*VDiffDeleteResponse) Descriptor() ([]byte, []int) { } type VDiffResumeRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Workflow string `protobuf:"bytes,1,opt,name=workflow,proto3" json:"workflow,omitempty"` - TargetKeyspace string `protobuf:"bytes,2,opt,name=target_keyspace,json=targetKeyspace,proto3" json:"target_keyspace,omitempty"` - Uuid string `protobuf:"bytes,3,opt,name=uuid,proto3" json:"uuid,omitempty"` - TargetShards []string `protobuf:"bytes,4,rep,name=target_shards,json=targetShards,proto3" json:"target_shards,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Workflow string `protobuf:"bytes,1,opt,name=workflow,proto3" json:"workflow,omitempty"` + TargetKeyspace string `protobuf:"bytes,2,opt,name=target_keyspace,json=targetKeyspace,proto3" json:"target_keyspace,omitempty"` + Uuid string `protobuf:"bytes,3,opt,name=uuid,proto3" json:"uuid,omitempty"` + TargetShards []string `protobuf:"bytes,4,rep,name=target_shards,json=targetShards,proto3" json:"target_shards,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *VDiffResumeRequest) Reset() { @@ -15221,9 +15016,9 @@ func (x *VDiffResumeRequest) GetTargetShards() []string { } type VDiffResumeResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *VDiffResumeResponse) Reset() { @@ -15257,14 +15052,13 @@ func (*VDiffResumeResponse) Descriptor() ([]byte, []int) { } type VDiffShowRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Workflow string `protobuf:"bytes,1,opt,name=workflow,proto3" json:"workflow,omitempty"` - TargetKeyspace string `protobuf:"bytes,2,opt,name=target_keyspace,json=targetKeyspace,proto3" json:"target_keyspace,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Workflow string `protobuf:"bytes,1,opt,name=workflow,proto3" json:"workflow,omitempty"` + TargetKeyspace string `protobuf:"bytes,2,opt,name=target_keyspace,json=targetKeyspace,proto3" json:"target_keyspace,omitempty"` // This will be 'all', 'last', or a UUID. - Arg string `protobuf:"bytes,3,opt,name=arg,proto3" json:"arg,omitempty"` + Arg string `protobuf:"bytes,3,opt,name=arg,proto3" json:"arg,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *VDiffShowRequest) Reset() { @@ -15319,12 +15113,11 @@ func (x *VDiffShowRequest) GetArg() string { } type VDiffShowResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The key is keyspace/shard. - TabletResponses map[string]*tabletmanagerdata.VDiffResponse `protobuf:"bytes,1,rep,name=tablet_responses,json=tabletResponses,proto3" json:"tablet_responses,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + TabletResponses map[string]*tabletmanagerdata.VDiffResponse `protobuf:"bytes,1,rep,name=tablet_responses,json=tabletResponses,proto3" json:"tablet_responses,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *VDiffShowResponse) Reset() { @@ -15365,14 +15158,13 @@ func (x *VDiffShowResponse) GetTabletResponses() map[string]*tabletmanagerdata.V } type VDiffStopRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Workflow string `protobuf:"bytes,1,opt,name=workflow,proto3" json:"workflow,omitempty"` - TargetKeyspace string `protobuf:"bytes,2,opt,name=target_keyspace,json=targetKeyspace,proto3" json:"target_keyspace,omitempty"` - Uuid string `protobuf:"bytes,3,opt,name=uuid,proto3" json:"uuid,omitempty"` - TargetShards []string `protobuf:"bytes,4,rep,name=target_shards,json=targetShards,proto3" json:"target_shards,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Workflow string `protobuf:"bytes,1,opt,name=workflow,proto3" json:"workflow,omitempty"` + TargetKeyspace string `protobuf:"bytes,2,opt,name=target_keyspace,json=targetKeyspace,proto3" json:"target_keyspace,omitempty"` + Uuid string `protobuf:"bytes,3,opt,name=uuid,proto3" json:"uuid,omitempty"` + TargetShards []string `protobuf:"bytes,4,rep,name=target_shards,json=targetShards,proto3" json:"target_shards,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *VDiffStopRequest) Reset() { @@ -15434,9 +15226,9 @@ func (x *VDiffStopRequest) GetTargetShards() []string { } type VDiffStopResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *VDiffStopResponse) Reset() { @@ -15470,19 +15262,18 @@ func (*VDiffStopResponse) Descriptor() ([]byte, []int) { } type WorkflowDeleteRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"` - Workflow string `protobuf:"bytes,2,opt,name=workflow,proto3" json:"workflow,omitempty"` - KeepData bool `protobuf:"varint,3,opt,name=keep_data,json=keepData,proto3" json:"keep_data,omitempty"` - KeepRoutingRules bool `protobuf:"varint,4,opt,name=keep_routing_rules,json=keepRoutingRules,proto3" json:"keep_routing_rules,omitempty"` - Shards []string `protobuf:"bytes,5,rep,name=shards,proto3" json:"shards,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"` + Workflow string `protobuf:"bytes,2,opt,name=workflow,proto3" json:"workflow,omitempty"` + KeepData bool `protobuf:"varint,3,opt,name=keep_data,json=keepData,proto3" json:"keep_data,omitempty"` + KeepRoutingRules bool `protobuf:"varint,4,opt,name=keep_routing_rules,json=keepRoutingRules,proto3" json:"keep_routing_rules,omitempty"` + Shards []string `protobuf:"bytes,5,rep,name=shards,proto3" json:"shards,omitempty"` // The max records to delete from the moved tables when cleaning // up the migrated data. This is only used with multi-tenant // MoveTables migrations. DeleteBatchSize int64 `protobuf:"varint,6,opt,name=delete_batch_size,json=deleteBatchSize,proto3" json:"delete_batch_size,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *WorkflowDeleteRequest) Reset() { @@ -15558,12 +15349,11 @@ func (x *WorkflowDeleteRequest) GetDeleteBatchSize() int64 { } type WorkflowDeleteResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Summary string `protobuf:"bytes,1,opt,name=summary,proto3" json:"summary,omitempty"` + Details []*WorkflowDeleteResponse_TabletInfo `protobuf:"bytes,2,rep,name=details,proto3" json:"details,omitempty"` unknownFields protoimpl.UnknownFields - - Summary string `protobuf:"bytes,1,opt,name=summary,proto3" json:"summary,omitempty"` - Details []*WorkflowDeleteResponse_TabletInfo `protobuf:"bytes,2,rep,name=details,proto3" json:"details,omitempty"` + sizeCache protoimpl.SizeCache } func (x *WorkflowDeleteResponse) Reset() { @@ -15611,13 +15401,12 @@ func (x *WorkflowDeleteResponse) GetDetails() []*WorkflowDeleteResponse_TabletIn } type WorkflowStatusRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"` + Workflow string `protobuf:"bytes,2,opt,name=workflow,proto3" json:"workflow,omitempty"` + Shards []string `protobuf:"bytes,3,rep,name=shards,proto3" json:"shards,omitempty"` unknownFields protoimpl.UnknownFields - - Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"` - Workflow string `protobuf:"bytes,2,opt,name=workflow,proto3" json:"workflow,omitempty"` - Shards []string `protobuf:"bytes,3,rep,name=shards,proto3" json:"shards,omitempty"` + sizeCache protoimpl.SizeCache } func (x *WorkflowStatusRequest) Reset() { @@ -15672,14 +15461,13 @@ func (x *WorkflowStatusRequest) GetShards() []string { } type WorkflowStatusResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // The key is keyspace/shard. - TableCopyState map[string]*WorkflowStatusResponse_TableCopyState `protobuf:"bytes,1,rep,name=table_copy_state,json=tableCopyState,proto3" json:"table_copy_state,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - ShardStreams map[string]*WorkflowStatusResponse_ShardStreams `protobuf:"bytes,2,rep,name=shard_streams,json=shardStreams,proto3" json:"shard_streams,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + TableCopyState map[string]*WorkflowStatusResponse_TableCopyState `protobuf:"bytes,1,rep,name=table_copy_state,json=tableCopyState,proto3" json:"table_copy_state,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + ShardStreams map[string]*WorkflowStatusResponse_ShardStreams `protobuf:"bytes,2,rep,name=shard_streams,json=shardStreams,proto3" json:"shard_streams,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` TrafficState string `protobuf:"bytes,3,opt,name=traffic_state,json=trafficState,proto3" json:"traffic_state,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *WorkflowStatusResponse) Reset() { @@ -15734,22 +15522,21 @@ func (x *WorkflowStatusResponse) GetTrafficState() string { } type WorkflowSwitchTrafficRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"` - Workflow string `protobuf:"bytes,2,opt,name=workflow,proto3" json:"workflow,omitempty"` - Cells []string `protobuf:"bytes,3,rep,name=cells,proto3" json:"cells,omitempty"` - TabletTypes []topodata.TabletType `protobuf:"varint,4,rep,packed,name=tablet_types,json=tabletTypes,proto3,enum=topodata.TabletType" json:"tablet_types,omitempty"` - MaxReplicationLagAllowed *vttime.Duration `protobuf:"bytes,5,opt,name=max_replication_lag_allowed,json=maxReplicationLagAllowed,proto3" json:"max_replication_lag_allowed,omitempty"` - EnableReverseReplication bool `protobuf:"varint,6,opt,name=enable_reverse_replication,json=enableReverseReplication,proto3" json:"enable_reverse_replication,omitempty"` - Direction int32 `protobuf:"varint,7,opt,name=direction,proto3" json:"direction,omitempty"` - Timeout *vttime.Duration `protobuf:"bytes,8,opt,name=timeout,proto3" json:"timeout,omitempty"` - DryRun bool `protobuf:"varint,9,opt,name=dry_run,json=dryRun,proto3" json:"dry_run,omitempty"` - InitializeTargetSequences bool `protobuf:"varint,10,opt,name=initialize_target_sequences,json=initializeTargetSequences,proto3" json:"initialize_target_sequences,omitempty"` - Shards []string `protobuf:"bytes,11,rep,name=shards,proto3" json:"shards,omitempty"` - Force bool `protobuf:"varint,12,opt,name=force,proto3" json:"force,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"` + Workflow string `protobuf:"bytes,2,opt,name=workflow,proto3" json:"workflow,omitempty"` + Cells []string `protobuf:"bytes,3,rep,name=cells,proto3" json:"cells,omitempty"` + TabletTypes []topodata.TabletType `protobuf:"varint,4,rep,packed,name=tablet_types,json=tabletTypes,proto3,enum=topodata.TabletType" json:"tablet_types,omitempty"` + MaxReplicationLagAllowed *vttime.Duration `protobuf:"bytes,5,opt,name=max_replication_lag_allowed,json=maxReplicationLagAllowed,proto3" json:"max_replication_lag_allowed,omitempty"` + EnableReverseReplication bool `protobuf:"varint,6,opt,name=enable_reverse_replication,json=enableReverseReplication,proto3" json:"enable_reverse_replication,omitempty"` + Direction int32 `protobuf:"varint,7,opt,name=direction,proto3" json:"direction,omitempty"` + Timeout *vttime.Duration `protobuf:"bytes,8,opt,name=timeout,proto3" json:"timeout,omitempty"` + DryRun bool `protobuf:"varint,9,opt,name=dry_run,json=dryRun,proto3" json:"dry_run,omitempty"` + InitializeTargetSequences bool `protobuf:"varint,10,opt,name=initialize_target_sequences,json=initializeTargetSequences,proto3" json:"initialize_target_sequences,omitempty"` + Shards []string `protobuf:"bytes,11,rep,name=shards,proto3" json:"shards,omitempty"` + Force bool `protobuf:"varint,12,opt,name=force,proto3" json:"force,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *WorkflowSwitchTrafficRequest) Reset() { @@ -15867,14 +15654,13 @@ func (x *WorkflowSwitchTrafficRequest) GetForce() bool { } type WorkflowSwitchTrafficResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Summary string `protobuf:"bytes,1,opt,name=summary,proto3" json:"summary,omitempty"` + StartState string `protobuf:"bytes,2,opt,name=start_state,json=startState,proto3" json:"start_state,omitempty"` + CurrentState string `protobuf:"bytes,3,opt,name=current_state,json=currentState,proto3" json:"current_state,omitempty"` + DryRunResults []string `protobuf:"bytes,4,rep,name=dry_run_results,json=dryRunResults,proto3" json:"dry_run_results,omitempty"` unknownFields protoimpl.UnknownFields - - Summary string `protobuf:"bytes,1,opt,name=summary,proto3" json:"summary,omitempty"` - StartState string `protobuf:"bytes,2,opt,name=start_state,json=startState,proto3" json:"start_state,omitempty"` - CurrentState string `protobuf:"bytes,3,opt,name=current_state,json=currentState,proto3" json:"current_state,omitempty"` - DryRunResults []string `protobuf:"bytes,4,rep,name=dry_run_results,json=dryRunResults,proto3" json:"dry_run_results,omitempty"` + sizeCache protoimpl.SizeCache } func (x *WorkflowSwitchTrafficResponse) Reset() { @@ -15936,14 +15722,13 @@ func (x *WorkflowSwitchTrafficResponse) GetDryRunResults() []string { } type WorkflowUpdateRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"` // TabletRequest gets passed on to each primary tablet involved // in the workflow via the UpdateVReplicationWorkflow tabletmanager RPC. TabletRequest *tabletmanagerdata.UpdateVReplicationWorkflowRequest `protobuf:"bytes,2,opt,name=tablet_request,json=tabletRequest,proto3" json:"tablet_request,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *WorkflowUpdateRequest) Reset() { @@ -15991,12 +15776,11 @@ func (x *WorkflowUpdateRequest) GetTabletRequest() *tabletmanagerdata.UpdateVRep } type WorkflowUpdateResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Summary string `protobuf:"bytes,1,opt,name=summary,proto3" json:"summary,omitempty"` + Details []*WorkflowUpdateResponse_TabletInfo `protobuf:"bytes,2,rep,name=details,proto3" json:"details,omitempty"` unknownFields protoimpl.UnknownFields - - Summary string `protobuf:"bytes,1,opt,name=summary,proto3" json:"summary,omitempty"` - Details []*WorkflowUpdateResponse_TabletInfo `protobuf:"bytes,2,rep,name=details,proto3" json:"details,omitempty"` + sizeCache protoimpl.SizeCache } func (x *WorkflowUpdateResponse) Reset() { @@ -16044,9 +15828,9 @@ func (x *WorkflowUpdateResponse) GetDetails() []*WorkflowUpdateResponse_TabletIn } type GetMirrorRulesRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *GetMirrorRulesRequest) Reset() { @@ -16080,11 +15864,10 @@ func (*GetMirrorRulesRequest) Descriptor() ([]byte, []int) { } type GetMirrorRulesResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + MirrorRules *vschema.MirrorRules `protobuf:"bytes,1,opt,name=mirror_rules,json=mirrorRules,proto3" json:"mirror_rules,omitempty"` unknownFields protoimpl.UnknownFields - - MirrorRules *vschema.MirrorRules `protobuf:"bytes,1,opt,name=mirror_rules,json=mirrorRules,proto3" json:"mirror_rules,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetMirrorRulesResponse) Reset() { @@ -16125,14 +15908,13 @@ func (x *GetMirrorRulesResponse) GetMirrorRules() *vschema.MirrorRules { } type WorkflowMirrorTrafficRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"` + Workflow string `protobuf:"bytes,2,opt,name=workflow,proto3" json:"workflow,omitempty"` + TabletTypes []topodata.TabletType `protobuf:"varint,3,rep,packed,name=tablet_types,json=tabletTypes,proto3,enum=topodata.TabletType" json:"tablet_types,omitempty"` + Percent float32 `protobuf:"fixed32,4,opt,name=percent,proto3" json:"percent,omitempty"` unknownFields protoimpl.UnknownFields - - Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"` - Workflow string `protobuf:"bytes,2,opt,name=workflow,proto3" json:"workflow,omitempty"` - TabletTypes []topodata.TabletType `protobuf:"varint,3,rep,packed,name=tablet_types,json=tabletTypes,proto3,enum=topodata.TabletType" json:"tablet_types,omitempty"` - Percent float32 `protobuf:"fixed32,4,opt,name=percent,proto3" json:"percent,omitempty"` + sizeCache protoimpl.SizeCache } func (x *WorkflowMirrorTrafficRequest) Reset() { @@ -16194,13 +15976,12 @@ func (x *WorkflowMirrorTrafficRequest) GetPercent() float32 { } type WorkflowMirrorTrafficResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Summary string `protobuf:"bytes,1,opt,name=summary,proto3" json:"summary,omitempty"` + StartState string `protobuf:"bytes,2,opt,name=start_state,json=startState,proto3" json:"start_state,omitempty"` + CurrentState string `protobuf:"bytes,3,opt,name=current_state,json=currentState,proto3" json:"current_state,omitempty"` unknownFields protoimpl.UnknownFields - - Summary string `protobuf:"bytes,1,opt,name=summary,proto3" json:"summary,omitempty"` - StartState string `protobuf:"bytes,2,opt,name=start_state,json=startState,proto3" json:"start_state,omitempty"` - CurrentState string `protobuf:"bytes,3,opt,name=current_state,json=currentState,proto3" json:"current_state,omitempty"` + sizeCache protoimpl.SizeCache } func (x *WorkflowMirrorTrafficResponse) Reset() { @@ -16255,12 +16036,11 @@ func (x *WorkflowMirrorTrafficResponse) GetCurrentState() string { } type Workflow_ReplicationLocation struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"` + Shards []string `protobuf:"bytes,2,rep,name=shards,proto3" json:"shards,omitempty"` unknownFields protoimpl.UnknownFields - - Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"` - Shards []string `protobuf:"bytes,2,rep,name=shards,proto3" json:"shards,omitempty"` + sizeCache protoimpl.SizeCache } func (x *Workflow_ReplicationLocation) Reset() { @@ -16308,13 +16088,12 @@ func (x *Workflow_ReplicationLocation) GetShards() []string { } type Workflow_ShardStream struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Streams []*Workflow_Stream `protobuf:"bytes,1,rep,name=streams,proto3" json:"streams,omitempty"` TabletControls []*topodata.Shard_TabletControl `protobuf:"bytes,2,rep,name=tablet_controls,json=tabletControls,proto3" json:"tablet_controls,omitempty"` IsPrimaryServing bool `protobuf:"varint,3,opt,name=is_primary_serving,json=isPrimaryServing,proto3" json:"is_primary_serving,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Workflow_ShardStream) Reset() { @@ -16369,10 +16148,7 @@ func (x *Workflow_ShardStream) GetIsPrimaryServing() bool { } type Workflow_Stream struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` Id int64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` Shard string `protobuf:"bytes,2,opt,name=shard,proto3" json:"shard,omitempty"` Tablet *topodata.TabletAlias `protobuf:"bytes,3,opt,name=tablet,proto3" json:"tablet,omitempty"` @@ -16401,6 +16177,8 @@ type Workflow_Stream struct { TabletTypes []topodata.TabletType `protobuf:"varint,18,rep,packed,name=tablet_types,json=tabletTypes,proto3,enum=topodata.TabletType" json:"tablet_types,omitempty"` TabletSelectionPreference tabletmanagerdata.TabletSelectionPreference `protobuf:"varint,19,opt,name=tablet_selection_preference,json=tabletSelectionPreference,proto3,enum=tabletmanagerdata.TabletSelectionPreference" json:"tablet_selection_preference,omitempty"` Cells []string `protobuf:"bytes,20,rep,name=cells,proto3" json:"cells,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Workflow_Stream) Reset() { @@ -16574,13 +16352,12 @@ func (x *Workflow_Stream) GetCells() []string { } type Workflow_Stream_CopyState struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Table string `protobuf:"bytes,1,opt,name=table,proto3" json:"table,omitempty"` + LastPk string `protobuf:"bytes,2,opt,name=last_pk,json=lastPk,proto3" json:"last_pk,omitempty"` + StreamId int64 `protobuf:"varint,3,opt,name=stream_id,json=streamId,proto3" json:"stream_id,omitempty"` unknownFields protoimpl.UnknownFields - - Table string `protobuf:"bytes,1,opt,name=table,proto3" json:"table,omitempty"` - LastPk string `protobuf:"bytes,2,opt,name=last_pk,json=lastPk,proto3" json:"last_pk,omitempty"` - StreamId int64 `protobuf:"varint,3,opt,name=stream_id,json=streamId,proto3" json:"stream_id,omitempty"` + sizeCache protoimpl.SizeCache } func (x *Workflow_Stream_CopyState) Reset() { @@ -16635,18 +16412,17 @@ func (x *Workflow_Stream_CopyState) GetStreamId() int64 { } type Workflow_Stream_Log struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Id int64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + StreamId int64 `protobuf:"varint,2,opt,name=stream_id,json=streamId,proto3" json:"stream_id,omitempty"` + Type string `protobuf:"bytes,3,opt,name=type,proto3" json:"type,omitempty"` + State string `protobuf:"bytes,4,opt,name=state,proto3" json:"state,omitempty"` + CreatedAt *vttime.Time `protobuf:"bytes,5,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + UpdatedAt *vttime.Time `protobuf:"bytes,6,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + Message string `protobuf:"bytes,7,opt,name=message,proto3" json:"message,omitempty"` + Count int64 `protobuf:"varint,8,opt,name=count,proto3" json:"count,omitempty"` unknownFields protoimpl.UnknownFields - - Id int64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` - StreamId int64 `protobuf:"varint,2,opt,name=stream_id,json=streamId,proto3" json:"stream_id,omitempty"` - Type string `protobuf:"bytes,3,opt,name=type,proto3" json:"type,omitempty"` - State string `protobuf:"bytes,4,opt,name=state,proto3" json:"state,omitempty"` - CreatedAt *vttime.Time `protobuf:"bytes,5,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` - UpdatedAt *vttime.Time `protobuf:"bytes,6,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` - Message string `protobuf:"bytes,7,opt,name=message,proto3" json:"message,omitempty"` - Count int64 `protobuf:"varint,8,opt,name=count,proto3" json:"count,omitempty"` + sizeCache protoimpl.SizeCache } func (x *Workflow_Stream_Log) Reset() { @@ -16736,12 +16512,11 @@ func (x *Workflow_Stream_Log) GetCount() int64 { } type Workflow_Stream_ThrottlerStatus struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - ComponentThrottled string `protobuf:"bytes,1,opt,name=component_throttled,json=componentThrottled,proto3" json:"component_throttled,omitempty"` - TimeThrottled *vttime.Time `protobuf:"bytes,2,opt,name=time_throttled,json=timeThrottled,proto3" json:"time_throttled,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + ComponentThrottled string `protobuf:"bytes,1,opt,name=component_throttled,json=componentThrottled,proto3" json:"component_throttled,omitempty"` + TimeThrottled *vttime.Time `protobuf:"bytes,2,opt,name=time_throttled,json=timeThrottled,proto3" json:"time_throttled,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Workflow_Stream_ThrottlerStatus) Reset() { @@ -16789,11 +16564,10 @@ func (x *Workflow_Stream_ThrottlerStatus) GetTimeThrottled() *vttime.Time { } type ApplyVSchemaResponse_ParamList struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Params []string `protobuf:"bytes,1,rep,name=params,proto3" json:"params,omitempty"` unknownFields protoimpl.UnknownFields - - Params []string `protobuf:"bytes,1,rep,name=params,proto3" json:"params,omitempty"` + sizeCache protoimpl.SizeCache } func (x *ApplyVSchemaResponse_ParamList) Reset() { @@ -16834,11 +16608,10 @@ func (x *ApplyVSchemaResponse_ParamList) GetParams() []string { } type GetSrvKeyspaceNamesResponse_NameList struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Names []string `protobuf:"bytes,1,rep,name=names,proto3" json:"names,omitempty"` unknownFields protoimpl.UnknownFields - - Names []string `protobuf:"bytes,1,rep,name=names,proto3" json:"names,omitempty"` + sizeCache protoimpl.SizeCache } func (x *GetSrvKeyspaceNamesResponse_NameList) Reset() { @@ -16879,13 +16652,12 @@ func (x *GetSrvKeyspaceNamesResponse_NameList) GetNames() []string { } type MoveTablesCreateResponse_TabletInfo struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Tablet *topodata.TabletAlias `protobuf:"bytes,1,opt,name=tablet,proto3" json:"tablet,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Tablet *topodata.TabletAlias `protobuf:"bytes,1,opt,name=tablet,proto3" json:"tablet,omitempty"` // Created is set if the workflow was created on this tablet or not. - Created bool `protobuf:"varint,2,opt,name=created,proto3" json:"created,omitempty"` + Created bool `protobuf:"varint,2,opt,name=created,proto3" json:"created,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *MoveTablesCreateResponse_TabletInfo) Reset() { @@ -16933,13 +16705,12 @@ func (x *MoveTablesCreateResponse_TabletInfo) GetCreated() bool { } type WorkflowDeleteResponse_TabletInfo struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Tablet *topodata.TabletAlias `protobuf:"bytes,1,opt,name=tablet,proto3" json:"tablet,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Tablet *topodata.TabletAlias `protobuf:"bytes,1,opt,name=tablet,proto3" json:"tablet,omitempty"` // Delete is set if the workflow was deleted on this tablet. - Deleted bool `protobuf:"varint,2,opt,name=deleted,proto3" json:"deleted,omitempty"` + Deleted bool `protobuf:"varint,2,opt,name=deleted,proto3" json:"deleted,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *WorkflowDeleteResponse_TabletInfo) Reset() { @@ -16987,16 +16758,15 @@ func (x *WorkflowDeleteResponse_TabletInfo) GetDeleted() bool { } type WorkflowStatusResponse_TableCopyState struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - RowsCopied int64 `protobuf:"varint,1,opt,name=rows_copied,json=rowsCopied,proto3" json:"rows_copied,omitempty"` - RowsTotal int64 `protobuf:"varint,2,opt,name=rows_total,json=rowsTotal,proto3" json:"rows_total,omitempty"` - RowsPercentage float32 `protobuf:"fixed32,3,opt,name=rows_percentage,json=rowsPercentage,proto3" json:"rows_percentage,omitempty"` - BytesCopied int64 `protobuf:"varint,4,opt,name=bytes_copied,json=bytesCopied,proto3" json:"bytes_copied,omitempty"` - BytesTotal int64 `protobuf:"varint,5,opt,name=bytes_total,json=bytesTotal,proto3" json:"bytes_total,omitempty"` - BytesPercentage float32 `protobuf:"fixed32,6,opt,name=bytes_percentage,json=bytesPercentage,proto3" json:"bytes_percentage,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + RowsCopied int64 `protobuf:"varint,1,opt,name=rows_copied,json=rowsCopied,proto3" json:"rows_copied,omitempty"` + RowsTotal int64 `protobuf:"varint,2,opt,name=rows_total,json=rowsTotal,proto3" json:"rows_total,omitempty"` + RowsPercentage float32 `protobuf:"fixed32,3,opt,name=rows_percentage,json=rowsPercentage,proto3" json:"rows_percentage,omitempty"` + BytesCopied int64 `protobuf:"varint,4,opt,name=bytes_copied,json=bytesCopied,proto3" json:"bytes_copied,omitempty"` + BytesTotal int64 `protobuf:"varint,5,opt,name=bytes_total,json=bytesTotal,proto3" json:"bytes_total,omitempty"` + BytesPercentage float32 `protobuf:"fixed32,6,opt,name=bytes_percentage,json=bytesPercentage,proto3" json:"bytes_percentage,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *WorkflowStatusResponse_TableCopyState) Reset() { @@ -17072,16 +16842,15 @@ func (x *WorkflowStatusResponse_TableCopyState) GetBytesPercentage() float32 { } type WorkflowStatusResponse_ShardStreamState struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Id int32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` + Tablet *topodata.TabletAlias `protobuf:"bytes,2,opt,name=tablet,proto3" json:"tablet,omitempty"` + SourceShard string `protobuf:"bytes,3,opt,name=source_shard,json=sourceShard,proto3" json:"source_shard,omitempty"` + Position string `protobuf:"bytes,4,opt,name=position,proto3" json:"position,omitempty"` + Status string `protobuf:"bytes,5,opt,name=status,proto3" json:"status,omitempty"` + Info string `protobuf:"bytes,6,opt,name=info,proto3" json:"info,omitempty"` unknownFields protoimpl.UnknownFields - - Id int32 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` - Tablet *topodata.TabletAlias `protobuf:"bytes,2,opt,name=tablet,proto3" json:"tablet,omitempty"` - SourceShard string `protobuf:"bytes,3,opt,name=source_shard,json=sourceShard,proto3" json:"source_shard,omitempty"` - Position string `protobuf:"bytes,4,opt,name=position,proto3" json:"position,omitempty"` - Status string `protobuf:"bytes,5,opt,name=status,proto3" json:"status,omitempty"` - Info string `protobuf:"bytes,6,opt,name=info,proto3" json:"info,omitempty"` + sizeCache protoimpl.SizeCache } func (x *WorkflowStatusResponse_ShardStreamState) Reset() { @@ -17157,11 +16926,10 @@ func (x *WorkflowStatusResponse_ShardStreamState) GetInfo() string { } type WorkflowStatusResponse_ShardStreams struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Streams []*WorkflowStatusResponse_ShardStreamState `protobuf:"bytes,2,rep,name=streams,proto3" json:"streams,omitempty"` unknownFields protoimpl.UnknownFields - - Streams []*WorkflowStatusResponse_ShardStreamState `protobuf:"bytes,2,rep,name=streams,proto3" json:"streams,omitempty"` + sizeCache protoimpl.SizeCache } func (x *WorkflowStatusResponse_ShardStreams) Reset() { @@ -17202,14 +16970,13 @@ func (x *WorkflowStatusResponse_ShardStreams) GetStreams() []*WorkflowStatusResp } type WorkflowUpdateResponse_TabletInfo struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Tablet *topodata.TabletAlias `protobuf:"bytes,1,opt,name=tablet,proto3" json:"tablet,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Tablet *topodata.TabletAlias `protobuf:"bytes,1,opt,name=tablet,proto3" json:"tablet,omitempty"` // Changed is true if any of the provided values were different // than what was already stored on this tablet. - Changed bool `protobuf:"varint,2,opt,name=changed,proto3" json:"changed,omitempty"` + Changed bool `protobuf:"varint,2,opt,name=changed,proto3" json:"changed,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *WorkflowUpdateResponse_TabletInfo) Reset() { @@ -17258,7 +17025,7 @@ func (x *WorkflowUpdateResponse_TabletInfo) GetChanged() bool { var File_vtctldata_proto protoreflect.FileDescriptor -var file_vtctldata_proto_rawDesc = []byte{ +var file_vtctldata_proto_rawDesc = string([]byte{ 0x0a, 0x0f, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x09, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x1a, 0x10, 0x62, 0x69, 0x6e, 0x6c, 0x6f, 0x67, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x0d, @@ -19896,16 +19663,16 @@ var file_vtctldata_proto_rawDesc = []byte{ 0x73, 0x73, 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x69, 0x74, 0x65, 0x73, 0x73, 0x2f, 0x67, 0x6f, 0x2f, 0x76, 0x74, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} +}) var ( file_vtctldata_proto_rawDescOnce sync.Once - file_vtctldata_proto_rawDescData = file_vtctldata_proto_rawDesc + file_vtctldata_proto_rawDescData []byte ) func file_vtctldata_proto_rawDescGZIP() []byte { file_vtctldata_proto_rawDescOnce.Do(func() { - file_vtctldata_proto_rawDescData = protoimpl.X.CompressGZIP(file_vtctldata_proto_rawDescData) + file_vtctldata_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_vtctldata_proto_rawDesc), len(file_vtctldata_proto_rawDesc))) }) return file_vtctldata_proto_rawDescData } @@ -20530,7 +20297,7 @@ func file_vtctldata_proto_init() { out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_vtctldata_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_vtctldata_proto_rawDesc), len(file_vtctldata_proto_rawDesc)), NumEnums: 5, NumMessages: 309, NumExtensions: 0, @@ -20542,7 +20309,6 @@ func file_vtctldata_proto_init() { MessageInfos: file_vtctldata_proto_msgTypes, }.Build() File_vtctldata_proto = out.File - file_vtctldata_proto_rawDesc = nil file_vtctldata_proto_goTypes = nil file_vtctldata_proto_depIdxs = nil } diff --git a/go/vt/proto/vtctldata/vtctldata_vtproto.pb.go b/go/vt/proto/vtctldata/vtctldata_vtproto.pb.go index c9ae1183793..26ff08a0d7f 100644 --- a/go/vt/proto/vtctldata/vtctldata_vtproto.pb.go +++ b/go/vt/proto/vtctldata/vtctldata_vtproto.pb.go @@ -1,5 +1,5 @@ // Code generated by protoc-gen-go-vtproto. DO NOT EDIT. -// protoc-gen-go-vtproto version: v0.6.1-0.20241011083415-71c992bc3c87 +// protoc-gen-go-vtproto version: v0.6.1-0.20241121165744-79df5c4772f2 // source: vtctldata.proto package vtctldata diff --git a/go/vt/proto/vtctlservice/vtctlservice.pb.go b/go/vt/proto/vtctlservice/vtctlservice.pb.go index cbd97a8022e..9e4da8c5778 100644 --- a/go/vt/proto/vtctlservice/vtctlservice.pb.go +++ b/go/vt/proto/vtctlservice/vtctlservice.pb.go @@ -18,7 +18,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.35.1 +// protoc-gen-go v1.36.4 // protoc v3.21.3 // source: vtctlservice.proto @@ -28,6 +28,7 @@ import ( protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" reflect "reflect" + unsafe "unsafe" vtctldata "vitess.io/vitess/go/vt/proto/vtctldata" ) @@ -40,7 +41,7 @@ const ( var File_vtctlservice_proto protoreflect.FileDescriptor -var file_vtctlservice_proto_rawDesc = []byte{ +var file_vtctlservice_proto_rawDesc = string([]byte{ 0x0a, 0x12, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0c, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x1a, 0x0f, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x70, 0x72, @@ -811,7 +812,7 @@ var file_vtctlservice_proto_rawDesc = []byte{ 0x65, 0x73, 0x73, 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x69, 0x74, 0x65, 0x73, 0x73, 0x2f, 0x67, 0x6f, 0x2f, 0x76, 0x74, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x76, 0x74, 0x63, 0x74, 0x6c, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} +}) var file_vtctlservice_proto_goTypes = []any{ (*vtctldata.ExecuteVtctlCommandRequest)(nil), // 0: vtctldata.ExecuteVtctlCommandRequest @@ -1340,7 +1341,7 @@ func file_vtctlservice_proto_init() { out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_vtctlservice_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_vtctlservice_proto_rawDesc), len(file_vtctlservice_proto_rawDesc)), NumEnums: 0, NumMessages: 0, NumExtensions: 0, @@ -1350,7 +1351,6 @@ func file_vtctlservice_proto_init() { DependencyIndexes: file_vtctlservice_proto_depIdxs, }.Build() File_vtctlservice_proto = out.File - file_vtctlservice_proto_rawDesc = nil file_vtctlservice_proto_goTypes = nil file_vtctlservice_proto_depIdxs = nil } diff --git a/go/vt/proto/vtgate/vtgate.pb.go b/go/vt/proto/vtgate/vtgate.pb.go index b996f919256..3fbbf494ede 100644 --- a/go/vt/proto/vtgate/vtgate.pb.go +++ b/go/vt/proto/vtgate/vtgate.pb.go @@ -17,7 +17,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.35.1 +// protoc-gen-go v1.36.4 // protoc v3.21.3 // source: vtgate.proto @@ -28,6 +28,7 @@ import ( protoimpl "google.golang.org/protobuf/runtime/protoimpl" reflect "reflect" sync "sync" + unsafe "unsafe" binlogdata "vitess.io/vitess/go/vt/proto/binlogdata" query "vitess.io/vitess/go/vt/proto/query" topodata "vitess.io/vitess/go/vt/proto/topodata" @@ -168,10 +169,7 @@ func (CommitOrder) EnumDescriptor() ([]byte, []int) { // discarded. If you're not in a transaction, Session is // an optional parameter for the V2 APIs. type Session struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // in_transaction is set to true if the session is in a transaction. InTransaction bool `protobuf:"varint,1,opt,name=in_transaction,json=inTransaction,proto3" json:"in_transaction,omitempty"` // shard_sessions keep track of per-shard transaction info. @@ -198,10 +196,10 @@ type Session struct { // found_rows keeps track of how many rows the last query returned FoundRows uint64 `protobuf:"varint,12,opt,name=found_rows,json=foundRows,proto3" json:"found_rows,omitempty"` // user_defined_variables contains all the @variables defined for this session - UserDefinedVariables map[string]*query.BindVariable `protobuf:"bytes,13,rep,name=user_defined_variables,json=userDefinedVariables,proto3" json:"user_defined_variables,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + UserDefinedVariables map[string]*query.BindVariable `protobuf:"bytes,13,rep,name=user_defined_variables,json=userDefinedVariables,proto3" json:"user_defined_variables,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` // system_variables keeps track of all session variables set for this connection // TODO: systay should we keep this so we can apply it ordered? - SystemVariables map[string]string `protobuf:"bytes,14,rep,name=system_variables,json=systemVariables,proto3" json:"system_variables,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + SystemVariables map[string]string `protobuf:"bytes,14,rep,name=system_variables,json=systemVariables,proto3" json:"system_variables,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` // row_count keeps track of the last seen rows affected for this session RowCount int64 `protobuf:"varint,15,opt,name=row_count,json=rowCount,proto3" json:"row_count,omitempty"` // Stores savepoint and release savepoint calls inside a transaction @@ -221,12 +219,14 @@ type Session struct { SessionUUID string `protobuf:"bytes,22,opt,name=SessionUUID,proto3" json:"SessionUUID,omitempty"` // enable_system_settings defines if we can use reserved connections. EnableSystemSettings bool `protobuf:"varint,23,opt,name=enable_system_settings,json=enableSystemSettings,proto3" json:"enable_system_settings,omitempty"` - AdvisoryLock map[string]int64 `protobuf:"bytes,24,rep,name=advisory_lock,json=advisoryLock,proto3" json:"advisory_lock,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3"` + AdvisoryLock map[string]int64 `protobuf:"bytes,24,rep,name=advisory_lock,json=advisoryLock,proto3" json:"advisory_lock,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"varint,2,opt,name=value"` // query_timeout is the maximum amount of time a query is permitted to run QueryTimeout int64 `protobuf:"varint,25,opt,name=query_timeout,json=queryTimeout,proto3" json:"query_timeout,omitempty"` - PrepareStatement map[string]*PrepareData `protobuf:"bytes,26,rep,name=prepare_statement,json=prepareStatement,proto3" json:"prepare_statement,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + PrepareStatement map[string]*PrepareData `protobuf:"bytes,26,rep,name=prepare_statement,json=prepareStatement,proto3" json:"prepare_statement,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` // MigrationContext MigrationContext string `protobuf:"bytes,27,opt,name=migration_context,json=migrationContext,proto3" json:"migration_context,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Session) Reset() { @@ -443,12 +443,11 @@ func (x *Session) GetMigrationContext() string { // PrepareData keeps the prepared statement and other information related for execution of it. type PrepareData struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - PrepareStatement string `protobuf:"bytes,1,opt,name=prepare_statement,json=prepareStatement,proto3" json:"prepare_statement,omitempty"` - ParamsCount int32 `protobuf:"varint,2,opt,name=params_count,json=paramsCount,proto3" json:"params_count,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + PrepareStatement string `protobuf:"bytes,1,opt,name=prepare_statement,json=prepareStatement,proto3" json:"prepare_statement,omitempty"` + ParamsCount int32 `protobuf:"varint,2,opt,name=params_count,json=paramsCount,proto3" json:"params_count,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *PrepareData) Reset() { @@ -498,13 +497,12 @@ func (x *PrepareData) GetParamsCount() int32 { // ReadAfterWrite contains information regarding gtid set and timeout // Also if the gtid information needs to be passed to client. type ReadAfterWrite struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - ReadAfterWriteGtid string `protobuf:"bytes,1,opt,name=read_after_write_gtid,json=readAfterWriteGtid,proto3" json:"read_after_write_gtid,omitempty"` - ReadAfterWriteTimeout float64 `protobuf:"fixed64,2,opt,name=read_after_write_timeout,json=readAfterWriteTimeout,proto3" json:"read_after_write_timeout,omitempty"` - SessionTrackGtids bool `protobuf:"varint,3,opt,name=session_track_gtids,json=sessionTrackGtids,proto3" json:"session_track_gtids,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + ReadAfterWriteGtid string `protobuf:"bytes,1,opt,name=read_after_write_gtid,json=readAfterWriteGtid,proto3" json:"read_after_write_gtid,omitempty"` + ReadAfterWriteTimeout float64 `protobuf:"fixed64,2,opt,name=read_after_write_timeout,json=readAfterWriteTimeout,proto3" json:"read_after_write_timeout,omitempty"` + SessionTrackGtids bool `protobuf:"varint,3,opt,name=session_track_gtids,json=sessionTrackGtids,proto3" json:"session_track_gtids,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ReadAfterWrite) Reset() { @@ -560,17 +558,16 @@ func (x *ReadAfterWrite) GetSessionTrackGtids() bool { // ExecuteRequest is the payload to Execute. type ExecuteRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // caller_id identifies the caller. This is the effective caller ID, // set by the application to further identify the caller. CallerId *vtrpc.CallerID `protobuf:"bytes,1,opt,name=caller_id,json=callerId,proto3" json:"caller_id,omitempty"` // session carries the session state. Session *Session `protobuf:"bytes,2,opt,name=session,proto3" json:"session,omitempty"` // query is the query and bind variables to execute. - Query *query.BoundQuery `protobuf:"bytes,3,opt,name=query,proto3" json:"query,omitempty"` + Query *query.BoundQuery `protobuf:"bytes,3,opt,name=query,proto3" json:"query,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ExecuteRequest) Reset() { @@ -626,10 +623,7 @@ func (x *ExecuteRequest) GetQuery() *query.BoundQuery { // ExecuteResponse is the returned value from Execute. type ExecuteResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // error contains an application level error if necessary. Note the // session may have changed, even when an error is returned (for // instance if a database integrity error happened). @@ -637,7 +631,9 @@ type ExecuteResponse struct { // session is the updated session information. Session *Session `protobuf:"bytes,2,opt,name=session,proto3" json:"session,omitempty"` // result contains the query result, only set if error is unset. - Result *query.QueryResult `protobuf:"bytes,3,opt,name=result,proto3" json:"result,omitempty"` + Result *query.QueryResult `protobuf:"bytes,3,opt,name=result,proto3" json:"result,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ExecuteResponse) Reset() { @@ -693,17 +689,16 @@ func (x *ExecuteResponse) GetResult() *query.QueryResult { // ExecuteBatchRequest is the payload to ExecuteBatch. type ExecuteBatchRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // caller_id identifies the caller. This is the effective caller ID, // set by the application to further identify the caller. CallerId *vtrpc.CallerID `protobuf:"bytes,1,opt,name=caller_id,json=callerId,proto3" json:"caller_id,omitempty"` // session carries the session state. Session *Session `protobuf:"bytes,2,opt,name=session,proto3" json:"session,omitempty"` // queries is a list of query and bind variables to execute. - Queries []*query.BoundQuery `protobuf:"bytes,3,rep,name=queries,proto3" json:"queries,omitempty"` + Queries []*query.BoundQuery `protobuf:"bytes,3,rep,name=queries,proto3" json:"queries,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ExecuteBatchRequest) Reset() { @@ -759,10 +754,7 @@ func (x *ExecuteBatchRequest) GetQueries() []*query.BoundQuery { // ExecuteBatchResponse is the returned value from ExecuteBatch. type ExecuteBatchResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // error contains an application level error if necessary. Note the // session may have changed, even when an error is returned (for // instance if a database integrity error happened). @@ -770,7 +762,9 @@ type ExecuteBatchResponse struct { // session is the updated session information. Session *Session `protobuf:"bytes,2,opt,name=session,proto3" json:"session,omitempty"` // results contains the query results, only set if application level error is unset. - Results []*query.ResultWithError `protobuf:"bytes,3,rep,name=results,proto3" json:"results,omitempty"` + Results []*query.ResultWithError `protobuf:"bytes,3,rep,name=results,proto3" json:"results,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ExecuteBatchResponse) Reset() { @@ -826,17 +820,16 @@ func (x *ExecuteBatchResponse) GetResults() []*query.ResultWithError { // StreamExecuteRequest is the payload to StreamExecute. type StreamExecuteRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // caller_id identifies the caller. This is the effective caller ID, // set by the application to further identify the caller. CallerId *vtrpc.CallerID `protobuf:"bytes,1,opt,name=caller_id,json=callerId,proto3" json:"caller_id,omitempty"` // query is the query and bind variables to execute. Query *query.BoundQuery `protobuf:"bytes,2,opt,name=query,proto3" json:"query,omitempty"` // session carries the session state. - Session *Session `protobuf:"bytes,6,opt,name=session,proto3" json:"session,omitempty"` + Session *Session `protobuf:"bytes,6,opt,name=session,proto3" json:"session,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *StreamExecuteRequest) Reset() { @@ -894,16 +887,15 @@ func (x *StreamExecuteRequest) GetSession() *Session { // The session is currently not returned because StreamExecute is // not expected to modify it. type StreamExecuteResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // result contains the result data. // The first value contains only Fields information. // The next values contain the actual rows, a few values per result. Result *query.QueryResult `protobuf:"bytes,1,opt,name=result,proto3" json:"result,omitempty"` // session is the updated session information. - Session *Session `protobuf:"bytes,2,opt,name=session,proto3" json:"session,omitempty"` + Session *Session `protobuf:"bytes,2,opt,name=session,proto3" json:"session,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *StreamExecuteResponse) Reset() { @@ -952,15 +944,14 @@ func (x *StreamExecuteResponse) GetSession() *Session { // ResolveTransactionRequest is the payload to ResolveTransaction. type ResolveTransactionRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // caller_id identifies the caller. This is the effective caller ID, // set by the application to further identify the caller. CallerId *vtrpc.CallerID `protobuf:"bytes,1,opt,name=caller_id,json=callerId,proto3" json:"caller_id,omitempty"` // dtid is the dtid of the transaction to be resolved. - Dtid string `protobuf:"bytes,2,opt,name=dtid,proto3" json:"dtid,omitempty"` + Dtid string `protobuf:"bytes,2,opt,name=dtid,proto3" json:"dtid,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ResolveTransactionRequest) Reset() { @@ -1009,9 +1000,9 @@ func (x *ResolveTransactionRequest) GetDtid() string { // ResolveTransactionResponse is the returned value from Rollback. type ResolveTransactionResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *ResolveTransactionResponse) Reset() { @@ -1045,10 +1036,7 @@ func (*ResolveTransactionResponse) Descriptor() ([]byte, []int) { } type VStreamFlags struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // align streams MinimizeSkew bool `protobuf:"varint,1,opt,name=minimize_skew,json=minimizeSkew,proto3" json:"minimize_skew,omitempty"` // how often heartbeats must be sent when idle (seconds) @@ -1064,6 +1052,8 @@ type VStreamFlags struct { StreamKeyspaceHeartbeats bool `protobuf:"varint,7,opt,name=stream_keyspace_heartbeats,json=streamKeyspaceHeartbeats,proto3" json:"stream_keyspace_heartbeats,omitempty"` // Include reshard journal events in the stream. IncludeReshardJournalEvents bool `protobuf:"varint,8,opt,name=include_reshard_journal_events,json=includeReshardJournalEvents,proto3" json:"include_reshard_journal_events,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *VStreamFlags) Reset() { @@ -1154,18 +1144,17 @@ func (x *VStreamFlags) GetIncludeReshardJournalEvents() bool { // VStreamRequest is the payload for VStream. type VStreamRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - CallerId *vtrpc.CallerID `protobuf:"bytes,1,opt,name=caller_id,json=callerId,proto3" json:"caller_id,omitempty"` - TabletType topodata.TabletType `protobuf:"varint,2,opt,name=tablet_type,json=tabletType,proto3,enum=topodata.TabletType" json:"tablet_type,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + CallerId *vtrpc.CallerID `protobuf:"bytes,1,opt,name=caller_id,json=callerId,proto3" json:"caller_id,omitempty"` + TabletType topodata.TabletType `protobuf:"varint,2,opt,name=tablet_type,json=tabletType,proto3,enum=topodata.TabletType" json:"tablet_type,omitempty"` // position specifies the starting point of the bin log positions // as well as the keyspace-shards to pull events from. // position is of the form 'ks1:0@MySQL56/|ks2:-80@MySQL56/'. - Vgtid *binlogdata.VGtid `protobuf:"bytes,3,opt,name=vgtid,proto3" json:"vgtid,omitempty"` - Filter *binlogdata.Filter `protobuf:"bytes,4,opt,name=filter,proto3" json:"filter,omitempty"` - Flags *VStreamFlags `protobuf:"bytes,5,opt,name=flags,proto3" json:"flags,omitempty"` + Vgtid *binlogdata.VGtid `protobuf:"bytes,3,opt,name=vgtid,proto3" json:"vgtid,omitempty"` + Filter *binlogdata.Filter `protobuf:"bytes,4,opt,name=filter,proto3" json:"filter,omitempty"` + Flags *VStreamFlags `protobuf:"bytes,5,opt,name=flags,proto3" json:"flags,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *VStreamRequest) Reset() { @@ -1235,11 +1224,10 @@ func (x *VStreamRequest) GetFlags() *VStreamFlags { // VStreamResponse is streamed by VStream. type VStreamResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Events []*binlogdata.VEvent `protobuf:"bytes,1,rep,name=events,proto3" json:"events,omitempty"` unknownFields protoimpl.UnknownFields - - Events []*binlogdata.VEvent `protobuf:"bytes,1,rep,name=events,proto3" json:"events,omitempty"` + sizeCache protoimpl.SizeCache } func (x *VStreamResponse) Reset() { @@ -1281,17 +1269,16 @@ func (x *VStreamResponse) GetEvents() []*binlogdata.VEvent { // PrepareRequest is the payload to Prepare. type PrepareRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // caller_id identifies the caller. This is the effective caller ID, // set by the application to further identify the caller. CallerId *vtrpc.CallerID `protobuf:"bytes,1,opt,name=caller_id,json=callerId,proto3" json:"caller_id,omitempty"` // session carries the session state. Session *Session `protobuf:"bytes,2,opt,name=session,proto3" json:"session,omitempty"` // query is the query and bind variables to execute. - Query *query.BoundQuery `protobuf:"bytes,3,opt,name=query,proto3" json:"query,omitempty"` + Query *query.BoundQuery `protobuf:"bytes,3,opt,name=query,proto3" json:"query,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *PrepareRequest) Reset() { @@ -1347,10 +1334,7 @@ func (x *PrepareRequest) GetQuery() *query.BoundQuery { // PrepareResponse is the returned value from Prepare. type PrepareResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // error contains an application level error if necessary. Note the // session may have changed, even when an error is returned (for // instance if a database integrity error happened). @@ -1358,7 +1342,9 @@ type PrepareResponse struct { // session is the updated session information. Session *Session `protobuf:"bytes,2,opt,name=session,proto3" json:"session,omitempty"` // fields contains the fields, only set if error is unset. - Fields []*query.Field `protobuf:"bytes,3,rep,name=fields,proto3" json:"fields,omitempty"` + Fields []*query.Field `protobuf:"bytes,3,rep,name=fields,proto3" json:"fields,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *PrepareResponse) Reset() { @@ -1414,15 +1400,14 @@ func (x *PrepareResponse) GetFields() []*query.Field { // CloseSessionRequest is the payload to CloseSession. type CloseSessionRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // caller_id identifies the caller. This is the effective caller ID, // set by the application to further identify the caller. CallerId *vtrpc.CallerID `protobuf:"bytes,1,opt,name=caller_id,json=callerId,proto3" json:"caller_id,omitempty"` // session carries the session state. - Session *Session `protobuf:"bytes,2,opt,name=session,proto3" json:"session,omitempty"` + Session *Session `protobuf:"bytes,2,opt,name=session,proto3" json:"session,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *CloseSessionRequest) Reset() { @@ -1471,14 +1456,13 @@ func (x *CloseSessionRequest) GetSession() *Session { // CloseSessionResponse is the returned value from CloseSession. type CloseSessionResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // error contains an application level error if necessary. Note the // session may have changed, even when an error is returned (for // instance if a database integrity error happened). - Error *vtrpc.RPCError `protobuf:"bytes,1,opt,name=error,proto3" json:"error,omitempty"` + Error *vtrpc.RPCError `protobuf:"bytes,1,opt,name=error,proto3" json:"error,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *CloseSessionResponse) Reset() { @@ -1519,18 +1503,17 @@ func (x *CloseSessionResponse) GetError() *vtrpc.RPCError { } type Session_ShardSession struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Target *query.Target `protobuf:"bytes,1,opt,name=target,proto3" json:"target,omitempty"` - TransactionId int64 `protobuf:"varint,2,opt,name=transaction_id,json=transactionId,proto3" json:"transaction_id,omitempty"` - TabletAlias *topodata.TabletAlias `protobuf:"bytes,3,opt,name=tablet_alias,json=tabletAlias,proto3" json:"tablet_alias,omitempty"` + state protoimpl.MessageState `protogen:"open.v1"` + Target *query.Target `protobuf:"bytes,1,opt,name=target,proto3" json:"target,omitempty"` + TransactionId int64 `protobuf:"varint,2,opt,name=transaction_id,json=transactionId,proto3" json:"transaction_id,omitempty"` + TabletAlias *topodata.TabletAlias `protobuf:"bytes,3,opt,name=tablet_alias,json=tabletAlias,proto3" json:"tablet_alias,omitempty"` // reserved connection if a dedicated connection is needed ReservedId int64 `protobuf:"varint,4,opt,name=reserved_id,json=reservedId,proto3" json:"reserved_id,omitempty"` VindexOnly bool `protobuf:"varint,5,opt,name=vindex_only,json=vindexOnly,proto3" json:"vindex_only,omitempty"` // rows_affected tracks if any query has modified the rows. - RowsAffected bool `protobuf:"varint,6,opt,name=rows_affected,json=rowsAffected,proto3" json:"rows_affected,omitempty"` + RowsAffected bool `protobuf:"varint,6,opt,name=rows_affected,json=rowsAffected,proto3" json:"rows_affected,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Session_ShardSession) Reset() { @@ -1607,7 +1590,7 @@ func (x *Session_ShardSession) GetRowsAffected() bool { var File_vtgate_proto protoreflect.FileDescriptor -var file_vtgate_proto_rawDesc = []byte{ +var file_vtgate_proto_rawDesc = string([]byte{ 0x0a, 0x0c, 0x76, 0x74, 0x67, 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x06, 0x76, 0x74, 0x67, 0x61, 0x74, 0x65, 0x1a, 0x10, 0x62, 0x69, 0x6e, 0x6c, 0x6f, 0x67, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x0b, 0x71, 0x75, 0x65, 0x72, 0x79, 0x2e, @@ -1903,16 +1886,16 @@ var file_vtgate_proto_rawDesc = []byte{ 0x5a, 0x23, 0x76, 0x69, 0x74, 0x65, 0x73, 0x73, 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x69, 0x74, 0x65, 0x73, 0x73, 0x2f, 0x67, 0x6f, 0x2f, 0x76, 0x74, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x76, 0x74, 0x67, 0x61, 0x74, 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} +}) var ( file_vtgate_proto_rawDescOnce sync.Once - file_vtgate_proto_rawDescData = file_vtgate_proto_rawDesc + file_vtgate_proto_rawDescData []byte ) func file_vtgate_proto_rawDescGZIP() []byte { file_vtgate_proto_rawDescOnce.Do(func() { - file_vtgate_proto_rawDescData = protoimpl.X.CompressGZIP(file_vtgate_proto_rawDescData) + file_vtgate_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_vtgate_proto_rawDesc), len(file_vtgate_proto_rawDesc))) }) return file_vtgate_proto_rawDescData } @@ -2027,7 +2010,7 @@ func file_vtgate_proto_init() { out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_vtgate_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_vtgate_proto_rawDesc), len(file_vtgate_proto_rawDesc)), NumEnums: 2, NumMessages: 23, NumExtensions: 0, @@ -2039,7 +2022,6 @@ func file_vtgate_proto_init() { MessageInfos: file_vtgate_proto_msgTypes, }.Build() File_vtgate_proto = out.File - file_vtgate_proto_rawDesc = nil file_vtgate_proto_goTypes = nil file_vtgate_proto_depIdxs = nil } diff --git a/go/vt/proto/vtgate/vtgate_vtproto.pb.go b/go/vt/proto/vtgate/vtgate_vtproto.pb.go index 5df6dbbffef..f4bdbeeec93 100644 --- a/go/vt/proto/vtgate/vtgate_vtproto.pb.go +++ b/go/vt/proto/vtgate/vtgate_vtproto.pb.go @@ -1,5 +1,5 @@ // Code generated by protoc-gen-go-vtproto. DO NOT EDIT. -// protoc-gen-go-vtproto version: v0.6.1-0.20241011083415-71c992bc3c87 +// protoc-gen-go-vtproto version: v0.6.1-0.20241121165744-79df5c4772f2 // source: vtgate.proto package vtgate diff --git a/go/vt/proto/vtgateservice/vtgateservice.pb.go b/go/vt/proto/vtgateservice/vtgateservice.pb.go index 3abab1e7dbf..d576eb5e76b 100644 --- a/go/vt/proto/vtgateservice/vtgateservice.pb.go +++ b/go/vt/proto/vtgateservice/vtgateservice.pb.go @@ -18,7 +18,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.35.1 +// protoc-gen-go v1.36.4 // protoc v3.21.3 // source: vtgateservice.proto @@ -28,6 +28,7 @@ import ( protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" reflect "reflect" + unsafe "unsafe" vtgate "vitess.io/vitess/go/vt/proto/vtgate" ) @@ -40,7 +41,7 @@ const ( var File_vtgateservice_proto protoreflect.FileDescriptor -var file_vtgateservice_proto_rawDesc = []byte{ +var file_vtgateservice_proto_rawDesc = string([]byte{ 0x0a, 0x13, 0x76, 0x74, 0x67, 0x61, 0x74, 0x65, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0d, 0x76, 0x74, 0x67, 0x61, 0x74, 0x65, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x1a, 0x0c, 0x76, 0x74, 0x67, 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, @@ -77,7 +78,7 @@ var file_vtgateservice_proto_rawDesc = []byte{ 0x67, 0x6f, 0x2f, 0x76, 0x74, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x76, 0x74, 0x67, 0x61, 0x74, 0x65, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} +}) var file_vtgateservice_proto_goTypes = []any{ (*vtgate.ExecuteRequest)(nil), // 0: vtgate.ExecuteRequest @@ -122,7 +123,7 @@ func file_vtgateservice_proto_init() { out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_vtgateservice_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_vtgateservice_proto_rawDesc), len(file_vtgateservice_proto_rawDesc)), NumEnums: 0, NumMessages: 0, NumExtensions: 0, @@ -132,7 +133,6 @@ func file_vtgateservice_proto_init() { DependencyIndexes: file_vtgateservice_proto_depIdxs, }.Build() File_vtgateservice_proto = out.File - file_vtgateservice_proto_rawDesc = nil file_vtgateservice_proto_goTypes = nil file_vtgateservice_proto_depIdxs = nil } diff --git a/go/vt/proto/vtrpc/vtrpc.pb.go b/go/vt/proto/vtrpc/vtrpc.pb.go index 6f6a204277c..042a4ae6208 100644 --- a/go/vt/proto/vtrpc/vtrpc.pb.go +++ b/go/vt/proto/vtrpc/vtrpc.pb.go @@ -17,7 +17,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.35.1 +// protoc-gen-go v1.36.4 // protoc v3.21.3 // source: vtrpc.proto @@ -28,6 +28,7 @@ import ( protoimpl "google.golang.org/protobuf/runtime/protoimpl" reflect "reflect" sync "sync" + unsafe "unsafe" ) const ( @@ -234,10 +235,7 @@ func (Code) EnumDescriptor() ([]byte, []int) { // information for monitoring purposes, to display on dashboards, or // for denying access to tables during a migration. type CallerID struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // principal is the effective user identifier. It is usually filled in // with whoever made the request to the appserver, if the request // came from an automated job or another system component. @@ -253,7 +251,9 @@ type CallerID struct { // servlet name or an API endpoint name. Subcomponent string `protobuf:"bytes,3,opt,name=subcomponent,proto3" json:"subcomponent,omitempty"` // set of security groups that should be assigned to this caller. - Groups []string `protobuf:"bytes,4,rep,name=groups,proto3" json:"groups,omitempty"` + Groups []string `protobuf:"bytes,4,rep,name=groups,proto3" json:"groups,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *CallerID) Reset() { @@ -319,12 +319,11 @@ func (x *CallerID) GetGroups() []string { // We use this so the clients don't have to parse the error messages, // but instead can depend on the value of the code. type RPCError struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Message string `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"` + Code Code `protobuf:"varint,3,opt,name=code,proto3,enum=vtrpc.Code" json:"code,omitempty"` unknownFields protoimpl.UnknownFields - - Message string `protobuf:"bytes,2,opt,name=message,proto3" json:"message,omitempty"` - Code Code `protobuf:"varint,3,opt,name=code,proto3,enum=vtrpc.Code" json:"code,omitempty"` + sizeCache protoimpl.SizeCache } func (x *RPCError) Reset() { @@ -373,7 +372,7 @@ func (x *RPCError) GetCode() Code { var File_vtrpc_proto protoreflect.FileDescriptor -var file_vtrpc_proto_rawDesc = []byte{ +var file_vtrpc_proto_rawDesc = string([]byte{ 0x0a, 0x0b, 0x76, 0x74, 0x72, 0x70, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x05, 0x76, 0x74, 0x72, 0x70, 0x63, 0x22, 0x82, 0x01, 0x0a, 0x08, 0x43, 0x61, 0x6c, 0x6c, 0x65, 0x72, 0x49, 0x44, 0x12, 0x1c, 0x0a, 0x09, 0x70, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x61, 0x6c, 0x18, 0x01, @@ -415,16 +414,16 @@ var file_vtrpc_proto_rawDesc = []byte{ 0x6f, 0x5a, 0x22, 0x76, 0x69, 0x74, 0x65, 0x73, 0x73, 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x69, 0x74, 0x65, 0x73, 0x73, 0x2f, 0x67, 0x6f, 0x2f, 0x76, 0x74, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x76, 0x74, 0x72, 0x70, 0x63, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} +}) var ( file_vtrpc_proto_rawDescOnce sync.Once - file_vtrpc_proto_rawDescData = file_vtrpc_proto_rawDesc + file_vtrpc_proto_rawDescData []byte ) func file_vtrpc_proto_rawDescGZIP() []byte { file_vtrpc_proto_rawDescOnce.Do(func() { - file_vtrpc_proto_rawDescData = protoimpl.X.CompressGZIP(file_vtrpc_proto_rawDescData) + file_vtrpc_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_vtrpc_proto_rawDesc), len(file_vtrpc_proto_rawDesc))) }) return file_vtrpc_proto_rawDescData } @@ -454,7 +453,7 @@ func file_vtrpc_proto_init() { out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_vtrpc_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_vtrpc_proto_rawDesc), len(file_vtrpc_proto_rawDesc)), NumEnums: 1, NumMessages: 2, NumExtensions: 0, @@ -466,7 +465,6 @@ func file_vtrpc_proto_init() { MessageInfos: file_vtrpc_proto_msgTypes, }.Build() File_vtrpc_proto = out.File - file_vtrpc_proto_rawDesc = nil file_vtrpc_proto_goTypes = nil file_vtrpc_proto_depIdxs = nil } diff --git a/go/vt/proto/vtrpc/vtrpc_vtproto.pb.go b/go/vt/proto/vtrpc/vtrpc_vtproto.pb.go index 23bc792e9ad..4334064e09e 100644 --- a/go/vt/proto/vtrpc/vtrpc_vtproto.pb.go +++ b/go/vt/proto/vtrpc/vtrpc_vtproto.pb.go @@ -1,5 +1,5 @@ // Code generated by protoc-gen-go-vtproto. DO NOT EDIT. -// protoc-gen-go-vtproto version: v0.6.1-0.20241011083415-71c992bc3c87 +// protoc-gen-go-vtproto version: v0.6.1-0.20241121165744-79df5c4772f2 // source: vtrpc.proto package vtrpc diff --git a/go/vt/proto/vttest/vttest.pb.go b/go/vt/proto/vttest/vttest.pb.go index ee78cc5231a..49b44e3e7c5 100644 --- a/go/vt/proto/vttest/vttest.pb.go +++ b/go/vt/proto/vttest/vttest.pb.go @@ -41,7 +41,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.35.1 +// protoc-gen-go v1.36.4 // protoc v3.21.3 // source: vttest.proto @@ -52,6 +52,7 @@ import ( protoimpl "google.golang.org/protobuf/runtime/protoimpl" reflect "reflect" sync "sync" + unsafe "unsafe" vschema "vitess.io/vitess/go/vt/proto/vschema" ) @@ -64,10 +65,7 @@ const ( // Shard describes a single shard in a keyspace. type Shard struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // name has to be unique in a keyspace. For unsharded keyspaces, it // should be '0'. For sharded keyspace, it should be derived from // the keyrange, like '-80' or '40-80'. @@ -76,6 +74,8 @@ type Shard struct { // globally unique. If not specified, we will by default use // 'vt__'. DbNameOverride string `protobuf:"bytes,2,opt,name=db_name_override,json=dbNameOverride,proto3" json:"db_name_override,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Shard) Reset() { @@ -124,10 +124,7 @@ func (x *Shard) GetDbNameOverride() string { // Keyspace describes a single keyspace. type Keyspace struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // name has to be unique in a VTTestTopology. Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` // shards inside this keyspace. Ignored if redirect is set. @@ -135,7 +132,9 @@ type Keyspace struct { // number of replica tablets to instantiate. This includes the primary tablet. ReplicaCount int32 `protobuf:"varint,6,opt,name=replica_count,json=replicaCount,proto3" json:"replica_count,omitempty"` // number of rdonly tablets to instantiate. - RdonlyCount int32 `protobuf:"varint,7,opt,name=rdonly_count,json=rdonlyCount,proto3" json:"rdonly_count,omitempty"` + RdonlyCount int32 `protobuf:"varint,7,opt,name=rdonly_count,json=rdonlyCount,proto3" json:"rdonly_count,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Keyspace) Reset() { @@ -198,10 +197,7 @@ func (x *Keyspace) GetRdonlyCount() int32 { // VTTestTopology describes the keyspaces in the topology. type VTTestTopology struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - + state protoimpl.MessageState `protogen:"open.v1"` // all keyspaces in the topology. Keyspaces []*Keyspace `protobuf:"bytes,1,rep,name=keyspaces,proto3" json:"keyspaces,omitempty"` // list of cells the keyspaces reside in. Vtgate is started in only the first cell. @@ -209,7 +205,9 @@ type VTTestTopology struct { // routing rules for the topology. RoutingRules *vschema.RoutingRules `protobuf:"bytes,3,opt,name=routing_rules,json=routingRules,proto3" json:"routing_rules,omitempty"` // mirror rules for the topology. - MirrorRules *vschema.MirrorRules `protobuf:"bytes,4,opt,name=mirror_rules,json=mirrorRules,proto3" json:"mirror_rules,omitempty"` + MirrorRules *vschema.MirrorRules `protobuf:"bytes,4,opt,name=mirror_rules,json=mirrorRules,proto3" json:"mirror_rules,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *VTTestTopology) Reset() { @@ -272,7 +270,7 @@ func (x *VTTestTopology) GetMirrorRules() *vschema.MirrorRules { var File_vttest_proto protoreflect.FileDescriptor -var file_vttest_proto_rawDesc = []byte{ +var file_vttest_proto_rawDesc = string([]byte{ 0x0a, 0x0c, 0x76, 0x74, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x06, 0x76, 0x74, 0x74, 0x65, 0x73, 0x74, 0x1a, 0x0d, 0x76, 0x73, 0x63, 0x68, 0x65, 0x6d, 0x61, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x45, 0x0a, 0x05, 0x53, 0x68, 0x61, 0x72, 0x64, 0x12, 0x12, @@ -306,16 +304,16 @@ var file_vttest_proto_rawDesc = []byte{ 0x76, 0x69, 0x74, 0x65, 0x73, 0x73, 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x69, 0x74, 0x65, 0x73, 0x73, 0x2f, 0x67, 0x6f, 0x2f, 0x76, 0x74, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x76, 0x74, 0x74, 0x65, 0x73, 0x74, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} +}) var ( file_vttest_proto_rawDescOnce sync.Once - file_vttest_proto_rawDescData = file_vttest_proto_rawDesc + file_vttest_proto_rawDescData []byte ) func file_vttest_proto_rawDescGZIP() []byte { file_vttest_proto_rawDescOnce.Do(func() { - file_vttest_proto_rawDescData = protoimpl.X.CompressGZIP(file_vttest_proto_rawDescData) + file_vttest_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_vttest_proto_rawDesc), len(file_vttest_proto_rawDesc))) }) return file_vttest_proto_rawDescData } @@ -349,7 +347,7 @@ func file_vttest_proto_init() { out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_vttest_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_vttest_proto_rawDesc), len(file_vttest_proto_rawDesc)), NumEnums: 0, NumMessages: 3, NumExtensions: 0, @@ -360,7 +358,6 @@ func file_vttest_proto_init() { MessageInfos: file_vttest_proto_msgTypes, }.Build() File_vttest_proto = out.File - file_vttest_proto_rawDesc = nil file_vttest_proto_goTypes = nil file_vttest_proto_depIdxs = nil } diff --git a/go/vt/proto/vttest/vttest_vtproto.pb.go b/go/vt/proto/vttest/vttest_vtproto.pb.go index b6a887ad41f..fe862b84d04 100644 --- a/go/vt/proto/vttest/vttest_vtproto.pb.go +++ b/go/vt/proto/vttest/vttest_vtproto.pb.go @@ -1,5 +1,5 @@ // Code generated by protoc-gen-go-vtproto. DO NOT EDIT. -// protoc-gen-go-vtproto version: v0.6.1-0.20241011083415-71c992bc3c87 +// protoc-gen-go-vtproto version: v0.6.1-0.20241121165744-79df5c4772f2 // source: vttest.proto package vttest diff --git a/go/vt/proto/vttime/vttime.pb.go b/go/vt/proto/vttime/vttime.pb.go index 957ca7f0969..305bff16f59 100644 --- a/go/vt/proto/vttime/vttime.pb.go +++ b/go/vt/proto/vttime/vttime.pb.go @@ -17,7 +17,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.35.1 +// protoc-gen-go v1.36.4 // protoc v3.21.3 // source: vttime.proto @@ -28,6 +28,7 @@ import ( protoimpl "google.golang.org/protobuf/runtime/protoimpl" reflect "reflect" sync "sync" + unsafe "unsafe" ) const ( @@ -40,12 +41,11 @@ const ( // Time represents a time stamp in nanoseconds. In go, use logutil library // to convert times. type Time struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Seconds int64 `protobuf:"varint,1,opt,name=seconds,proto3" json:"seconds,omitempty"` + Nanoseconds int32 `protobuf:"varint,2,opt,name=nanoseconds,proto3" json:"nanoseconds,omitempty"` unknownFields protoimpl.UnknownFields - - Seconds int64 `protobuf:"varint,1,opt,name=seconds,proto3" json:"seconds,omitempty"` - Nanoseconds int32 `protobuf:"varint,2,opt,name=nanoseconds,proto3" json:"nanoseconds,omitempty"` + sizeCache protoimpl.SizeCache } func (x *Time) Reset() { @@ -93,12 +93,11 @@ func (x *Time) GetNanoseconds() int32 { } type Duration struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + Seconds int64 `protobuf:"varint,1,opt,name=seconds,proto3" json:"seconds,omitempty"` + Nanos int32 `protobuf:"varint,2,opt,name=nanos,proto3" json:"nanos,omitempty"` unknownFields protoimpl.UnknownFields - - Seconds int64 `protobuf:"varint,1,opt,name=seconds,proto3" json:"seconds,omitempty"` - Nanos int32 `protobuf:"varint,2,opt,name=nanos,proto3" json:"nanos,omitempty"` + sizeCache protoimpl.SizeCache } func (x *Duration) Reset() { @@ -147,7 +146,7 @@ func (x *Duration) GetNanos() int32 { var File_vttime_proto protoreflect.FileDescriptor -var file_vttime_proto_rawDesc = []byte{ +var file_vttime_proto_rawDesc = string([]byte{ 0x0a, 0x0c, 0x76, 0x74, 0x74, 0x69, 0x6d, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x06, 0x76, 0x74, 0x74, 0x69, 0x6d, 0x65, 0x22, 0x42, 0x0a, 0x04, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, @@ -161,16 +160,16 @@ var file_vttime_proto_rawDesc = []byte{ 0x2e, 0x69, 0x6f, 0x2f, 0x76, 0x69, 0x74, 0x65, 0x73, 0x73, 0x2f, 0x67, 0x6f, 0x2f, 0x76, 0x74, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x76, 0x74, 0x74, 0x69, 0x6d, 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} +}) var ( file_vttime_proto_rawDescOnce sync.Once - file_vttime_proto_rawDescData = file_vttime_proto_rawDesc + file_vttime_proto_rawDescData []byte ) func file_vttime_proto_rawDescGZIP() []byte { file_vttime_proto_rawDescOnce.Do(func() { - file_vttime_proto_rawDescData = protoimpl.X.CompressGZIP(file_vttime_proto_rawDescData) + file_vttime_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_vttime_proto_rawDesc), len(file_vttime_proto_rawDesc))) }) return file_vttime_proto_rawDescData } @@ -197,7 +196,7 @@ func file_vttime_proto_init() { out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_vttime_proto_rawDesc, + RawDescriptor: unsafe.Slice(unsafe.StringData(file_vttime_proto_rawDesc), len(file_vttime_proto_rawDesc)), NumEnums: 0, NumMessages: 2, NumExtensions: 0, @@ -208,7 +207,6 @@ func file_vttime_proto_init() { MessageInfos: file_vttime_proto_msgTypes, }.Build() File_vttime_proto = out.File - file_vttime_proto_rawDesc = nil file_vttime_proto_goTypes = nil file_vttime_proto_depIdxs = nil } diff --git a/go/vt/proto/vttime/vttime_vtproto.pb.go b/go/vt/proto/vttime/vttime_vtproto.pb.go index 08e712e7139..191684f2c98 100644 --- a/go/vt/proto/vttime/vttime_vtproto.pb.go +++ b/go/vt/proto/vttime/vttime_vtproto.pb.go @@ -1,5 +1,5 @@ // Code generated by protoc-gen-go-vtproto. DO NOT EDIT. -// protoc-gen-go-vtproto version: v0.6.1-0.20241011083415-71c992bc3c87 +// protoc-gen-go-vtproto version: v0.6.1-0.20241121165744-79df5c4772f2 // source: vttime.proto package vttime diff --git a/go/vt/schema/cached_size.go b/go/vt/schema/cached_size.go index a2ea8f55deb..5ed67c01696 100644 --- a/go/vt/schema/cached_size.go +++ b/go/vt/schema/cached_size.go @@ -19,6 +19,17 @@ package schema import hack "vitess.io/vitess/go/hack" +func (cached *DDLStrategy) CachedSize(alloc bool) int64 { + if cached == nil { + return int64(0) + } + size := int64(0) + if alloc { + size += hack.RuntimeAllocSize(int64(16)) + } + size += hack.RuntimeAllocSize(int64(len(*cached))) + return size +} func (cached *DDLStrategySetting) CachedSize(alloc bool) int64 { if cached == nil { return int64(0) diff --git a/go/vt/schemadiff/errors.go b/go/vt/schemadiff/errors.go index c938e736206..74d1c231a19 100644 --- a/go/vt/schemadiff/errors.go +++ b/go/vt/schemadiff/errors.go @@ -497,3 +497,21 @@ type NonDeterministicDefaultError struct { func (e *NonDeterministicDefaultError) Error() string { return fmt.Sprintf("column %s.%s default value uses non-deterministic function: %s", sqlescape.EscapeID(e.Table), sqlescape.EscapeID(e.Column), e.Function) } + +type DuplicateCheckConstraintNameError struct { + Table string + Constraint string +} + +func (e *DuplicateCheckConstraintNameError) Error() string { + return fmt.Sprintf("duplicate check constraint name %s in table %s", sqlescape.EscapeID(e.Constraint), sqlescape.EscapeID(e.Table)) +} + +type DuplicateForeignKeyConstraintNameError struct { + Table string + Constraint string +} + +func (e *DuplicateForeignKeyConstraintNameError) Error() string { + return fmt.Sprintf("duplicate foreign key constraint name %s in table %s", sqlescape.EscapeID(e.Constraint), sqlescape.EscapeID(e.Table)) +} diff --git a/go/vt/schemadiff/schema.go b/go/vt/schemadiff/schema.go index 3b42d6cf42d..bbd1258070e 100644 --- a/go/vt/schemadiff/schema.go +++ b/go/vt/schemadiff/schema.go @@ -415,6 +415,27 @@ func (s *Schema) normalize(hints *DiffHints) error { } } } + + // Validate uniqueness of check constraint and of foreign key constraint names + fkConstraintNames := map[string]bool{} + checkConstraintNames := map[string]bool{} + for _, t := range s.tables { + for _, cs := range t.TableSpec.Constraints { + if _, ok := cs.Details.(*sqlparser.ForeignKeyDefinition); ok { + if _, ok := fkConstraintNames[cs.Name.String()]; ok { + errs = errors.Join(errs, &DuplicateForeignKeyConstraintNameError{Table: t.Name(), Constraint: cs.Name.String()}) + } + fkConstraintNames[cs.Name.String()] = true + } + if _, ok := cs.Details.(*sqlparser.CheckConstraintDefinition); ok { + if _, ok := checkConstraintNames[cs.Name.String()]; ok { + errs = errors.Join(errs, &DuplicateCheckConstraintNameError{Table: t.Name(), Constraint: cs.Name.String()}) + } + checkConstraintNames[cs.Name.String()] = true + } + } + } + return errs } diff --git a/go/vt/schemadiff/schema_diff_test.go b/go/vt/schemadiff/schema_diff_test.go index b39166451b2..70bdd9ed54b 100644 --- a/go/vt/schemadiff/schema_diff_test.go +++ b/go/vt/schemadiff/schema_diff_test.go @@ -1327,6 +1327,10 @@ func TestSchemaDiff(t *testing.T) { // TestDiffFiles diffs two schema files on the local file system. It requires the $TEST_SCHEMADIFF_DIFF_FILES // environment variable to be set to a comma-separated list of two file paths, e.g. "/tmp/from.sql,/tmp/to.sql". // If the variable is unspecified, the test is skipped. It is useful for ad-hoc testing of schema diffs. +// The way to run this test is: +// ```sh +// $ TEST_SCHEMADIFF_DIFF_FILES=/tmp/1.sql,/tmp/2.sql go test -v -count=1 -run TestDiffFiles ./go/vt/schemadiff/ +// ``` func TestDiffFiles(t *testing.T) { ctx := context.Background() diff --git a/go/vt/schemadiff/schema_test.go b/go/vt/schemadiff/schema_test.go index 8a4f54269cd..1710cec12c7 100644 --- a/go/vt/schemadiff/schema_test.go +++ b/go/vt/schemadiff/schema_test.go @@ -287,11 +287,11 @@ func TestTableForeignKeyOrdering(t *testing.T) { "create table t11 (id int primary key, i int, key ix (i), constraint f12 foreign key (i) references t12(id) on delete restrict, constraint f20 foreign key (i) references t20(id) on delete restrict)", "create table t15(id int, primary key(id))", "create view v09 as select * from v13, t17", - "create table t20 (id int primary key, i int, key ix (i), constraint f15 foreign key (i) references t15(id) on delete restrict)", + "create table t20 (id int primary key, i int, key ix (i), constraint f2015 foreign key (i) references t15(id) on delete restrict)", "create view v13 as select * from t20", - "create table t12 (id int primary key, i int, key ix (i), constraint f15 foreign key (i) references t15(id) on delete restrict)", - "create table t17 (id int primary key, i int, key ix (i), constraint f11 foreign key (i) references t11(id) on delete restrict, constraint f15 foreign key (i) references t15(id) on delete restrict)", - "create table t16 (id int primary key, i int, key ix (i), constraint f11 foreign key (i) references t11(id) on delete restrict, constraint f15 foreign key (i) references t15(id) on delete restrict)", + "create table t12 (id int primary key, i int, key ix (i), constraint f1215 foreign key (i) references t15(id) on delete restrict)", + "create table t17 (id int primary key, i int, key ix (i), constraint f1711 foreign key (i) references t11(id) on delete restrict, constraint f1715 foreign key (i) references t15(id) on delete restrict)", + "create table t16 (id int primary key, i int, key ix (i), constraint f1611 foreign key (i) references t11(id) on delete restrict, constraint f1615 foreign key (i) references t15(id) on delete restrict)", "create table t14 (id int primary key, i int, key ix (i), constraint f14 foreign key (i) references t14(id) on delete restrict)", } expectSortedTableNames := []string{ @@ -522,6 +522,54 @@ func TestInvalidSchema(t *testing.T) { { schema: "create table post (id varchar(191) charset utf8mb4 not null, `title` text, primary key (`id`)); create table post_fks (id varchar(191) not null, `post_id` varchar(191) collate utf8mb4_0900_ai_ci, primary key (id), constraint post_fk foreign key (post_id) references post (id)) charset utf8mb4, collate utf8mb4_0900_as_ci;", }, + // constaint names + { + schema: `create table t1 (id int primary key, CONSTRAINT const_id CHECK (id > 0))`, + }, + { + schema: `create table t1 (id int primary key, CONSTRAINT const_id1 CHECK (id > 0), CONSTRAINT const_id2 CHECK (id < 10));`, + }, + { + schema: ` + create table t1 (id int primary key, CONSTRAINT const_id CHECK (id > 0), CONSTRAINT const_id CHECK (id < 10)); + `, + expectErr: &DuplicateCheckConstraintNameError{Table: "t1", Constraint: "const_id"}, + }, + { + schema: ` + create table t1 (id int primary key, CONSTRAINT const_id1 CHECK (id > 0)); + create table t2 (id int primary key, CONSTRAINT const_id2 CHECK (id > 0)); + `, + }, + { + schema: ` + create table t1 (id int primary key, CONSTRAINT const_id CHECK (id > 0)); + create table t2 (id int primary key, CONSTRAINT const_id CHECK (id > 0)); + `, + expectErr: &DuplicateCheckConstraintNameError{Table: "t2", Constraint: "const_id"}, + }, + { + // OK for foreign key constraint and check constraint to have same name + schema: ` + create table t1 (id int primary key, CONSTRAINT const_id CHECK (id > 0)); + create table t2 (id int primary key, CONSTRAINT const_id FOREIGN KEY (id) REFERENCES t1 (id) ON DELETE CASCADE); + `, + }, + { + schema: ` + create table t1 (id int primary key, CONSTRAINT const_id CHECK (id > 0)); + create table t2 (id int primary key, CONSTRAINT const_id FOREIGN KEY (id) REFERENCES t1 (id) ON DELETE CASCADE); + create table t3 (id int primary key, CONSTRAINT const_id FOREIGN KEY (id) REFERENCES t1 (id) ON DELETE CASCADE); + `, + expectErr: &DuplicateForeignKeyConstraintNameError{Table: "t3", Constraint: "const_id"}, + }, + { + schema: ` + create table t1 (id int primary key, CONSTRAINT const_id CHECK (id > 0)); + create table t2 (id int primary key, CONSTRAINT const_id FOREIGN KEY (id) REFERENCES t1 (id) ON DELETE CASCADE, CONSTRAINT const_id FOREIGN KEY (id) REFERENCES t1 (id) ON DELETE CASCADE); + `, + expectErr: &DuplicateForeignKeyConstraintNameError{Table: "t2", Constraint: "const_id"}, + }, } for _, ts := range tt { t.Run(ts.schema, func(t *testing.T) { diff --git a/go/vt/sqlparser/ast_funcs.go b/go/vt/sqlparser/ast_funcs.go index e28c17a4745..fbf5a346c98 100644 --- a/go/vt/sqlparser/ast_funcs.go +++ b/go/vt/sqlparser/ast_funcs.go @@ -2261,6 +2261,8 @@ func (columnFormat ColumnFormat) ToString() string { return keywordStrings[DYNAMIC] case DefaultFormat: return keywordStrings[DEFAULT] + case CompressedFormat: + return keywordStrings[COMPRESSED] default: return "Unknown column format type" } diff --git a/go/vt/sqlparser/ast_rewriting.go b/go/vt/sqlparser/ast_rewriting.go deleted file mode 100644 index 05e7e290fc1..00000000000 --- a/go/vt/sqlparser/ast_rewriting.go +++ /dev/null @@ -1,557 +0,0 @@ -/* -Copyright 2020 The Vitess Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package sqlparser - -import ( - "strconv" - "strings" - - querypb "vitess.io/vitess/go/vt/proto/query" - vtrpcpb "vitess.io/vitess/go/vt/proto/vtrpc" - "vitess.io/vitess/go/vt/sysvars" - "vitess.io/vitess/go/vt/vterrors" -) - -var HasValueSubQueryBaseName = []byte("__sq_has_values") - -// SQLSelectLimitUnset default value for sql_select_limit not set. -const SQLSelectLimitUnset = -1 - -// RewriteASTResult contains the rewritten ast and meta information about it -type RewriteASTResult struct { - *BindVarNeeds - AST Statement // The rewritten AST -} - -type VSchemaViews interface { - FindView(name TableName) TableStatement -} - -// PrepareAST will normalize the query -func PrepareAST( - in Statement, - reservedVars *ReservedVars, - bindVars map[string]*querypb.BindVariable, - parameterize bool, - keyspace string, - selectLimit int, - setVarComment string, - sysVars map[string]string, - fkChecksState *bool, - views VSchemaViews, -) (*RewriteASTResult, error) { - if parameterize { - err := Normalize(in, reservedVars, bindVars) - if err != nil { - return nil, err - } - } - return RewriteAST(in, keyspace, selectLimit, setVarComment, sysVars, fkChecksState, views) -} - -// RewriteAST rewrites the whole AST, replacing function calls and adding column aliases to queries. -// SET_VAR comments are also added to the AST if required. -func RewriteAST( - in Statement, - keyspace string, - selectLimit int, - setVarComment string, - sysVars map[string]string, - fkChecksState *bool, - views VSchemaViews, -) (*RewriteASTResult, error) { - er := newASTRewriter(keyspace, selectLimit, setVarComment, sysVars, fkChecksState, views) - er.shouldRewriteDatabaseFunc = shouldRewriteDatabaseFunc(in) - result := SafeRewrite(in, er.rewriteDown, er.rewriteUp) - if er.err != nil { - return nil, er.err - } - - out, ok := result.(Statement) - if !ok { - return nil, vterrors.Errorf(vtrpcpb.Code_INTERNAL, "statement rewriting returned a non statement: %s", String(out)) - } - - r := &RewriteASTResult{ - AST: out, - BindVarNeeds: er.bindVars, - } - return r, nil -} - -func shouldRewriteDatabaseFunc(in Statement) bool { - selct, ok := in.(*Select) - if !ok { - return false - } - if len(selct.From) != 1 { - return false - } - aliasedTable, ok := selct.From[0].(*AliasedTableExpr) - if !ok { - return false - } - tableName, ok := aliasedTable.Expr.(TableName) - if !ok { - return false - } - return tableName.Name.String() == "dual" -} - -type astRewriter struct { - bindVars *BindVarNeeds - shouldRewriteDatabaseFunc bool - err error - - // we need to know this to make a decision if we can safely rewrite JOIN USING => JOIN ON - hasStarInSelect bool - - keyspace string - selectLimit int - setVarComment string - fkChecksState *bool - sysVars map[string]string - views VSchemaViews -} - -func newASTRewriter(keyspace string, selectLimit int, setVarComment string, sysVars map[string]string, fkChecksState *bool, views VSchemaViews) *astRewriter { - return &astRewriter{ - bindVars: &BindVarNeeds{}, - keyspace: keyspace, - selectLimit: selectLimit, - setVarComment: setVarComment, - fkChecksState: fkChecksState, - sysVars: sysVars, - views: views, - } -} - -const ( - // LastInsertIDName is a reserved bind var name for last_insert_id() - LastInsertIDName = "__lastInsertId" - - // DBVarName is a reserved bind var name for database() - DBVarName = "__vtdbname" - - // FoundRowsName is a reserved bind var name for found_rows() - FoundRowsName = "__vtfrows" - - // RowCountName is a reserved bind var name for row_count() - RowCountName = "__vtrcount" - - // UserDefinedVariableName is what we prepend bind var names for user defined variables - UserDefinedVariableName = "__vtudv" -) - -func (er *astRewriter) rewriteAliasedExpr(node *AliasedExpr) (*BindVarNeeds, error) { - inner := newASTRewriter(er.keyspace, er.selectLimit, er.setVarComment, er.sysVars, nil, er.views) - inner.shouldRewriteDatabaseFunc = er.shouldRewriteDatabaseFunc - tmp := SafeRewrite(node.Expr, inner.rewriteDown, inner.rewriteUp) - newExpr, ok := tmp.(Expr) - if !ok { - return nil, vterrors.Errorf(vtrpcpb.Code_INTERNAL, "failed to rewrite AST. function expected to return Expr returned a %s", String(tmp)) - } - node.Expr = newExpr - return inner.bindVars, nil -} - -func (er *astRewriter) rewriteDown(node SQLNode, _ SQLNode) bool { - switch node := node.(type) { - case *Select: - er.visitSelect(node) - case *PrepareStmt, *ExecuteStmt: - return false // nothing to rewrite here. - } - return true -} - -func (er *astRewriter) rewriteUp(cursor *Cursor) bool { - // Add SET_VAR comment to this node if it supports it and is needed - if supportOptimizerHint, supportsOptimizerHint := cursor.Node().(SupportOptimizerHint); supportsOptimizerHint { - if er.setVarComment != "" { - newComments, err := supportOptimizerHint.GetParsedComments().AddQueryHint(er.setVarComment) - if err != nil { - er.err = err - return false - } - supportOptimizerHint.SetComments(newComments) - } - if er.fkChecksState != nil { - newComments := supportOptimizerHint.GetParsedComments().SetMySQLSetVarValue(sysvars.ForeignKeyChecks, FkChecksStateString(er.fkChecksState)) - supportOptimizerHint.SetComments(newComments) - } - } - - switch node := cursor.Node().(type) { - case *Union: - er.rewriteUnion(node) - case *FuncExpr: - er.funcRewrite(cursor, node) - case *Variable: - er.rewriteVariable(cursor, node) - case *Subquery: - er.unnestSubQueries(cursor, node) - case *NotExpr: - er.rewriteNotExpr(cursor, node) - case *AliasedTableExpr: - er.rewriteAliasedTable(cursor, node) - case *ShowBasic: - er.rewriteShowBasic(node) - case *ExistsExpr: - er.existsRewrite(cursor, node) - case DistinctableAggr: - er.rewriteDistinctableAggr(cursor, node) - } - return true -} - -func (er *astRewriter) rewriteUnion(node *Union) { - // set select limit if explicitly not set when sql_select_limit is set on the connection. - if er.selectLimit > 0 && node.Limit == nil { - node.Limit = &Limit{Rowcount: NewIntLiteral(strconv.Itoa(er.selectLimit))} - } -} - -func (er *astRewriter) rewriteAliasedTable(cursor *Cursor, node *AliasedTableExpr) { - aliasTableName, ok := node.Expr.(TableName) - if !ok { - return - } - - // Qualifier should not be added to dual table - tblName := aliasTableName.Name.String() - if tblName == "dual" { - return - } - - if SystemSchema(er.keyspace) { - if aliasTableName.Qualifier.IsEmpty() { - aliasTableName.Qualifier = NewIdentifierCS(er.keyspace) - node.Expr = aliasTableName - cursor.Replace(node) - } - return - } - - // Could we be dealing with a view? - if er.views == nil { - return - } - view := er.views.FindView(aliasTableName) - if view == nil { - return - } - - // Aha! It's a view. Let's replace it with a derived table - node.Expr = &DerivedTable{Select: Clone(view)} // TODO: this is a bit hacky. We want to update the schema def so it contains new types - if node.As.IsEmpty() { - node.As = NewIdentifierCS(tblName) - } -} - -func (er *astRewriter) rewriteShowBasic(node *ShowBasic) { - if node.Command == VariableGlobal || node.Command == VariableSession { - varsToAdd := sysvars.GetInterestingVariables() - for _, sysVar := range varsToAdd { - er.bindVars.AddSysVar(sysVar) - } - } -} - -func (er *astRewriter) rewriteNotExpr(cursor *Cursor, node *NotExpr) { - switch inner := node.Expr.(type) { - case *ComparisonExpr: - // not col = 42 => col != 42 - // not col > 42 => col <= 42 - // etc - canChange, inverse := inverseOp(inner.Operator) - if canChange { - inner.Operator = inverse - cursor.Replace(inner) - } - case *NotExpr: - // not not true => true - cursor.Replace(inner.Expr) - case BoolVal: - // not true => false - inner = !inner - cursor.Replace(inner) - } -} - -func (er *astRewriter) rewriteVariable(cursor *Cursor, node *Variable) { - // Iff we are in SET, we want to change the scope of variables if a modifier has been set - // and only on the lhs of the assignment: - // set session sql_mode = @someElse - // here we need to change the scope of `sql_mode` and not of `@someElse` - if v, isSet := cursor.Parent().(*SetExpr); isSet && v.Var == node { - return - } - // no rewriting for global scope variable. - // this should be returned from the underlying database. - switch node.Scope { - case VariableScope: - er.udvRewrite(cursor, node) - case SessionScope, NextTxScope: - er.sysVarRewrite(cursor, node) - } -} - -func (er *astRewriter) visitSelect(node *Select) { - for _, col := range node.SelectExprs { - if _, hasStar := col.(*StarExpr); hasStar { - er.hasStarInSelect = true - continue - } - - aliasedExpr, ok := col.(*AliasedExpr) - if !ok || aliasedExpr.As.NotEmpty() { - continue - } - buf := NewTrackedBuffer(nil) - aliasedExpr.Expr.Format(buf) - // select last_insert_id() -> select :__lastInsertId as `last_insert_id()` - innerBindVarNeeds, err := er.rewriteAliasedExpr(aliasedExpr) - if err != nil { - er.err = err - return - } - if innerBindVarNeeds.HasRewrites() { - aliasedExpr.As = NewIdentifierCI(buf.String()) - } - er.bindVars.MergeWith(innerBindVarNeeds) - - } - // set select limit if explicitly not set when sql_select_limit is set on the connection. - if er.selectLimit > 0 && node.Limit == nil { - node.Limit = &Limit{Rowcount: NewIntLiteral(strconv.Itoa(er.selectLimit))} - } -} - -func inverseOp(i ComparisonExprOperator) (bool, ComparisonExprOperator) { - switch i { - case EqualOp: - return true, NotEqualOp - case LessThanOp: - return true, GreaterEqualOp - case GreaterThanOp: - return true, LessEqualOp - case LessEqualOp: - return true, GreaterThanOp - case GreaterEqualOp: - return true, LessThanOp - case NotEqualOp: - return true, EqualOp - case InOp: - return true, NotInOp - case NotInOp: - return true, InOp - case LikeOp: - return true, NotLikeOp - case NotLikeOp: - return true, LikeOp - case RegexpOp: - return true, NotRegexpOp - case NotRegexpOp: - return true, RegexpOp - } - - return false, i -} - -func (er *astRewriter) sysVarRewrite(cursor *Cursor, node *Variable) { - lowered := node.Name.Lowered() - - var found bool - if er.sysVars != nil { - _, found = er.sysVars[lowered] - } - - switch lowered { - case sysvars.Autocommit.Name, - sysvars.Charset.Name, - sysvars.ClientFoundRows.Name, - sysvars.DDLStrategy.Name, - sysvars.MigrationContext.Name, - sysvars.Names.Name, - sysvars.TransactionMode.Name, - sysvars.ReadAfterWriteGTID.Name, - sysvars.ReadAfterWriteTimeOut.Name, - sysvars.SessionEnableSystemSettings.Name, - sysvars.SessionTrackGTIDs.Name, - sysvars.SessionUUID.Name, - sysvars.SkipQueryPlanCache.Name, - sysvars.Socket.Name, - sysvars.SQLSelectLimit.Name, - sysvars.Version.Name, - sysvars.VersionComment.Name, - sysvars.QueryTimeout.Name, - sysvars.Workload.Name: - found = true - } - - if found { - cursor.Replace(bindVarExpression("__vt" + lowered)) - er.bindVars.AddSysVar(lowered) - } -} - -func (er *astRewriter) udvRewrite(cursor *Cursor, node *Variable) { - udv := strings.ToLower(node.Name.CompliantName()) - cursor.Replace(bindVarExpression(UserDefinedVariableName + udv)) - er.bindVars.AddUserDefVar(udv) -} - -var funcRewrites = map[string]string{ - "last_insert_id": LastInsertIDName, - "database": DBVarName, - "schema": DBVarName, - "found_rows": FoundRowsName, - "row_count": RowCountName, -} - -func (er *astRewriter) funcRewrite(cursor *Cursor, node *FuncExpr) { - lowered := node.Name.Lowered() - if lowered == "last_insert_id" && len(node.Exprs) > 0 { - // if we are dealing with is LAST_INSERT_ID() with an argument, we don't need to rewrite it. - // with an argument, this is an identity function that will update the session state and - // sets the correct fields in the OK TCP packet that we send back - return - } - bindVar, found := funcRewrites[lowered] - if !found || (bindVar == DBVarName && !er.shouldRewriteDatabaseFunc) { - return - } - if len(node.Exprs) > 0 { - er.err = vterrors.Errorf(vtrpcpb.Code_UNIMPLEMENTED, "Argument to %s() not supported", lowered) - return - } - cursor.Replace(bindVarExpression(bindVar)) - er.bindVars.AddFuncResult(bindVar) -} - -func (er *astRewriter) unnestSubQueries(cursor *Cursor, subquery *Subquery) { - if _, isExists := cursor.Parent().(*ExistsExpr); isExists { - return - } - sel, isSimpleSelect := subquery.Select.(*Select) - if !isSimpleSelect { - return - } - - if len(sel.SelectExprs) != 1 || - len(sel.OrderBy) != 0 || - sel.GroupBy != nil || - len(sel.From) != 1 || - sel.Where != nil || - sel.Having != nil || - sel.Limit != nil || sel.Lock != NoLock { - return - } - - aliasedTable, ok := sel.From[0].(*AliasedTableExpr) - if !ok { - return - } - table, ok := aliasedTable.Expr.(TableName) - if !ok || table.Name.String() != "dual" { - return - } - expr, ok := sel.SelectExprs[0].(*AliasedExpr) - if !ok { - return - } - _, isColName := expr.Expr.(*ColName) - if isColName { - // If we find a single col-name in a `dual` subquery, we can be pretty sure the user is returning a column - // already projected. - // `select 1 as x, (select x)` - // is perfectly valid - any aliased columns to the left are available inside subquery scopes - return - } - er.bindVars.NoteRewrite() - // we need to make sure that the inner expression also gets rewritten, - // so we fire off another rewriter traversal here - rewritten := SafeRewrite(expr.Expr, er.rewriteDown, er.rewriteUp) - - // Here we need to handle the subquery rewrite in case in occurs in an IN clause - // For example, SELECT id FROM user WHERE id IN (SELECT 1 FROM DUAL) - // Here we cannot rewrite the query to SELECT id FROM user WHERE id IN 1, since that is syntactically wrong - // We must rewrite it to SELECT id FROM user WHERE id IN (1) - // Find more cases in the test file - rewrittenExpr, isExpr := rewritten.(Expr) - _, isColTuple := rewritten.(ColTuple) - comparisonExpr, isCompExpr := cursor.Parent().(*ComparisonExpr) - // Check that the parent is a comparison operator with IN or NOT IN operation. - // Also, if rewritten is already a ColTuple (like a subquery), then we do not need this - // We also need to check that rewritten is an Expr, if it is then we can rewrite it as a ValTuple - if isCompExpr && (comparisonExpr.Operator == InOp || comparisonExpr.Operator == NotInOp) && !isColTuple && isExpr { - cursor.Replace(ValTuple{rewrittenExpr}) - return - } - - cursor.Replace(rewritten) -} - -func (er *astRewriter) existsRewrite(cursor *Cursor, node *ExistsExpr) { - sel, ok := node.Subquery.Select.(*Select) - if !ok { - return - } - - if sel.Having != nil { - // If the query has HAVING, we can't take any shortcuts - return - } - - if sel.GroupBy == nil && sel.SelectExprs.AllAggregation() { - // in these situations, we are guaranteed to always get a non-empty result, - // so we can replace the EXISTS with a literal true - cursor.Replace(BoolVal(true)) - } - - // If we are not doing HAVING, we can safely replace all select expressions with a - // single `1` and remove any grouping - sel.SelectExprs = SelectExprs{ - &AliasedExpr{Expr: NewIntLiteral("1")}, - } - sel.GroupBy = nil -} - -// rewriteDistinctableAggr removed Distinct from Max and Min Aggregations as it does not impact the result. But, makes the plan simpler. -func (er *astRewriter) rewriteDistinctableAggr(cursor *Cursor, node DistinctableAggr) { - if !node.IsDistinct() { - return - } - switch aggr := node.(type) { - case *Max, *Min: - aggr.SetDistinct(false) - er.bindVars.NoteRewrite() - } -} - -func bindVarExpression(name string) Expr { - return NewArgument(name) -} - -// SystemSchema returns true if the schema passed is system schema -func SystemSchema(schema string) bool { - return strings.EqualFold(schema, "information_schema") || - strings.EqualFold(schema, "performance_schema") || - strings.EqualFold(schema, "sys") || - strings.EqualFold(schema, "mysql") -} diff --git a/go/vt/sqlparser/ast_rewriting_test.go b/go/vt/sqlparser/ast_rewriting_test.go deleted file mode 100644 index 8b3e3d44c54..00000000000 --- a/go/vt/sqlparser/ast_rewriting_test.go +++ /dev/null @@ -1,565 +0,0 @@ -/* -Copyright 2019 The Vitess Authors. - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. -*/ - -package sqlparser - -import ( - "fmt" - "testing" - - "github.com/stretchr/testify/assert" - - "vitess.io/vitess/go/vt/sysvars" - - "github.com/stretchr/testify/require" -) - -type testCaseSetVar struct { - in, expected, setVarComment string -} - -type testCaseSysVar struct { - in, expected string - sysVar map[string]string -} - -type myTestCase struct { - in, expected string - liid, db, foundRows, rowCount, rawGTID, rawTimeout, sessTrackGTID bool - ddlStrategy, migrationContext, sessionUUID, sessionEnableSystemSettings bool - udv int - autocommit, foreignKeyChecks, clientFoundRows, skipQueryPlanCache, socket, queryTimeout bool - sqlSelectLimit, transactionMode, workload, version, versionComment bool -} - -func TestRewrites(in *testing.T) { - tests := []myTestCase{{ - in: "SELECT 42", - expected: "SELECT 42", - // no bindvar needs - }, { - in: "SELECT @@version", - expected: "SELECT :__vtversion as `@@version`", - version: true, - }, { - in: "SELECT @@query_timeout", - expected: "SELECT :__vtquery_timeout as `@@query_timeout`", - queryTimeout: true, - }, { - in: "SELECT @@version_comment", - expected: "SELECT :__vtversion_comment as `@@version_comment`", - versionComment: true, - }, { - in: "SELECT @@enable_system_settings", - expected: "SELECT :__vtenable_system_settings as `@@enable_system_settings`", - sessionEnableSystemSettings: true, - }, { - in: "SELECT last_insert_id()", - expected: "SELECT :__lastInsertId as `last_insert_id()`", - liid: true, - }, { - in: "SELECT database()", - expected: "SELECT :__vtdbname as `database()`", - db: true, - }, { - in: "SELECT database() from test", - expected: "SELECT database() from test", - // no bindvar needs - }, { - in: "SELECT last_insert_id() as test", - expected: "SELECT :__lastInsertId as test", - liid: true, - }, { - in: "SELECT last_insert_id() + database()", - expected: "SELECT :__lastInsertId + :__vtdbname as `last_insert_id() + database()`", - db: true, liid: true, - }, { - // unnest database() call - in: "select (select database()) from test", - expected: "select database() as `(select database() from dual)` from test", - // no bindvar needs - }, { - // unnest database() call - in: "select (select database() from dual) from test", - expected: "select database() as `(select database() from dual)` from test", - // no bindvar needs - }, { - in: "select (select database() from dual) from dual", - expected: "select :__vtdbname as `(select database() from dual)` from dual", - db: true, - }, { - // don't unnest solo columns - in: "select 1 as foobar, (select foobar)", - expected: "select 1 as foobar, (select foobar from dual) from dual", - }, { - in: "select id from user where database()", - expected: "select id from user where database()", - // no bindvar needs - }, { - in: "select table_name from information_schema.tables where table_schema = database()", - expected: "select table_name from information_schema.tables where table_schema = database()", - // no bindvar needs - }, { - in: "select schema()", - expected: "select :__vtdbname as `schema()`", - db: true, - }, { - in: "select found_rows()", - expected: "select :__vtfrows as `found_rows()`", - foundRows: true, - }, { - in: "select @`x y`", - expected: "select :__vtudvx_y as `@``x y``` from dual", - udv: 1, - }, { - in: "select id from t where id = @x and val = @y", - expected: "select id from t where id = :__vtudvx and val = :__vtudvy", - db: false, udv: 2, - }, { - in: "insert into t(id) values(@xyx)", - expected: "insert into t(id) values(:__vtudvxyx)", - db: false, udv: 1, - }, { - in: "select row_count()", - expected: "select :__vtrcount as `row_count()`", - rowCount: true, - }, { - in: "SELECT lower(database())", - expected: "SELECT lower(:__vtdbname) as `lower(database())`", - db: true, - }, { - in: "SELECT @@autocommit", - expected: "SELECT :__vtautocommit as `@@autocommit`", - autocommit: true, - }, { - in: "SELECT @@client_found_rows", - expected: "SELECT :__vtclient_found_rows as `@@client_found_rows`", - clientFoundRows: true, - }, { - in: "SELECT @@skip_query_plan_cache", - expected: "SELECT :__vtskip_query_plan_cache as `@@skip_query_plan_cache`", - skipQueryPlanCache: true, - }, { - in: "SELECT @@sql_select_limit", - expected: "SELECT :__vtsql_select_limit as `@@sql_select_limit`", - sqlSelectLimit: true, - }, { - in: "SELECT @@transaction_mode", - expected: "SELECT :__vttransaction_mode as `@@transaction_mode`", - transactionMode: true, - }, { - in: "SELECT @@workload", - expected: "SELECT :__vtworkload as `@@workload`", - workload: true, - }, { - in: "SELECT @@socket", - expected: "SELECT :__vtsocket as `@@socket`", - socket: true, - }, { - in: "select (select 42) from dual", - expected: "select 42 as `(select 42 from dual)` from dual", - }, { - in: "select * from user where col = (select 42)", - expected: "select * from user where col = 42", - }, { - in: "select * from (select 42) as t", // this is not an expression, and should not be rewritten - expected: "select * from (select 42) as t", - }, { - in: `select (select (select (select (select (select last_insert_id()))))) as x`, - expected: "select :__lastInsertId as x from dual", - liid: true, - }, { - in: `select * from user where col = @@ddl_strategy`, - expected: "select * from user where col = :__vtddl_strategy", - ddlStrategy: true, - }, { - in: `select * from user where col = @@migration_context`, - expected: "select * from user where col = :__vtmigration_context", - migrationContext: true, - }, { - in: `select * from user where col = @@read_after_write_gtid OR col = @@read_after_write_timeout OR col = @@session_track_gtids`, - expected: "select * from user where col = :__vtread_after_write_gtid or col = :__vtread_after_write_timeout or col = :__vtsession_track_gtids", - rawGTID: true, rawTimeout: true, sessTrackGTID: true, - }, { - in: "SELECT * FROM tbl WHERE id IN (SELECT 1 FROM dual)", - expected: "SELECT * FROM tbl WHERE id IN (1)", - }, { - in: "SELECT * FROM tbl WHERE id IN (SELECT last_insert_id() FROM dual)", - expected: "SELECT * FROM tbl WHERE id IN (:__lastInsertId)", - liid: true, - }, { - in: "SELECT * FROM tbl WHERE id IN (SELECT (SELECT 1 FROM dual WHERE 1 = 0) FROM dual)", - expected: "SELECT * FROM tbl WHERE id IN (SELECT 1 FROM dual WHERE 1 = 0)", - }, { - in: "SELECT * FROM tbl WHERE id IN (SELECT 1 FROM dual WHERE 1 = 0)", - expected: "SELECT * FROM tbl WHERE id IN (SELECT 1 FROM dual WHERE 1 = 0)", - }, { - in: "SELECT * FROM tbl WHERE id IN (SELECT 1,2 FROM dual)", - expected: "SELECT * FROM tbl WHERE id IN (SELECT 1,2 FROM dual)", - }, { - in: "SELECT * FROM tbl WHERE id IN (SELECT 1 FROM dual ORDER BY 1)", - expected: "SELECT * FROM tbl WHERE id IN (SELECT 1 FROM dual ORDER BY 1)", - }, { - in: "SELECT * FROM tbl WHERE id IN (SELECT id FROM user GROUP BY id)", - expected: "SELECT * FROM tbl WHERE id IN (SELECT id FROM user GROUP BY id)", - }, { - in: "SELECT * FROM tbl WHERE id IN (SELECT 1 FROM dual, user)", - expected: "SELECT * FROM tbl WHERE id IN (SELECT 1 FROM dual, user)", - }, { - in: "SELECT * FROM tbl WHERE id IN (SELECT 1 FROM dual limit 1)", - expected: "SELECT * FROM tbl WHERE id IN (SELECT 1 FROM dual limit 1)", - }, { - // SELECT * behaves different depending the join type used, so if that has been used, we won't rewrite - in: "SELECT * FROM A JOIN B USING (id1,id2,id3)", - expected: "SELECT * FROM A JOIN B USING (id1,id2,id3)", - }, { - in: "CALL proc(@foo)", - expected: "CALL proc(:__vtudvfoo)", - udv: 1, - }, { - in: "SELECT * FROM tbl WHERE NOT id = 42", - expected: "SELECT * FROM tbl WHERE id != 42", - }, { - in: "SELECT * FROM tbl WHERE not id < 12", - expected: "SELECT * FROM tbl WHERE id >= 12", - }, { - in: "SELECT * FROM tbl WHERE not id > 12", - expected: "SELECT * FROM tbl WHERE id <= 12", - }, { - in: "SELECT * FROM tbl WHERE not id <= 33", - expected: "SELECT * FROM tbl WHERE id > 33", - }, { - in: "SELECT * FROM tbl WHERE not id >= 33", - expected: "SELECT * FROM tbl WHERE id < 33", - }, { - in: "SELECT * FROM tbl WHERE not id != 33", - expected: "SELECT * FROM tbl WHERE id = 33", - }, { - in: "SELECT * FROM tbl WHERE not id in (1,2,3)", - expected: "SELECT * FROM tbl WHERE id not in (1,2,3)", - }, { - in: "SELECT * FROM tbl WHERE not id not in (1,2,3)", - expected: "SELECT * FROM tbl WHERE id in (1,2,3)", - }, { - in: "SELECT * FROM tbl WHERE not id not in (1,2,3)", - expected: "SELECT * FROM tbl WHERE id in (1,2,3)", - }, { - in: "SELECT * FROM tbl WHERE not id like '%foobar'", - expected: "SELECT * FROM tbl WHERE id not like '%foobar'", - }, { - in: "SELECT * FROM tbl WHERE not id not like '%foobar'", - expected: "SELECT * FROM tbl WHERE id like '%foobar'", - }, { - in: "SELECT * FROM tbl WHERE not id regexp '%foobar'", - expected: "SELECT * FROM tbl WHERE id not regexp '%foobar'", - }, { - in: "SELECT * FROM tbl WHERE not id not regexp '%foobar'", - expected: "select * from tbl where id regexp '%foobar'", - }, { - in: "SELECT * FROM tbl WHERE exists(select col1, col2 from other_table where foo > bar)", - expected: "SELECT * FROM tbl WHERE exists(select 1 from other_table where foo > bar)", - }, { - in: "SELECT * FROM tbl WHERE exists(select col1, col2 from other_table where foo > bar limit 100 offset 34)", - expected: "SELECT * FROM tbl WHERE exists(select 1 from other_table where foo > bar limit 100 offset 34)", - }, { - in: "SELECT * FROM tbl WHERE exists(select col1, col2, count(*) from other_table where foo > bar group by col1, col2)", - expected: "SELECT * FROM tbl WHERE exists(select 1 from other_table where foo > bar)", - }, { - in: "SELECT * FROM tbl WHERE exists(select col1, col2 from other_table where foo > bar group by col1, col2)", - expected: "SELECT * FROM tbl WHERE exists(select 1 from other_table where foo > bar)", - }, { - in: "SELECT * FROM tbl WHERE exists(select count(*) from other_table where foo > bar)", - expected: "SELECT * FROM tbl WHERE true", - }, { - in: "SELECT * FROM tbl WHERE exists(select col1, col2, count(*) from other_table where foo > bar group by col1, col2 having count(*) > 3)", - expected: "SELECT * FROM tbl WHERE exists(select col1, col2, count(*) from other_table where foo > bar group by col1, col2 having count(*) > 3)", - }, { - in: "SELECT id, name, salary FROM user_details", - expected: "SELECT id, name, salary FROM (select user.id, user.name, user_extra.salary from user join user_extra where user.id = user_extra.user_id) as user_details", - }, { - in: "select max(distinct c1), min(distinct c2), avg(distinct c3), sum(distinct c4), count(distinct c5), group_concat(distinct c6) from tbl", - expected: "select max(c1) as `max(distinct c1)`, min(c2) as `min(distinct c2)`, avg(distinct c3), sum(distinct c4), count(distinct c5), group_concat(distinct c6) from tbl", - }, { - in: "SHOW VARIABLES", - expected: "SHOW VARIABLES", - autocommit: true, - foreignKeyChecks: true, - clientFoundRows: true, - skipQueryPlanCache: true, - sqlSelectLimit: true, - transactionMode: true, - workload: true, - version: true, - versionComment: true, - ddlStrategy: true, - migrationContext: true, - sessionUUID: true, - sessionEnableSystemSettings: true, - rawGTID: true, - rawTimeout: true, - sessTrackGTID: true, - socket: true, - queryTimeout: true, - }, { - in: "SHOW GLOBAL VARIABLES", - expected: "SHOW GLOBAL VARIABLES", - autocommit: true, - foreignKeyChecks: true, - clientFoundRows: true, - skipQueryPlanCache: true, - sqlSelectLimit: true, - transactionMode: true, - workload: true, - version: true, - versionComment: true, - ddlStrategy: true, - migrationContext: true, - sessionUUID: true, - sessionEnableSystemSettings: true, - rawGTID: true, - rawTimeout: true, - sessTrackGTID: true, - socket: true, - queryTimeout: true, - }} - parser := NewTestParser() - for _, tc := range tests { - in.Run(tc.in, func(t *testing.T) { - require := require.New(t) - stmt, err := parser.Parse(tc.in) - require.NoError(err) - - result, err := RewriteAST( - stmt, - "ks", // passing `ks` just to test that no rewriting happens as it is not system schema - SQLSelectLimitUnset, - "", - nil, - nil, - &fakeViews{}, - ) - require.NoError(err) - - expected, err := parser.Parse(tc.expected) - require.NoError(err, "test expectation does not parse [%s]", tc.expected) - - s := String(expected) - assert := assert.New(t) - assert.Equal(s, String(result.AST)) - assert.Equal(tc.liid, result.NeedsFuncResult(LastInsertIDName), "should need last insert id") - assert.Equal(tc.db, result.NeedsFuncResult(DBVarName), "should need database name") - assert.Equal(tc.foundRows, result.NeedsFuncResult(FoundRowsName), "should need found rows") - assert.Equal(tc.rowCount, result.NeedsFuncResult(RowCountName), "should need row count") - assert.Equal(tc.udv, len(result.NeedUserDefinedVariables), "count of user defined variables") - assert.Equal(tc.autocommit, result.NeedsSysVar(sysvars.Autocommit.Name), "should need :__vtautocommit") - assert.Equal(tc.foreignKeyChecks, result.NeedsSysVar(sysvars.ForeignKeyChecks), "should need :__vtforeignKeyChecks") - assert.Equal(tc.clientFoundRows, result.NeedsSysVar(sysvars.ClientFoundRows.Name), "should need :__vtclientFoundRows") - assert.Equal(tc.skipQueryPlanCache, result.NeedsSysVar(sysvars.SkipQueryPlanCache.Name), "should need :__vtskipQueryPlanCache") - assert.Equal(tc.sqlSelectLimit, result.NeedsSysVar(sysvars.SQLSelectLimit.Name), "should need :__vtsqlSelectLimit") - assert.Equal(tc.transactionMode, result.NeedsSysVar(sysvars.TransactionMode.Name), "should need :__vttransactionMode") - assert.Equal(tc.workload, result.NeedsSysVar(sysvars.Workload.Name), "should need :__vtworkload") - assert.Equal(tc.queryTimeout, result.NeedsSysVar(sysvars.QueryTimeout.Name), "should need :__vtquery_timeout") - assert.Equal(tc.ddlStrategy, result.NeedsSysVar(sysvars.DDLStrategy.Name), "should need ddlStrategy") - assert.Equal(tc.migrationContext, result.NeedsSysVar(sysvars.MigrationContext.Name), "should need migrationContext") - assert.Equal(tc.sessionUUID, result.NeedsSysVar(sysvars.SessionUUID.Name), "should need sessionUUID") - assert.Equal(tc.sessionEnableSystemSettings, result.NeedsSysVar(sysvars.SessionEnableSystemSettings.Name), "should need sessionEnableSystemSettings") - assert.Equal(tc.rawGTID, result.NeedsSysVar(sysvars.ReadAfterWriteGTID.Name), "should need rawGTID") - assert.Equal(tc.rawTimeout, result.NeedsSysVar(sysvars.ReadAfterWriteTimeOut.Name), "should need rawTimeout") - assert.Equal(tc.sessTrackGTID, result.NeedsSysVar(sysvars.SessionTrackGTIDs.Name), "should need sessTrackGTID") - assert.Equal(tc.version, result.NeedsSysVar(sysvars.Version.Name), "should need Vitess version") - assert.Equal(tc.versionComment, result.NeedsSysVar(sysvars.VersionComment.Name), "should need Vitess version") - assert.Equal(tc.socket, result.NeedsSysVar(sysvars.Socket.Name), "should need :__vtsocket") - }) - } -} - -type fakeViews struct{} - -func (*fakeViews) FindView(name TableName) TableStatement { - if name.Name.String() != "user_details" { - return nil - } - parser := NewTestParser() - statement, err := parser.Parse("select user.id, user.name, user_extra.salary from user join user_extra where user.id = user_extra.user_id") - if err != nil { - return nil - } - return statement.(TableStatement) -} - -func TestRewritesWithSetVarComment(in *testing.T) { - tests := []testCaseSetVar{{ - in: "select 1", - expected: "select 1", - setVarComment: "", - }, { - in: "select 1", - expected: "select /*+ AA(a) */ 1", - setVarComment: "AA(a)", - }, { - in: "insert /* toto */ into t(id) values(1)", - expected: "insert /*+ AA(a) */ /* toto */ into t(id) values(1)", - setVarComment: "AA(a)", - }, { - in: "select /* toto */ * from t union select * from s", - expected: "select /*+ AA(a) */ /* toto */ * from t union select /*+ AA(a) */ * from s", - setVarComment: "AA(a)", - }, { - in: "vstream /* toto */ * from t1", - expected: "vstream /*+ AA(a) */ /* toto */ * from t1", - setVarComment: "AA(a)", - }, { - in: "stream /* toto */ t from t1", - expected: "stream /*+ AA(a) */ /* toto */ t from t1", - setVarComment: "AA(a)", - }, { - in: "update /* toto */ t set id = 1", - expected: "update /*+ AA(a) */ /* toto */ t set id = 1", - setVarComment: "AA(a)", - }, { - in: "delete /* toto */ from t", - expected: "delete /*+ AA(a) */ /* toto */ from t", - setVarComment: "AA(a)", - }} - - parser := NewTestParser() - for _, tc := range tests { - in.Run(tc.in, func(t *testing.T) { - require := require.New(t) - stmt, err := parser.Parse(tc.in) - require.NoError(err) - - result, err := RewriteAST(stmt, "ks", SQLSelectLimitUnset, tc.setVarComment, nil, nil, &fakeViews{}) - require.NoError(err) - - expected, err := parser.Parse(tc.expected) - require.NoError(err, "test expectation does not parse [%s]", tc.expected) - - assert.Equal(t, String(expected), String(result.AST)) - }) - } -} - -func TestRewritesSysVar(in *testing.T) { - tests := []testCaseSysVar{{ - in: "select @x = @@sql_mode", - expected: "select :__vtudvx = @@sql_mode as `@x = @@sql_mode` from dual", - }, { - in: "select @x = @@sql_mode", - expected: "select :__vtudvx = :__vtsql_mode as `@x = @@sql_mode` from dual", - sysVar: map[string]string{"sql_mode": "' '"}, - }, { - in: "SELECT @@tx_isolation", - expected: "select @@tx_isolation from dual", - }, { - in: "SELECT @@transaction_isolation", - expected: "select @@transaction_isolation from dual", - }, { - in: "SELECT @@session.transaction_isolation", - expected: "select @@session.transaction_isolation from dual", - }, { - in: "SELECT @@tx_isolation", - sysVar: map[string]string{"tx_isolation": "'READ-COMMITTED'"}, - expected: "select :__vttx_isolation as `@@tx_isolation` from dual", - }, { - in: "SELECT @@transaction_isolation", - sysVar: map[string]string{"transaction_isolation": "'READ-COMMITTED'"}, - expected: "select :__vttransaction_isolation as `@@transaction_isolation` from dual", - }, { - in: "SELECT @@session.transaction_isolation", - sysVar: map[string]string{"transaction_isolation": "'READ-COMMITTED'"}, - expected: "select :__vttransaction_isolation as `@@session.transaction_isolation` from dual", - }} - - parser := NewTestParser() - for _, tc := range tests { - in.Run(tc.in, func(t *testing.T) { - require := require.New(t) - stmt, err := parser.Parse(tc.in) - require.NoError(err) - - result, err := RewriteAST(stmt, "ks", SQLSelectLimitUnset, "", tc.sysVar, nil, &fakeViews{}) - require.NoError(err) - - expected, err := parser.Parse(tc.expected) - require.NoError(err, "test expectation does not parse [%s]", tc.expected) - - assert.Equal(t, String(expected), String(result.AST)) - }) - } -} - -func TestRewritesWithDefaultKeyspace(in *testing.T) { - tests := []myTestCase{{ - in: "SELECT 1 from x.test", - expected: "SELECT 1 from x.test", // no change - }, { - in: "SELECT x.col as c from x.test", - expected: "SELECT x.col as c from x.test", // no change - }, { - in: "SELECT 1 from test", - expected: "SELECT 1 from sys.test", - }, { - in: "SELECT 1 from test as t", - expected: "SELECT 1 from sys.test as t", - }, { - in: "SELECT 1 from `test 24` as t", - expected: "SELECT 1 from sys.`test 24` as t", - }, { - in: "SELECT 1, (select 1 from test) from x.y", - expected: "SELECT 1, (select 1 from sys.test) from x.y", - }, { - in: "SELECT 1 from (select 2 from test) t", - expected: "SELECT 1 from (select 2 from sys.test) t", - }, { - in: "SELECT 1 from test where exists(select 2 from test)", - expected: "SELECT 1 from sys.test where exists(select 1 from sys.test)", - }, { - in: "SELECT 1 from dual", - expected: "SELECT 1 from dual", - }, { - in: "SELECT (select 2 from dual) from DUAL", - expected: "SELECT 2 as `(select 2 from dual)` from DUAL", - }} - - parser := NewTestParser() - for _, tc := range tests { - in.Run(tc.in, func(t *testing.T) { - require := require.New(t) - stmt, err := parser.Parse(tc.in) - require.NoError(err) - - result, err := RewriteAST(stmt, "sys", SQLSelectLimitUnset, "", nil, nil, &fakeViews{}) - require.NoError(err) - - expected, err := parser.Parse(tc.expected) - require.NoError(err, "test expectation does not parse [%s]", tc.expected) - - assert.Equal(t, String(expected), String(result.AST)) - }) - } -} - -func TestReservedVars(t *testing.T) { - for _, prefix := range []string{"vtg", "bv"} { - t.Run("prefix_"+prefix, func(t *testing.T) { - reserved := NewReservedVars(prefix, make(BindVars)) - for i := 1; i < 1000; i++ { - require.Equal(t, fmt.Sprintf("%s%d", prefix, i), reserved.nextUnusedVar()) - } - }) - } -} diff --git a/go/vt/sqlparser/bind_var_needs.go b/go/vt/sqlparser/bind_var_needs.go index 1b26919ca03..64e5c528e97 100644 --- a/go/vt/sqlparser/bind_var_needs.go +++ b/go/vt/sqlparser/bind_var_needs.go @@ -22,14 +22,7 @@ type BindVarNeeds struct { NeedSystemVariable, // NeedUserDefinedVariables keeps track of all user defined variables a query is using NeedUserDefinedVariables []string - otherRewrites bool -} - -// MergeWith adds bind vars needs coming from sub scopes -func (bvn *BindVarNeeds) MergeWith(other *BindVarNeeds) { - bvn.NeedFunctionResult = append(bvn.NeedFunctionResult, other.NeedFunctionResult...) - bvn.NeedSystemVariable = append(bvn.NeedSystemVariable, other.NeedSystemVariable...) - bvn.NeedUserDefinedVariables = append(bvn.NeedUserDefinedVariables, other.NeedUserDefinedVariables...) + otherRewrites int } // AddFuncResult adds a function bindvar need @@ -58,14 +51,11 @@ func (bvn *BindVarNeeds) NeedsSysVar(name string) bool { } func (bvn *BindVarNeeds) NoteRewrite() { - bvn.otherRewrites = true + bvn.otherRewrites++ } -func (bvn *BindVarNeeds) HasRewrites() bool { - return bvn.otherRewrites || - len(bvn.NeedFunctionResult) > 0 || - len(bvn.NeedUserDefinedVariables) > 0 || - len(bvn.NeedSystemVariable) > 0 +func (bvn *BindVarNeeds) NumberOfRewrites() int { + return len(bvn.NeedFunctionResult) + len(bvn.NeedUserDefinedVariables) + len(bvn.NeedSystemVariable) + bvn.otherRewrites } func contains(strings []string, name string) bool { diff --git a/go/vt/sqlparser/cached_size.go b/go/vt/sqlparser/cached_size.go index 3aac4ac1edd..7183ff18e28 100644 --- a/go/vt/sqlparser/cached_size.go +++ b/go/vt/sqlparser/cached_size.go @@ -788,6 +788,20 @@ func (cached *ColumnTypeOptions) CachedSize(alloc bool) int64 { size += cached.SRID.CachedSize(true) return size } +func (cached *Columns) CachedSize(alloc bool) int64 { + if cached == nil { + return int64(0) + } + size := int64(0) + if alloc { + size += int64(24) + } + size += hack.RuntimeAllocSize(int64(cap(*cached)) * int64(32)) + for _, elem := range *cached { + size += elem.CachedSize(false) + } + return size +} //go:nocheckptr func (cached *CommentDirectives) CachedSize(alloc bool) int64 { @@ -832,6 +846,20 @@ func (cached *CommentOnly) CachedSize(alloc bool) int64 { } return size } +func (cached *Comments) CachedSize(alloc bool) int64 { + if cached == nil { + return int64(0) + } + size := int64(0) + if alloc { + size += int64(24) + } + size += hack.RuntimeAllocSize(int64(cap(*cached)) * int64(16)) + for _, elem := range *cached { + size += hack.RuntimeAllocSize(int64(len(elem))) + } + return size +} func (cached *CommonTableExpr) CachedSize(alloc bool) int64 { if cached == nil { return int64(0) @@ -1313,6 +1341,22 @@ func (cached *ExplainTab) CachedSize(alloc bool) int64 { size += hack.RuntimeAllocSize(int64(len(cached.Wild))) return size } +func (cached *Exprs) CachedSize(alloc bool) int64 { + if cached == nil { + return int64(0) + } + size := int64(0) + if alloc { + size += int64(24) + } + size += hack.RuntimeAllocSize(int64(cap(*cached)) * int64(16)) + for _, elem := range *cached { + if cc, ok := elem.(cachedObject); ok { + size += cc.CachedSize(true) + } + } + return size +} func (cached *ExtractFuncExpr) CachedSize(alloc bool) int64 { if cached == nil { return int64(0) @@ -1819,6 +1863,20 @@ func (cached *IndexHint) CachedSize(alloc bool) int64 { } return size } +func (cached *IndexHints) CachedSize(alloc bool) int64 { + if cached == nil { + return int64(0) + } + size := int64(0) + if alloc { + size += int64(24) + } + size += hack.RuntimeAllocSize(int64(cap(*cached)) * int64(8)) + for _, elem := range *cached { + size += elem.CachedSize(true) + } + return size +} func (cached *IndexInfo) CachedSize(alloc bool) int64 { if cached == nil { return int64(0) @@ -2696,6 +2754,17 @@ func (cached *LinestrPropertyFuncExpr) CachedSize(alloc bool) int64 { } return size } +func (cached *ListArg) CachedSize(alloc bool) int64 { + if cached == nil { + return int64(0) + } + size := int64(0) + if alloc { + size += hack.RuntimeAllocSize(int64(16)) + } + size += hack.RuntimeAllocSize(int64(len(*cached))) + return size +} func (cached *Literal) CachedSize(alloc bool) int64 { if cached == nil { return int64(0) @@ -2962,6 +3031,20 @@ func (cached *NamedWindow) CachedSize(alloc bool) int64 { } return size } +func (cached *NamedWindows) CachedSize(alloc bool) int64 { + if cached == nil { + return int64(0) + } + size := int64(0) + if alloc { + size += int64(24) + } + size += hack.RuntimeAllocSize(int64(cap(*cached)) * int64(8)) + for _, elem := range *cached { + size += elem.CachedSize(true) + } + return size +} func (cached *Nextval) CachedSize(alloc bool) int64 { if cached == nil { return int64(0) @@ -3020,6 +3103,20 @@ func (cached *Offset) CachedSize(alloc bool) int64 { } return size } +func (cached *OnDup) CachedSize(alloc bool) int64 { + if cached == nil { + return int64(0) + } + size := int64(0) + if alloc { + size += int64(24) + } + size += hack.RuntimeAllocSize(int64(cap(*cached)) * int64(8)) + for _, elem := range *cached { + size += elem.CachedSize(true) + } + return size +} func (cached *OptLike) CachedSize(alloc bool) int64 { if cached == nil { return int64(0) @@ -3064,6 +3161,20 @@ func (cached *Order) CachedSize(alloc bool) int64 { } return size } +func (cached *OrderBy) CachedSize(alloc bool) int64 { + if cached == nil { + return int64(0) + } + size := int64(0) + if alloc { + size += int64(24) + } + size += hack.RuntimeAllocSize(int64(cap(*cached)) * int64(8)) + for _, elem := range *cached { + size += elem.CachedSize(true) + } + return size +} func (cached *OrderByOption) CachedSize(alloc bool) int64 { if cached == nil { return int64(0) @@ -3297,6 +3408,20 @@ func (cached *PartitionValueRange) CachedSize(alloc bool) int64 { } return size } +func (cached *Partitions) CachedSize(alloc bool) int64 { + if cached == nil { + return int64(0) + } + size := int64(0) + if alloc { + size += int64(24) + } + size += hack.RuntimeAllocSize(int64(cap(*cached)) * int64(32)) + for _, elem := range *cached { + size += elem.CachedSize(false) + } + return size +} func (cached *PerformanceSchemaFuncExpr) CachedSize(alloc bool) int64 { if cached == nil { return int64(0) @@ -3753,6 +3878,22 @@ func (cached *Select) CachedSize(alloc bool) int64 { size += cached.Into.CachedSize(true) return size } +func (cached *SelectExprs) CachedSize(alloc bool) int64 { + if cached == nil { + return int64(0) + } + size := int64(0) + if alloc { + size += int64(24) + } + size += hack.RuntimeAllocSize(int64(cap(*cached)) * int64(16)) + for _, elem := range *cached { + if cc, ok := elem.(cachedObject); ok { + size += cc.CachedSize(true) + } + } + return size +} func (cached *SelectInto) CachedSize(alloc bool) int64 { if cached == nil { return int64(0) @@ -3810,6 +3951,20 @@ func (cached *SetExpr) CachedSize(alloc bool) int64 { } return size } +func (cached *SetExprs) CachedSize(alloc bool) int64 { + if cached == nil { + return int64(0) + } + size := int64(0) + if alloc { + size += int64(24) + } + size += hack.RuntimeAllocSize(int64(cap(*cached)) * int64(8)) + for _, elem := range *cached { + size += elem.CachedSize(true) + } + return size +} func (cached *Show) CachedSize(alloc bool) int64 { if cached == nil { return int64(0) @@ -4095,6 +4250,20 @@ func (cached *SubPartitionDefinitionOptions) CachedSize(alloc bool) int64 { size += hack.RuntimeAllocSize(int64(len(cached.TableSpace))) return size } +func (cached *SubPartitionDefinitions) CachedSize(alloc bool) int64 { + if cached == nil { + return int64(0) + } + size := int64(0) + if alloc { + size += int64(24) + } + size += hack.RuntimeAllocSize(int64(cap(*cached)) * int64(8)) + for _, elem := range *cached { + size += elem.CachedSize(true) + } + return size +} func (cached *Subquery) CachedSize(alloc bool) int64 { if cached == nil { return int64(0) @@ -4161,6 +4330,36 @@ func (cached *TableAndLockType) CachedSize(alloc bool) int64 { } return size } +func (cached *TableAndLockTypes) CachedSize(alloc bool) int64 { + if cached == nil { + return int64(0) + } + size := int64(0) + if alloc { + size += int64(24) + } + size += hack.RuntimeAllocSize(int64(cap(*cached)) * int64(8)) + for _, elem := range *cached { + size += elem.CachedSize(true) + } + return size +} +func (cached *TableExprs) CachedSize(alloc bool) int64 { + if cached == nil { + return int64(0) + } + size := int64(0) + if alloc { + size += int64(24) + } + size += hack.RuntimeAllocSize(int64(cap(*cached)) * int64(16)) + for _, elem := range *cached { + if cc, ok := elem.(cachedObject); ok { + size += cc.CachedSize(true) + } + } + return size +} func (cached *TableName) CachedSize(alloc bool) int64 { if cached == nil { return int64(0) @@ -4175,6 +4374,20 @@ func (cached *TableName) CachedSize(alloc bool) int64 { size += cached.Qualifier.CachedSize(false) return size } +func (cached *TableNames) CachedSize(alloc bool) int64 { + if cached == nil { + return int64(0) + } + size := int64(0) + if alloc { + size += int64(24) + } + size += hack.RuntimeAllocSize(int64(cap(*cached)) * int64(32)) + for _, elem := range *cached { + size += elem.CachedSize(false) + } + return size +} func (cached *TableOption) CachedSize(alloc bool) int64 { if cached == nil { return int64(0) @@ -4198,6 +4411,20 @@ func (cached *TableOption) CachedSize(alloc bool) int64 { } return size } +func (cached *TableOptions) CachedSize(alloc bool) int64 { + if cached == nil { + return int64(0) + } + size := int64(0) + if alloc { + size += int64(24) + } + size += hack.RuntimeAllocSize(int64(cap(*cached)) * int64(8)) + for _, elem := range *cached { + size += elem.CachedSize(true) + } + return size +} func (cached *TableSpec) CachedSize(alloc bool) int64 { if cached == nil { return int64(0) @@ -4398,6 +4625,20 @@ func (cached *UpdateExpr) CachedSize(alloc bool) int64 { } return size } +func (cached *UpdateExprs) CachedSize(alloc bool) int64 { + if cached == nil { + return int64(0) + } + size := int64(0) + if alloc { + size += int64(24) + } + size += hack.RuntimeAllocSize(int64(cap(*cached)) * int64(8)) + for _, elem := range *cached { + size += elem.CachedSize(true) + } + return size +} func (cached *UpdateXMLExpr) CachedSize(alloc bool) int64 { if cached == nil { return int64(0) @@ -4470,6 +4711,22 @@ func (cached *VStream) CachedSize(alloc bool) int64 { size += cached.Limit.CachedSize(true) return size } +func (cached *ValTuple) CachedSize(alloc bool) int64 { + if cached == nil { + return int64(0) + } + size := int64(0) + if alloc { + size += int64(24) + } + size += hack.RuntimeAllocSize(int64(cap(*cached)) * int64(16)) + for _, elem := range *cached { + if cc, ok := elem.(cachedObject); ok { + size += cc.CachedSize(true) + } + } + return size +} func (cached *Validation) CachedSize(alloc bool) int64 { if cached == nil { return int64(0) @@ -4480,6 +4737,27 @@ func (cached *Validation) CachedSize(alloc bool) int64 { } return size } +func (cached *Values) CachedSize(alloc bool) int64 { + if cached == nil { + return int64(0) + } + size := int64(0) + if alloc { + size += int64(24) + } + size += hack.RuntimeAllocSize(int64(cap(*cached)) * int64(24)) + for _, elem := range *cached { + { + size += hack.RuntimeAllocSize(int64(cap(elem)) * int64(16)) + for _, elem := range elem { + if cc, ok := elem.(cachedObject); ok { + size += cc.CachedSize(true) + } + } + } + } + return size +} func (cached *ValuesFuncExpr) CachedSize(alloc bool) int64 { if cached == nil { return int64(0) @@ -4688,6 +4966,20 @@ func (cached *WindowDefinition) CachedSize(alloc bool) int64 { size += cached.WindowSpec.CachedSize(true) return size } +func (cached *WindowDefinitions) CachedSize(alloc bool) int64 { + if cached == nil { + return int64(0) + } + size := int64(0) + if alloc { + size += int64(24) + } + size += hack.RuntimeAllocSize(int64(cap(*cached)) * int64(8)) + for _, elem := range *cached { + size += elem.CachedSize(true) + } + return size +} func (cached *WindowSpecification) CachedSize(alloc bool) int64 { if cached == nil { return int64(0) diff --git a/go/vt/sqlparser/constants.go b/go/vt/sqlparser/constants.go index bdf35a2654d..49955b8d4d8 100644 --- a/go/vt/sqlparser/constants.go +++ b/go/vt/sqlparser/constants.go @@ -930,6 +930,7 @@ const ( FixedFormat DynamicFormat DefaultFormat + CompressedFormat ) // Transaction access mode diff --git a/go/vt/sqlparser/normalizer.go b/go/vt/sqlparser/normalizer.go index 48311a39a7a..fb3813b7019 100644 --- a/go/vt/sqlparser/normalizer.go +++ b/go/vt/sqlparser/normalizer.go @@ -18,146 +18,277 @@ package sqlparser import ( "bytes" + "fmt" + "strconv" + "strings" "vitess.io/vitess/go/mysql/datetime" "vitess.io/vitess/go/sqltypes" + querypb "vitess.io/vitess/go/vt/proto/query" vtrpcpb "vitess.io/vitess/go/vt/proto/vtrpc" + "vitess.io/vitess/go/vt/sysvars" "vitess.io/vitess/go/vt/vterrors" +) - querypb "vitess.io/vitess/go/vt/proto/query" +type ( + // BindVars represents a set of reserved bind variables extracted from a SQL statement. + BindVars map[string]struct{} + // normalizer transforms SQL statements to support parameterization and streamline query planning. + // + // It serves two primary purposes: + // 1. **Parameterization:** Allows multiple invocations of the same query with different literals by converting literals + // to bind variables. This enables efficient reuse of execution plans with varying parameters. + // 2. **Simplified Planning:** Reduces the complexity for the query planner by standardizing SQL patterns. For example, + // it ensures that table columns are consistently placed on the left side of comparison expressions. This uniformity + // minimizes the number of distinct patterns the planner must handle, enhancing planning efficiency. + normalizer struct { + bindVars map[string]*querypb.BindVariable + reserved *ReservedVars + vals map[Literal]string + err error + inDerived int + inSelect int + + bindVarNeeds *BindVarNeeds + shouldRewriteDatabaseFunc bool + hasStarInSelect bool + + keyspace string + selectLimit int + setVarComment string + fkChecksState *bool + sysVars map[string]string + views VSchemaViews + + onLeave map[*AliasedExpr]func(*AliasedExpr) + parameterize bool + } + // RewriteASTResult holds the result of rewriting the AST, including bind variable needs. + RewriteASTResult struct { + *BindVarNeeds + AST Statement // The rewritten AST + } + // VSchemaViews provides access to view definitions within the VSchema. + VSchemaViews interface { + FindView(name TableName) TableStatement + } ) -// BindVars is a set of reserved bind variables from a SQL statement -type BindVars map[string]struct{} +const ( + // SQLSelectLimitUnset indicates that sql_select_limit is not set. + SQLSelectLimitUnset = -1 + // LastInsertIDName is the bind variable name for LAST_INSERT_ID(). + LastInsertIDName = "__lastInsertId" + // DBVarName is the bind variable name for DATABASE(). + DBVarName = "__vtdbname" + // FoundRowsName is the bind variable name for FOUND_ROWS(). + FoundRowsName = "__vtfrows" + // RowCountName is the bind variable name for ROW_COUNT(). + RowCountName = "__vtrcount" + // UserDefinedVariableName is the prefix for user-defined variable bind names. + UserDefinedVariableName = "__vtudv" +) -// Normalize changes the statement to use bind values, and -// updates the bind vars to those values. The supplied prefix -// is used to generate the bind var names. The function ensures -// that there are no collisions with existing bind vars. -// Within Select constructs, bind vars are deduped. This allows -// us to identify vindex equality. Otherwise, every value is -// treated as distinct. -func Normalize(stmt Statement, reserved *ReservedVars, bindVars map[string]*querypb.BindVariable) error { - nz := newNormalizer(reserved, bindVars) - _ = SafeRewrite(stmt, nz.walkStatementDown, nz.walkStatementUp) - return nz.err +// funcRewrites lists all functions that must be rewritten. we don't want these to make it down to mysql, +// we need to handle these in the vtgate +var funcRewrites = map[string]string{ + "last_insert_id": LastInsertIDName, + "database": DBVarName, + "schema": DBVarName, + "found_rows": FoundRowsName, + "row_count": RowCountName, } -type normalizer struct { - bindVars map[string]*querypb.BindVariable - reserved *ReservedVars - vals map[Literal]string - err error - inDerived bool -} +// PrepareAST normalizes the input SQL statement and returns the rewritten AST along with bind variable information. +func PrepareAST( + in Statement, + reservedVars *ReservedVars, + bindVars map[string]*querypb.BindVariable, + parameterize bool, + keyspace string, + selectLimit int, + setVarComment string, + sysVars map[string]string, + fkChecksState *bool, + views VSchemaViews, +) (*RewriteASTResult, error) { + nz := newNormalizer(reservedVars, bindVars, keyspace, selectLimit, setVarComment, sysVars, fkChecksState, views, parameterize) + nz.shouldRewriteDatabaseFunc = shouldRewriteDatabaseFunc(in) + out := SafeRewrite(in, nz.walkDown, nz.walkUp) + if nz.err != nil { + return nil, nz.err + } -func newNormalizer(reserved *ReservedVars, bindVars map[string]*querypb.BindVariable) *normalizer { - return &normalizer{ - bindVars: bindVars, - reserved: reserved, - vals: make(map[Literal]string), + r := &RewriteASTResult{ + AST: out.(Statement), + BindVarNeeds: nz.bindVarNeeds, } + return r, nil } -// walkStatementUp is one half of the top level walk function. -func (nz *normalizer) walkStatementUp(cursor *Cursor) bool { - if nz.err != nil { - return false - } - node, isLiteral := cursor.Node().(*Literal) - if !isLiteral { - return true +func newNormalizer( + reserved *ReservedVars, + bindVars map[string]*querypb.BindVariable, + keyspace string, + selectLimit int, + setVarComment string, + sysVars map[string]string, + fkChecksState *bool, + views VSchemaViews, + parameterize bool, +) *normalizer { + return &normalizer{ + bindVars: bindVars, + reserved: reserved, + vals: make(map[Literal]string), + bindVarNeeds: &BindVarNeeds{}, + keyspace: keyspace, + selectLimit: selectLimit, + setVarComment: setVarComment, + fkChecksState: fkChecksState, + sysVars: sysVars, + views: views, + onLeave: make(map[*AliasedExpr]func(*AliasedExpr)), + parameterize: parameterize, } - nz.convertLiteral(node, cursor) - return nz.err == nil // only continue if we haven't found any errors } -// walkStatementDown is the top level walk function. -// If it encounters a Select, it switches to a mode -// where variables are deduped. -func (nz *normalizer) walkStatementDown(node, parent SQLNode) bool { +// walkDown processes nodes when traversing down the AST. +// It handles normalization logic based on node types. +func (nz *normalizer) walkDown(node, _ SQLNode) bool { switch node := node.(type) { - // no need to normalize the statement types - case *Set, *Show, *Begin, *Commit, *Rollback, *Savepoint, DDLStatement, *SRollback, *Release, *OtherAdmin, *Analyze: + case *Begin, *Commit, *Rollback, *Savepoint, *SRollback, *Release, *OtherAdmin, *Analyze, *AssignmentExpr, + *PrepareStmt, *ExecuteStmt, *FramePoint, *ColName, TableName, *ConvertType: + // These statement don't need normalizing return false + case *Set: + // Disable parameterization within SET statements. + nz.parameterize = false + case *DerivedTable: + nz.inDerived++ case *Select: - _, isDerived := parent.(*DerivedTable) - var tmp bool - tmp, nz.inDerived = nz.inDerived, isDerived - _ = SafeRewrite(node, nz.walkDownSelect, nz.walkUpSelect) - // Don't continue - nz.inDerived = tmp - return false + nz.inSelect++ + if nz.selectLimit > 0 && node.Limit == nil { + node.Limit = &Limit{Rowcount: NewIntLiteral(strconv.Itoa(nz.selectLimit))} + } + case *AliasedExpr: + nz.noteAliasedExprName(node) case *ComparisonExpr: nz.convertComparison(node) case *UpdateExpr: nz.convertUpdateExpr(node) - case *ColName, TableName: - // Common node types that never contain Literal or ListArgs but create a lot of object - // allocations. - return false - case *ConvertType: // we should not rewrite the type description + case *StarExpr: + nz.hasStarInSelect = true + // No rewriting needed for prepare or execute statements. return false + case *ShowBasic: + if node.Command != VariableGlobal && node.Command != VariableSession { + break + } + varsToAdd := sysvars.GetInterestingVariables() + for _, sysVar := range varsToAdd { + nz.bindVarNeeds.AddSysVar(sysVar) + } + } + b := nz.err == nil + if !b { + fmt.Println(1) } - return nz.err == nil // only continue if we haven't found any errors + return b } -// walkDownSelect normalizes the AST in Select mode. -func (nz *normalizer) walkDownSelect(node, parent SQLNode) bool { - switch node := node.(type) { - case *Select: - _, isDerived := parent.(*DerivedTable) - if !isDerived { - return true +// noteAliasedExprName tracks expressions without aliases to add alias if expression is rewritten +func (nz *normalizer) noteAliasedExprName(node *AliasedExpr) { + if node.As.NotEmpty() { + return + } + buf := NewTrackedBuffer(nil) + node.Expr.Format(buf) + rewrites := nz.bindVarNeeds.NumberOfRewrites() + nz.onLeave[node] = func(newAliasedExpr *AliasedExpr) { + if nz.bindVarNeeds.NumberOfRewrites() > rewrites { + newAliasedExpr.As = NewIdentifierCI(buf.String()) } - var tmp bool - tmp, nz.inDerived = nz.inDerived, isDerived - // initiating a new AST walk here means that we might change something while walking down on the tree, - // but since we are only changing literals, we can be safe that we are not changing the SELECT struct, - // only something much further down, and that should be safe - _ = SafeRewrite(node, nz.walkDownSelect, nz.walkUpSelect) - // Don't continue - nz.inDerived = tmp - return false - case SelectExprs: - return !nz.inDerived - case *ComparisonExpr: - nz.convertComparison(node) - case *FramePoint: - // do not make a bind var for rows and range - return false - case *ColName, TableName: - // Common node types that never contain Literals or ListArgs but create a lot of object - // allocations. - return false - case *ConvertType: - // we should not rewrite the type description - return false } - return nz.err == nil // only continue if we haven't found any errors } -// walkUpSelect normalizes the Literals in Select mode. -func (nz *normalizer) walkUpSelect(cursor *Cursor) bool { +// walkUp processes nodes when traversing up the AST. +// It finalizes normalization logic based on node types. +func (nz *normalizer) walkUp(cursor *Cursor) bool { + // Add SET_VAR comments if applicable. + if supportOptimizerHint, supports := cursor.Node().(SupportOptimizerHint); supports { + if nz.setVarComment != "" { + newComments, err := supportOptimizerHint.GetParsedComments().AddQueryHint(nz.setVarComment) + if err != nil { + nz.err = err + return false + } + supportOptimizerHint.SetComments(newComments) + } + if nz.fkChecksState != nil { + newComments := supportOptimizerHint.GetParsedComments().SetMySQLSetVarValue(sysvars.ForeignKeyChecks, FkChecksStateString(nz.fkChecksState)) + supportOptimizerHint.SetComments(newComments) + } + } + if nz.err != nil { return false } - node, isLiteral := cursor.Node().(*Literal) - if !isLiteral { - return true + + switch node := cursor.node.(type) { + case *DerivedTable: + nz.inDerived-- + case *Select: + nz.inSelect-- + case *AliasedExpr: + // if we are tracking this node for changes, this is the time to add the alias if needed + if onLeave, ok := nz.onLeave[node]; ok { + onLeave(node) + delete(nz.onLeave, node) + } + case *Union: + nz.rewriteUnion(node) + case *FuncExpr: + nz.funcRewrite(cursor, node) + case *Variable: + nz.rewriteVariable(cursor, node) + case *Subquery: + nz.unnestSubQueries(cursor, node) + case *NotExpr: + nz.rewriteNotExpr(cursor, node) + case *AliasedTableExpr: + nz.rewriteAliasedTable(cursor, node) + case *ShowBasic: + nz.rewriteShowBasic(node) + case *ExistsExpr: + nz.existsRewrite(cursor, node) + case DistinctableAggr: + nz.rewriteDistinctableAggr(node) + case *Literal: + nz.visitLiteral(cursor, node) + } + return nz.err == nil +} + +func (nz *normalizer) visitLiteral(cursor *Cursor, node *Literal) { + if !nz.shouldParameterize() { + return } - parent := cursor.Parent() - switch parent.(type) { + if nz.inSelect == 0 { + nz.convertLiteral(node, cursor) + return + } + switch cursor.Parent().(type) { case *Order, *GroupBy: - return true + return case *Limit: nz.convertLiteral(node, cursor) default: nz.convertLiteralDedup(node, cursor) } - return nz.err == nil // only continue if we haven't found any errors } +// validateLiteral ensures that a Literal node has a valid value based on its type. func validateLiteral(node *Literal) error { switch node.Type { case DateVal: @@ -176,37 +307,31 @@ func validateLiteral(node *Literal) error { return nil } +// convertLiteralDedup converts a Literal node to a bind variable with deduplication. func (nz *normalizer) convertLiteralDedup(node *Literal, cursor *Cursor) { - err := validateLiteral(node) - if err != nil { + if err := validateLiteral(node); err != nil { nz.err = err + return } - // If value is too long, don't dedup. - // Such values are most likely not for vindexes. - // We save a lot of CPU because we avoid building - // the key for them. + // Skip deduplication for long values. if len(node.Val) > 256 { nz.convertLiteral(node, cursor) return } - // Make the bindvar - bval := SQLToBindvar(node) + bval := literalToBindvar(node) if bval == nil { return } - // Check if there's a bindvar for that value already. - bvname, ok := nz.vals[*node] - if !ok { - // If there's no such bindvar, make a new one. + bvname, exists := nz.vals[*node] + if !exists { bvname = nz.reserved.nextUnusedVar() nz.vals[*node] = bvname nz.bindVars[bvname] = bval } - // Modify the AST node to a bindvar. arg, err := NewTypedArgumentFromLiteral(bvname, node) if err != nil { nz.err = err @@ -215,14 +340,14 @@ func (nz *normalizer) convertLiteralDedup(node *Literal, cursor *Cursor) { cursor.Replace(arg) } -// convertLiteral converts an Literal without the dedup. +// convertLiteral converts a Literal node to a bind variable without deduplication. func (nz *normalizer) convertLiteral(node *Literal, cursor *Cursor) { - err := validateLiteral(node) - if err != nil { + if err := validateLiteral(node); err != nil { nz.err = err + return } - bval := SQLToBindvar(node) + bval := literalToBindvar(node) if bval == nil { return } @@ -237,11 +362,7 @@ func (nz *normalizer) convertLiteral(node *Literal, cursor *Cursor) { cursor.Replace(arg) } -// convertComparison attempts to convert IN clauses to -// use the list bind var construct. If it fails, it returns -// with no change made. The walk function will then continue -// and iterate on converting each individual value into separate -// bind vars. +// convertComparison handles the conversion of comparison expressions to use bind variables. func (nz *normalizer) convertComparison(node *ComparisonExpr) { switch node.Operator { case InOp, NotInOp: @@ -251,14 +372,19 @@ func (nz *normalizer) convertComparison(node *ComparisonExpr) { } } +// rewriteOtherComparisons parameterizes non-IN comparison expressions. func (nz *normalizer) rewriteOtherComparisons(node *ComparisonExpr) { - newR := nz.parameterize(node.Left, node.Right) + newR := nz.normalizeComparisonWithBindVar(node.Left, node.Right) if newR != nil { node.Right = newR } } -func (nz *normalizer) parameterize(left, right Expr) Expr { +// normalizeComparisonWithBindVar attempts to replace a literal in a comparison with a bind variable. +func (nz *normalizer) normalizeComparisonWithBindVar(left, right Expr) Expr { + if !nz.shouldParameterize() { + return nil + } col, ok := left.(*ColName) if !ok { return nil @@ -267,13 +393,12 @@ func (nz *normalizer) parameterize(left, right Expr) Expr { if !ok { return nil } - err := validateLiteral(lit) - if err != nil { + if err := validateLiteral(lit); err != nil { nz.err = err return nil } - bval := SQLToBindvar(lit) + bval := literalToBindvar(lit) if bval == nil { return nil } @@ -286,18 +411,14 @@ func (nz *normalizer) parameterize(left, right Expr) Expr { return arg } +// decideBindVarName determines the appropriate bind variable name for a given literal and column. func (nz *normalizer) decideBindVarName(lit *Literal, col *ColName, bval *querypb.BindVariable) string { if len(lit.Val) <= 256 { - // first we check if we already have a bindvar for this value. if we do, we re-use that bindvar name - bvname, ok := nz.vals[*lit] - if ok { + if bvname, ok := nz.vals[*lit]; ok { return bvname } } - // If there's no such bindvar, or we have a big value, make a new one. - // Big values are most likely not for vindexes. - // We save a lot of CPU because we avoid building bvname := nz.reserved.ReserveColName(col) nz.vals[*lit] = bvname nz.bindVars[bvname] = bval @@ -305,19 +426,22 @@ func (nz *normalizer) decideBindVarName(lit *Literal, col *ColName, bval *queryp return bvname } +// rewriteInComparisons converts IN and NOT IN expressions to use list bind variables. func (nz *normalizer) rewriteInComparisons(node *ComparisonExpr) { + if !nz.shouldParameterize() { + return + } tupleVals, ok := node.Right.(ValTuple) if !ok { return } - // The RHS is a tuple of values. - // Make a list bindvar. + // Create a list bind variable for the tuple. bvals := &querypb.BindVariable{ Type: querypb.Type_TUPLE, } for _, val := range tupleVals { - bval := SQLToBindvar(val) + bval := literalToBindvar(val) if bval == nil { return } @@ -328,76 +452,74 @@ func (nz *normalizer) rewriteInComparisons(node *ComparisonExpr) { } bvname := nz.reserved.nextUnusedVar() nz.bindVars[bvname] = bvals - // Modify RHS to be a list bindvar. node.Right = ListArg(bvname) } +// convertUpdateExpr parameterizes expressions in UPDATE statements. func (nz *normalizer) convertUpdateExpr(node *UpdateExpr) { - newR := nz.parameterize(node.Name, node.Expr) + newR := nz.normalizeComparisonWithBindVar(node.Name, node.Expr) if newR != nil { node.Expr = newR } } -func SQLToBindvar(node SQLNode) *querypb.BindVariable { - if node, ok := node.(*Literal); ok { - var v sqltypes.Value - var err error - switch node.Type { - case StrVal: - v, err = sqltypes.NewValue(sqltypes.VarChar, node.Bytes()) - case IntVal: - v, err = sqltypes.NewValue(sqltypes.Int64, node.Bytes()) - case FloatVal: - v, err = sqltypes.NewValue(sqltypes.Float64, node.Bytes()) - case DecimalVal: - v, err = sqltypes.NewValue(sqltypes.Decimal, node.Bytes()) - case HexNum: - buf := make([]byte, 0, len(node.Bytes())) - buf = append(buf, "0x"...) - buf = append(buf, bytes.ToUpper(node.Bytes()[2:])...) - v, err = sqltypes.NewValue(sqltypes.HexNum, buf) - case HexVal: - // We parse the `x'7b7d'` string literal into a hex encoded string of `7b7d` in the parser - // We need to re-encode it back to the original MySQL query format before passing it on as a bindvar value to MySQL - buf := make([]byte, 0, len(node.Bytes())+3) - buf = append(buf, 'x', '\'') - buf = append(buf, bytes.ToUpper(node.Bytes())...) - buf = append(buf, '\'') - v, err = sqltypes.NewValue(sqltypes.HexVal, buf) - case BitNum: - out := make([]byte, 0, len(node.Bytes())+2) - out = append(out, '0', 'b') - out = append(out, node.Bytes()[2:]...) - v, err = sqltypes.NewValue(sqltypes.BitNum, out) - case DateVal: - v, err = sqltypes.NewValue(sqltypes.Date, node.Bytes()) - case TimeVal: - v, err = sqltypes.NewValue(sqltypes.Time, node.Bytes()) - case TimestampVal: - // This is actually a DATETIME MySQL type. The timestamp literal - // syntax is part of the SQL standard and MySQL DATETIME matches - // the type best. - v, err = sqltypes.NewValue(sqltypes.Datetime, node.Bytes()) - default: - return nil - } - if err != nil { - return nil - } - return sqltypes.ValueBindVariable(v) +// literalToBindvar converts a SQLNode to a BindVariable if possible. +func literalToBindvar(node SQLNode) *querypb.BindVariable { + lit, ok := node.(*Literal) + if !ok { + return nil } - return nil + var v sqltypes.Value + var err error + switch lit.Type { + case StrVal: + v, err = sqltypes.NewValue(sqltypes.VarChar, lit.Bytes()) + case IntVal: + v, err = sqltypes.NewValue(sqltypes.Int64, lit.Bytes()) + case FloatVal: + v, err = sqltypes.NewValue(sqltypes.Float64, lit.Bytes()) + case DecimalVal: + v, err = sqltypes.NewValue(sqltypes.Decimal, lit.Bytes()) + case HexNum: + buf := make([]byte, 0, len(lit.Bytes())) + buf = append(buf, "0x"...) + buf = append(buf, bytes.ToUpper(lit.Bytes()[2:])...) + v, err = sqltypes.NewValue(sqltypes.HexNum, buf) + case HexVal: + // Re-encode hex string literals to original MySQL format. + buf := make([]byte, 0, len(lit.Bytes())+3) + buf = append(buf, 'x', '\'') + buf = append(buf, bytes.ToUpper(lit.Bytes())...) + buf = append(buf, '\'') + v, err = sqltypes.NewValue(sqltypes.HexVal, buf) + case BitNum: + out := make([]byte, 0, len(lit.Bytes())+2) + out = append(out, '0', 'b') + out = append(out, lit.Bytes()[2:]...) + v, err = sqltypes.NewValue(sqltypes.BitNum, out) + case DateVal: + v, err = sqltypes.NewValue(sqltypes.Date, lit.Bytes()) + case TimeVal: + v, err = sqltypes.NewValue(sqltypes.Time, lit.Bytes()) + case TimestampVal: + // Use DATETIME type for TIMESTAMP literals. + v, err = sqltypes.NewValue(sqltypes.Datetime, lit.Bytes()) + default: + return nil + } + if err != nil { + return nil + } + return sqltypes.ValueBindVariable(v) } -// GetBindvars returns a map of the bind vars referenced in the statement. -func GetBindvars(stmt Statement) map[string]struct{} { +// getBindvars extracts bind variables from a SQL statement. +func getBindvars(stmt Statement) map[string]struct{} { bindvars := make(map[string]struct{}) _ = Walk(func(node SQLNode) (kontinue bool, err error) { switch node := node.(type) { case *ColName, TableName: - // Common node types that never contain expressions but create a lot of object - // allocations. + // These node types do not contain expressions. return false, nil case *Argument: bindvars[node.Name] = struct{}{} @@ -408,3 +530,312 @@ func GetBindvars(stmt Statement) map[string]struct{} { }, stmt) return bindvars } + +var HasValueSubQueryBaseName = []byte("__sq_has_values") + +// shouldRewriteDatabaseFunc determines if the database function should be rewritten based on the statement. +func shouldRewriteDatabaseFunc(in Statement) bool { + selct, ok := in.(*Select) + if !ok { + return false + } + if len(selct.From) != 1 { + return false + } + aliasedTable, ok := selct.From[0].(*AliasedTableExpr) + if !ok { + return false + } + tableName, ok := aliasedTable.Expr.(TableName) + if !ok { + return false + } + return tableName.Name.String() == "dual" +} + +// rewriteUnion sets the SELECT limit for UNION statements if not already set. +func (nz *normalizer) rewriteUnion(node *Union) { + if nz.selectLimit > 0 && node.Limit == nil { + node.Limit = &Limit{Rowcount: NewIntLiteral(strconv.Itoa(nz.selectLimit))} + } +} + +// rewriteAliasedTable handles the rewriting of aliased tables, including view substitutions. +func (nz *normalizer) rewriteAliasedTable(cursor *Cursor, node *AliasedTableExpr) { + aliasTableName, ok := node.Expr.(TableName) + if !ok { + return + } + + // Do not add qualifiers to the dual table. + tblName := aliasTableName.Name.String() + if tblName == "dual" { + return + } + + if SystemSchema(nz.keyspace) { + if aliasTableName.Qualifier.IsEmpty() { + aliasTableName.Qualifier = NewIdentifierCS(nz.keyspace) + node.Expr = aliasTableName + cursor.Replace(node) + } + return + } + + // Replace views with their underlying definitions. + if nz.views == nil { + return + } + view := nz.views.FindView(aliasTableName) + if view == nil { + return + } + + // Substitute the view with a derived table. + node.Expr = &DerivedTable{Select: Clone(view)} + if node.As.IsEmpty() { + node.As = NewIdentifierCS(tblName) + } +} + +// rewriteShowBasic handles the rewriting of SHOW statements, particularly for system variables. +func (nz *normalizer) rewriteShowBasic(node *ShowBasic) { + if node.Command == VariableGlobal || node.Command == VariableSession { + varsToAdd := sysvars.GetInterestingVariables() + for _, sysVar := range varsToAdd { + nz.bindVarNeeds.AddSysVar(sysVar) + } + } +} + +// rewriteNotExpr simplifies NOT expressions where possible. +func (nz *normalizer) rewriteNotExpr(cursor *Cursor, node *NotExpr) { + switch inner := node.Expr.(type) { + case *ComparisonExpr: + // Invert comparison operators. + if canChange, inverse := inverseOp(inner.Operator); canChange { + inner.Operator = inverse + cursor.Replace(inner) + } + case *NotExpr: + // Simplify double negation. + cursor.Replace(inner.Expr) + case BoolVal: + // Negate boolean values. + cursor.Replace(!inner) + } +} + +// rewriteVariable handles the rewriting of variable expressions to bind variables. +func (nz *normalizer) rewriteVariable(cursor *Cursor, node *Variable) { + // Do not rewrite variables on the left side of SET assignments. + if v, isSet := cursor.Parent().(*SetExpr); isSet && v.Var == node { + return + } + switch node.Scope { + case VariableScope: + nz.udvRewrite(cursor, node) + case SessionScope, NextTxScope: + nz.sysVarRewrite(cursor, node) + } +} + +// inverseOp returns the inverse operator for a given comparison operator. +func inverseOp(i ComparisonExprOperator) (bool, ComparisonExprOperator) { + switch i { + case EqualOp: + return true, NotEqualOp + case LessThanOp: + return true, GreaterEqualOp + case GreaterThanOp: + return true, LessEqualOp + case LessEqualOp: + return true, GreaterThanOp + case GreaterEqualOp: + return true, LessThanOp + case NotEqualOp: + return true, EqualOp + case InOp: + return true, NotInOp + case NotInOp: + return true, InOp + case LikeOp: + return true, NotLikeOp + case NotLikeOp: + return true, LikeOp + case RegexpOp: + return true, NotRegexpOp + case NotRegexpOp: + return true, RegexpOp + } + return false, i +} + +// sysVarRewrite replaces system variables with corresponding bind variables. +func (nz *normalizer) sysVarRewrite(cursor *Cursor, node *Variable) { + lowered := node.Name.Lowered() + + var found bool + if nz.sysVars != nil { + _, found = nz.sysVars[lowered] + } + + switch lowered { + case sysvars.Autocommit.Name, + sysvars.Charset.Name, + sysvars.ClientFoundRows.Name, + sysvars.DDLStrategy.Name, + sysvars.MigrationContext.Name, + sysvars.Names.Name, + sysvars.TransactionMode.Name, + sysvars.ReadAfterWriteGTID.Name, + sysvars.ReadAfterWriteTimeOut.Name, + sysvars.SessionEnableSystemSettings.Name, + sysvars.SessionTrackGTIDs.Name, + sysvars.SessionUUID.Name, + sysvars.SkipQueryPlanCache.Name, + sysvars.Socket.Name, + sysvars.SQLSelectLimit.Name, + sysvars.Version.Name, + sysvars.VersionComment.Name, + sysvars.QueryTimeout.Name, + sysvars.Workload.Name: + found = true + } + + if found { + cursor.Replace(NewArgument("__vt" + lowered)) + nz.bindVarNeeds.AddSysVar(lowered) + } +} + +// udvRewrite replaces user-defined variables with corresponding bind variables. +func (nz *normalizer) udvRewrite(cursor *Cursor, node *Variable) { + udv := strings.ToLower(node.Name.CompliantName()) + cursor.Replace(NewArgument(UserDefinedVariableName + udv)) + nz.bindVarNeeds.AddUserDefVar(udv) +} + +// funcRewrite replaces certain function expressions with bind variables. +func (nz *normalizer) funcRewrite(cursor *Cursor, node *FuncExpr) { + lowered := node.Name.Lowered() + if lowered == "last_insert_id" && len(node.Exprs) > 0 { + // Do not rewrite LAST_INSERT_ID() when it has arguments. + return + } + bindVar, found := funcRewrites[lowered] + if !found || (bindVar == DBVarName && !nz.shouldRewriteDatabaseFunc) { + return + } + if len(node.Exprs) > 0 { + nz.err = vterrors.Errorf(vtrpcpb.Code_UNIMPLEMENTED, "Argument to %s() not supported", lowered) + return + } + cursor.Replace(NewArgument(bindVar)) + nz.bindVarNeeds.AddFuncResult(bindVar) +} + +// unnestSubQueries attempts to simplify dual subqueries where possible. +// select (select database() from dual) from test +// => +// select database() from test +func (nz *normalizer) unnestSubQueries(cursor *Cursor, subquery *Subquery) { + if _, isExists := cursor.Parent().(*ExistsExpr); isExists { + return + } + sel, isSimpleSelect := subquery.Select.(*Select) + if !isSimpleSelect { + return + } + + if len(sel.SelectExprs) != 1 || + len(sel.OrderBy) != 0 || + sel.GroupBy != nil || + len(sel.From) != 1 || + sel.Where != nil || + sel.Having != nil || + sel.Limit != nil || sel.Lock != NoLock { + return + } + + aliasedTable, ok := sel.From[0].(*AliasedTableExpr) + if !ok { + return + } + table, ok := aliasedTable.Expr.(TableName) + if !ok || table.Name.String() != "dual" { + return + } + expr, ok := sel.SelectExprs[0].(*AliasedExpr) + if !ok { + return + } + _, isColName := expr.Expr.(*ColName) + if isColName { + // Skip if the subquery already returns a column name. + return + } + nz.bindVarNeeds.NoteRewrite() + rewritten := SafeRewrite(expr.Expr, nz.walkDown, nz.walkUp) + + // Handle special cases for IN clauses. + rewrittenExpr, isExpr := rewritten.(Expr) + _, isColTuple := rewritten.(ColTuple) + comparisonExpr, isCompExpr := cursor.Parent().(*ComparisonExpr) + if isCompExpr && (comparisonExpr.Operator == InOp || comparisonExpr.Operator == NotInOp) && !isColTuple && isExpr { + cursor.Replace(ValTuple{rewrittenExpr}) + return + } + + cursor.Replace(rewritten) +} + +// existsRewrite optimizes EXISTS expressions where possible. +func (nz *normalizer) existsRewrite(cursor *Cursor, node *ExistsExpr) { + sel, ok := node.Subquery.Select.(*Select) + if !ok { + return + } + + if sel.Having != nil { + // Cannot optimize if HAVING clause is present. + return + } + + if sel.GroupBy == nil && sel.SelectExprs.AllAggregation() { + // Replace EXISTS with a boolean true if guaranteed to be non-empty. + cursor.Replace(BoolVal(true)) + return + } + + // Simplify the subquery by selecting a constant. + // WHERE EXISTS(SELECT 1 FROM ...) + sel.SelectExprs = SelectExprs{ + &AliasedExpr{Expr: NewIntLiteral("1")}, + } + sel.GroupBy = nil +} + +// rewriteDistinctableAggr removes DISTINCT from certain aggregations to simplify the plan. +func (nz *normalizer) rewriteDistinctableAggr(node DistinctableAggr) { + if !node.IsDistinct() { + return + } + switch aggr := node.(type) { + case *Max, *Min: + aggr.SetDistinct(false) + nz.bindVarNeeds.NoteRewrite() + } +} + +func (nz *normalizer) shouldParameterize() bool { + return !(nz.inDerived > 0 && len(nz.onLeave) > 0) && nz.parameterize +} + +// SystemSchema checks if the given schema is a system schema. +func SystemSchema(schema string) bool { + return strings.EqualFold(schema, "information_schema") || + strings.EqualFold(schema, "performance_schema") || + strings.EqualFold(schema, "sys") || + strings.EqualFold(schema, "mysql") +} diff --git a/go/vt/sqlparser/normalizer_test.go b/go/vt/sqlparser/normalizer_test.go index 7919a321c91..7c3e660ac9d 100644 --- a/go/vt/sqlparser/normalizer_test.go +++ b/go/vt/sqlparser/normalizer_test.go @@ -25,8 +25,9 @@ import ( "strings" "testing" - "github.com/stretchr/testify/assert" + "vitess.io/vitess/go/vt/sysvars" + "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "vitess.io/vitess/go/sqltypes" @@ -448,10 +449,11 @@ func TestNormalize(t *testing.T) { t.Run(tc.in, func(t *testing.T) { stmt, err := parser.Parse(tc.in) require.NoError(t, err) - known := GetBindvars(stmt) + known := getBindvars(stmt) bv := make(map[string]*querypb.BindVariable) - require.NoError(t, Normalize(stmt, NewReservedVars(prefix, known), bv)) - assert.Equal(t, tc.outstmt, String(stmt)) + out, err := PrepareAST(stmt, NewReservedVars(prefix, known), bv, true, "ks", 0, "", map[string]string{}, nil, nil) + require.NoError(t, err) + assert.Equal(t, tc.outstmt, String(out.AST)) assert.Equal(t, tc.outbv, bv) }) } @@ -476,9 +478,10 @@ func TestNormalizeInvalidDates(t *testing.T) { t.Run(tc.in, func(t *testing.T) { stmt, err := parser.Parse(tc.in) require.NoError(t, err) - known := GetBindvars(stmt) + known := getBindvars(stmt) bv := make(map[string]*querypb.BindVariable) - require.EqualError(t, Normalize(stmt, NewReservedVars("bv", known), bv), tc.err.Error()) + _, err = PrepareAST(stmt, NewReservedVars("bv", known), bv, true, "ks", 0, "", map[string]string{}, nil, nil) + require.EqualError(t, err, tc.err.Error()) }) } } @@ -498,9 +501,10 @@ func TestNormalizeValidSQL(t *testing.T) { } bv := make(map[string]*querypb.BindVariable) known := make(BindVars) - err = Normalize(tree, NewReservedVars("vtg", known), bv) + + out, err := PrepareAST(tree, NewReservedVars("vtg", known), bv, true, "ks", 0, "", map[string]string{}, nil, nil) require.NoError(t, err) - normalizerOutput := String(tree) + normalizerOutput := String(out.AST) if normalizerOutput == "otheradmin" || normalizerOutput == "otherread" { return } @@ -529,9 +533,9 @@ func TestNormalizeOneCasae(t *testing.T) { } bv := make(map[string]*querypb.BindVariable) known := make(BindVars) - err = Normalize(tree, NewReservedVars("vtg", known), bv) + out, err := PrepareAST(tree, NewReservedVars("vtg", known), bv, true, "ks", 0, "", map[string]string{}, nil, nil) require.NoError(t, err) - normalizerOutput := String(tree) + normalizerOutput := String(out.AST) require.EqualValues(t, testOne.output, normalizerOutput) if normalizerOutput == "otheradmin" || normalizerOutput == "otherread" { return @@ -546,7 +550,7 @@ func TestGetBindVars(t *testing.T) { if err != nil { t.Fatal(err) } - got := GetBindvars(stmt) + got := getBindvars(stmt) want := map[string]struct{}{ "v1": {}, "v2": {}, @@ -559,6 +563,586 @@ func TestGetBindVars(t *testing.T) { } } +type testCaseSetVar struct { + in, expected, setVarComment string +} + +type testCaseSysVar struct { + in, expected string + sysVar map[string]string +} + +type myTestCase struct { + in, expected string + liid, db, foundRows, rowCount, rawGTID, rawTimeout, sessTrackGTID bool + ddlStrategy, migrationContext, sessionUUID, sessionEnableSystemSettings bool + udv int + autocommit, foreignKeyChecks, clientFoundRows, skipQueryPlanCache, socket, queryTimeout bool + sqlSelectLimit, transactionMode, workload, version, versionComment bool +} + +func TestRewrites(in *testing.T) { + tests := []myTestCase{{ + in: "SELECT 42", + expected: "SELECT 42", + // no bindvar needs + }, { + in: "SELECT @@version", + expected: "SELECT :__vtversion as `@@version`", + version: true, + }, { + in: "SELECT @@query_timeout", + expected: "SELECT :__vtquery_timeout as `@@query_timeout`", + queryTimeout: true, + }, { + in: "SELECT @@version_comment", + expected: "SELECT :__vtversion_comment as `@@version_comment`", + versionComment: true, + }, { + in: "SELECT @@enable_system_settings", + expected: "SELECT :__vtenable_system_settings as `@@enable_system_settings`", + sessionEnableSystemSettings: true, + }, { + in: "SELECT last_insert_id()", + expected: "SELECT :__lastInsertId as `last_insert_id()`", + liid: true, + }, { + in: "SELECT database()", + expected: "SELECT :__vtdbname as `database()`", + db: true, + }, { + in: "SELECT database() from test", + expected: "SELECT database() from test", + // no bindvar needs + }, { + in: "SELECT last_insert_id() as test", + expected: "SELECT :__lastInsertId as test", + liid: true, + }, { + in: "SELECT last_insert_id() + database()", + expected: "SELECT :__lastInsertId + :__vtdbname as `last_insert_id() + database()`", + db: true, liid: true, + }, { + // unnest database() call + in: "select (select database()) from test", + expected: "select database() as `(select database() from dual)` from test", + // no bindvar needs + }, { + // unnest database() call + in: "select (select database() from dual) from test", + expected: "select database() as `(select database() from dual)` from test", + // no bindvar needs + }, { + in: "select (select database() from dual) from dual", + expected: "select :__vtdbname as `(select database() from dual)` from dual", + db: true, + }, { + // don't unnest solo columns + in: "select 1 as foobar, (select foobar)", + expected: "select 1 as foobar, (select foobar from dual) from dual", + }, { + in: "select id from user where database()", + expected: "select id from user where database()", + // no bindvar needs + }, { + in: "select table_name from information_schema.tables where table_schema = database()", + expected: "select table_name from information_schema.tables where table_schema = database()", + // no bindvar needs + }, { + in: "select schema()", + expected: "select :__vtdbname as `schema()`", + db: true, + }, { + in: "select found_rows()", + expected: "select :__vtfrows as `found_rows()`", + foundRows: true, + }, { + in: "select @`x y`", + expected: "select :__vtudvx_y as `@``x y``` from dual", + udv: 1, + }, { + in: "select id from t where id = @x and val = @y", + expected: "select id from t where id = :__vtudvx and val = :__vtudvy", + db: false, udv: 2, + }, { + in: "insert into t(id) values(@xyx)", + expected: "insert into t(id) values(:__vtudvxyx)", + db: false, udv: 1, + }, { + in: "select row_count()", + expected: "select :__vtrcount as `row_count()`", + rowCount: true, + }, { + in: "SELECT lower(database())", + expected: "SELECT lower(:__vtdbname) as `lower(database())`", + db: true, + }, { + in: "SELECT @@autocommit", + expected: "SELECT :__vtautocommit as `@@autocommit`", + autocommit: true, + }, { + in: "SELECT @@client_found_rows", + expected: "SELECT :__vtclient_found_rows as `@@client_found_rows`", + clientFoundRows: true, + }, { + in: "SELECT @@skip_query_plan_cache", + expected: "SELECT :__vtskip_query_plan_cache as `@@skip_query_plan_cache`", + skipQueryPlanCache: true, + }, { + in: "SELECT @@sql_select_limit", + expected: "SELECT :__vtsql_select_limit as `@@sql_select_limit`", + sqlSelectLimit: true, + }, { + in: "SELECT @@transaction_mode", + expected: "SELECT :__vttransaction_mode as `@@transaction_mode`", + transactionMode: true, + }, { + in: "SELECT @@workload", + expected: "SELECT :__vtworkload as `@@workload`", + workload: true, + }, { + in: "SELECT @@socket", + expected: "SELECT :__vtsocket as `@@socket`", + socket: true, + }, { + in: "select (select 42) from dual", + expected: "select 42 as `(select 42 from dual)` from dual", + }, { + in: "select * from user where col = (select 42)", + expected: "select * from user where col = 42", + }, { + in: "select * from (select 42) as t", // this is not an expression, and should not be rewritten + expected: "select * from (select 42) as t", + }, { + in: `select (select (select (select (select (select last_insert_id()))))) as x`, + expected: "select :__lastInsertId as x from dual", + liid: true, + }, { + in: `select * from (select last_insert_id()) as t`, + expected: "select * from (select :__lastInsertId as `last_insert_id()` from dual) as t", + liid: true, + }, { + in: `select * from user where col = @@ddl_strategy`, + expected: "select * from user where col = :__vtddl_strategy", + ddlStrategy: true, + }, { + in: `select * from user where col = @@migration_context`, + expected: "select * from user where col = :__vtmigration_context", + migrationContext: true, + }, { + in: `select * from user where col = @@read_after_write_gtid OR col = @@read_after_write_timeout OR col = @@session_track_gtids`, + expected: "select * from user where col = :__vtread_after_write_gtid or col = :__vtread_after_write_timeout or col = :__vtsession_track_gtids", + rawGTID: true, rawTimeout: true, sessTrackGTID: true, + }, { + in: "SELECT * FROM tbl WHERE id IN (SELECT 1 FROM dual)", + expected: "SELECT * FROM tbl WHERE id IN (1)", + }, { + in: "SELECT * FROM tbl WHERE id IN (SELECT last_insert_id() FROM dual)", + expected: "SELECT * FROM tbl WHERE id IN (:__lastInsertId)", + liid: true, + }, { + in: "SELECT * FROM tbl WHERE id IN (SELECT (SELECT 1 FROM dual WHERE 1 = 0) FROM dual)", + expected: "SELECT * FROM tbl WHERE id IN (SELECT 1 FROM dual WHERE 1 = 0)", + }, { + in: "SELECT * FROM tbl WHERE id IN (SELECT 1 FROM dual WHERE 1 = 0)", + expected: "SELECT * FROM tbl WHERE id IN (SELECT 1 FROM dual WHERE 1 = 0)", + }, { + in: "SELECT * FROM tbl WHERE id IN (SELECT 1,2 FROM dual)", + expected: "SELECT * FROM tbl WHERE id IN (SELECT 1,2 FROM dual)", + }, { + in: "SELECT * FROM tbl WHERE id IN (SELECT 1 FROM dual ORDER BY 1)", + expected: "SELECT * FROM tbl WHERE id IN (SELECT 1 FROM dual ORDER BY 1)", + }, { + in: "SELECT * FROM tbl WHERE id IN (SELECT id FROM user GROUP BY id)", + expected: "SELECT * FROM tbl WHERE id IN (SELECT id FROM user GROUP BY id)", + }, { + in: "SELECT * FROM tbl WHERE id IN (SELECT 1 FROM dual, user)", + expected: "SELECT * FROM tbl WHERE id IN (SELECT 1 FROM dual, user)", + }, { + in: "SELECT * FROM tbl WHERE id IN (SELECT 1 FROM dual limit 1)", + expected: "SELECT * FROM tbl WHERE id IN (SELECT 1 FROM dual limit 1)", + }, { + // SELECT * behaves different depending the join type used, so if that has been used, we won't rewrite + in: "SELECT * FROM A JOIN B USING (id1,id2,id3)", + expected: "SELECT * FROM A JOIN B USING (id1,id2,id3)", + }, { + in: "CALL proc(@foo)", + expected: "CALL proc(:__vtudvfoo)", + udv: 1, + }, { + in: "SELECT * FROM tbl WHERE NOT id = 42", + expected: "SELECT * FROM tbl WHERE id != 42", + }, { + in: "SELECT * FROM tbl WHERE not id < 12", + expected: "SELECT * FROM tbl WHERE id >= 12", + }, { + in: "SELECT * FROM tbl WHERE not id > 12", + expected: "SELECT * FROM tbl WHERE id <= 12", + }, { + in: "SELECT * FROM tbl WHERE not id <= 33", + expected: "SELECT * FROM tbl WHERE id > 33", + }, { + in: "SELECT * FROM tbl WHERE not id >= 33", + expected: "SELECT * FROM tbl WHERE id < 33", + }, { + in: "SELECT * FROM tbl WHERE not id != 33", + expected: "SELECT * FROM tbl WHERE id = 33", + }, { + in: "SELECT * FROM tbl WHERE not id in (1,2,3)", + expected: "SELECT * FROM tbl WHERE id not in (1,2,3)", + }, { + in: "SELECT * FROM tbl WHERE not id not in (1,2,3)", + expected: "SELECT * FROM tbl WHERE id in (1,2,3)", + }, { + in: "SELECT * FROM tbl WHERE not id not in (1,2,3)", + expected: "SELECT * FROM tbl WHERE id in (1,2,3)", + }, { + in: "SELECT * FROM tbl WHERE not id like '%foobar'", + expected: "SELECT * FROM tbl WHERE id not like '%foobar'", + }, { + in: "SELECT * FROM tbl WHERE not id not like '%foobar'", + expected: "SELECT * FROM tbl WHERE id like '%foobar'", + }, { + in: "SELECT * FROM tbl WHERE not id regexp '%foobar'", + expected: "SELECT * FROM tbl WHERE id not regexp '%foobar'", + }, { + in: "SELECT * FROM tbl WHERE not id not regexp '%foobar'", + expected: "select * from tbl where id regexp '%foobar'", + }, { + in: "SELECT * FROM tbl WHERE exists(select col1, col2 from other_table where foo > bar)", + expected: "SELECT * FROM tbl WHERE exists(select 1 from other_table where foo > bar)", + }, { + in: "SELECT * FROM tbl WHERE exists(select col1, col2 from other_table where foo > bar limit 100 offset 34)", + expected: "SELECT * FROM tbl WHERE exists(select 1 from other_table where foo > bar limit 100 offset 34)", + }, { + in: "SELECT * FROM tbl WHERE exists(select col1, col2, count(*) from other_table where foo > bar group by col1, col2)", + expected: "SELECT * FROM tbl WHERE exists(select 1 from other_table where foo > bar)", + }, { + in: "SELECT * FROM tbl WHERE exists(select col1, col2 from other_table where foo > bar group by col1, col2)", + expected: "SELECT * FROM tbl WHERE exists(select 1 from other_table where foo > bar)", + }, { + in: "SELECT * FROM tbl WHERE exists(select count(*) from other_table where foo > bar)", + expected: "SELECT * FROM tbl WHERE true", + }, { + in: "SELECT * FROM tbl WHERE exists(select col1, col2, count(*) from other_table where foo > bar group by col1, col2 having count(*) > 3)", + expected: "SELECT * FROM tbl WHERE exists(select col1, col2, count(*) from other_table where foo > bar group by col1, col2 having count(*) > 3)", + }, { + in: "SELECT id, name, salary FROM user_details", + expected: "SELECT id, name, salary FROM (select user.id, user.name, user_extra.salary from user join user_extra where user.id = user_extra.user_id) as user_details", + }, { + in: "select max(distinct c1), min(distinct c2), avg(distinct c3), sum(distinct c4), count(distinct c5), group_concat(distinct c6) from tbl", + expected: "select max(c1) as `max(distinct c1)`, min(c2) as `min(distinct c2)`, avg(distinct c3), sum(distinct c4), count(distinct c5), group_concat(distinct c6) from tbl", + }, { + in: "SHOW VARIABLES", + expected: "SHOW VARIABLES", + autocommit: true, + foreignKeyChecks: true, + clientFoundRows: true, + skipQueryPlanCache: true, + sqlSelectLimit: true, + transactionMode: true, + workload: true, + version: true, + versionComment: true, + ddlStrategy: true, + migrationContext: true, + sessionUUID: true, + sessionEnableSystemSettings: true, + rawGTID: true, + rawTimeout: true, + sessTrackGTID: true, + socket: true, + queryTimeout: true, + }, { + in: "SHOW GLOBAL VARIABLES", + expected: "SHOW GLOBAL VARIABLES", + autocommit: true, + foreignKeyChecks: true, + clientFoundRows: true, + skipQueryPlanCache: true, + sqlSelectLimit: true, + transactionMode: true, + workload: true, + version: true, + versionComment: true, + ddlStrategy: true, + migrationContext: true, + sessionUUID: true, + sessionEnableSystemSettings: true, + rawGTID: true, + rawTimeout: true, + sessTrackGTID: true, + socket: true, + queryTimeout: true, + }} + parser := NewTestParser() + for _, tc := range tests { + in.Run(tc.in, func(t *testing.T) { + require := require.New(t) + stmt, known, err := parser.Parse2(tc.in) + require.NoError(err) + vars := NewReservedVars("v", known) + result, err := PrepareAST( + stmt, + vars, + map[string]*querypb.BindVariable{}, + false, + "ks", + 0, + "", + map[string]string{}, + nil, + &fakeViews{}, + ) + require.NoError(err) + + expected, err := parser.Parse(tc.expected) + require.NoError(err, "test expectation does not parse [%s]", tc.expected) + + s := String(expected) + assert := assert.New(t) + assert.Equal(s, String(result.AST)) + assert.Equal(tc.liid, result.NeedsFuncResult(LastInsertIDName), "should need last insert id") + assert.Equal(tc.db, result.NeedsFuncResult(DBVarName), "should need database name") + assert.Equal(tc.foundRows, result.NeedsFuncResult(FoundRowsName), "should need found rows") + assert.Equal(tc.rowCount, result.NeedsFuncResult(RowCountName), "should need row count") + assert.Equal(tc.udv, len(result.NeedUserDefinedVariables), "count of user defined variables") + assert.Equal(tc.autocommit, result.NeedsSysVar(sysvars.Autocommit.Name), "should need :__vtautocommit") + assert.Equal(tc.foreignKeyChecks, result.NeedsSysVar(sysvars.ForeignKeyChecks), "should need :__vtforeignKeyChecks") + assert.Equal(tc.clientFoundRows, result.NeedsSysVar(sysvars.ClientFoundRows.Name), "should need :__vtclientFoundRows") + assert.Equal(tc.skipQueryPlanCache, result.NeedsSysVar(sysvars.SkipQueryPlanCache.Name), "should need :__vtskipQueryPlanCache") + assert.Equal(tc.sqlSelectLimit, result.NeedsSysVar(sysvars.SQLSelectLimit.Name), "should need :__vtsqlSelectLimit") + assert.Equal(tc.transactionMode, result.NeedsSysVar(sysvars.TransactionMode.Name), "should need :__vttransactionMode") + assert.Equal(tc.workload, result.NeedsSysVar(sysvars.Workload.Name), "should need :__vtworkload") + assert.Equal(tc.queryTimeout, result.NeedsSysVar(sysvars.QueryTimeout.Name), "should need :__vtquery_timeout") + assert.Equal(tc.ddlStrategy, result.NeedsSysVar(sysvars.DDLStrategy.Name), "should need ddlStrategy") + assert.Equal(tc.migrationContext, result.NeedsSysVar(sysvars.MigrationContext.Name), "should need migrationContext") + assert.Equal(tc.sessionUUID, result.NeedsSysVar(sysvars.SessionUUID.Name), "should need sessionUUID") + assert.Equal(tc.sessionEnableSystemSettings, result.NeedsSysVar(sysvars.SessionEnableSystemSettings.Name), "should need sessionEnableSystemSettings") + assert.Equal(tc.rawGTID, result.NeedsSysVar(sysvars.ReadAfterWriteGTID.Name), "should need rawGTID") + assert.Equal(tc.rawTimeout, result.NeedsSysVar(sysvars.ReadAfterWriteTimeOut.Name), "should need rawTimeout") + assert.Equal(tc.sessTrackGTID, result.NeedsSysVar(sysvars.SessionTrackGTIDs.Name), "should need sessTrackGTID") + assert.Equal(tc.version, result.NeedsSysVar(sysvars.Version.Name), "should need Vitess version") + assert.Equal(tc.versionComment, result.NeedsSysVar(sysvars.VersionComment.Name), "should need Vitess version") + assert.Equal(tc.socket, result.NeedsSysVar(sysvars.Socket.Name), "should need :__vtsocket") + }) + } +} + +type fakeViews struct{} + +func (*fakeViews) FindView(name TableName) TableStatement { + if name.Name.String() != "user_details" { + return nil + } + parser := NewTestParser() + statement, err := parser.Parse("select user.id, user.name, user_extra.salary from user join user_extra where user.id = user_extra.user_id") + if err != nil { + return nil + } + return statement.(TableStatement) +} + +func TestRewritesWithSetVarComment(in *testing.T) { + tests := []testCaseSetVar{{ + in: "select 1", + expected: "select 1", + setVarComment: "", + }, { + in: "select 1", + expected: "select /*+ AA(a) */ 1", + setVarComment: "AA(a)", + }, { + in: "insert /* toto */ into t(id) values(1)", + expected: "insert /*+ AA(a) */ /* toto */ into t(id) values(1)", + setVarComment: "AA(a)", + }, { + in: "select /* toto */ * from t union select * from s", + expected: "select /*+ AA(a) */ /* toto */ * from t union select /*+ AA(a) */ * from s", + setVarComment: "AA(a)", + }, { + in: "vstream /* toto */ * from t1", + expected: "vstream /*+ AA(a) */ /* toto */ * from t1", + setVarComment: "AA(a)", + }, { + in: "stream /* toto */ t from t1", + expected: "stream /*+ AA(a) */ /* toto */ t from t1", + setVarComment: "AA(a)", + }, { + in: "update /* toto */ t set id = 1", + expected: "update /*+ AA(a) */ /* toto */ t set id = 1", + setVarComment: "AA(a)", + }, { + in: "delete /* toto */ from t", + expected: "delete /*+ AA(a) */ /* toto */ from t", + setVarComment: "AA(a)", + }} + + parser := NewTestParser() + for _, tc := range tests { + in.Run(tc.in, func(t *testing.T) { + require := require.New(t) + stmt, err := parser.Parse(tc.in) + require.NoError(err) + vars := NewReservedVars("v", nil) + result, err := PrepareAST( + stmt, + vars, + map[string]*querypb.BindVariable{}, + false, + "ks", + 0, + tc.setVarComment, + map[string]string{}, + nil, + &fakeViews{}, + ) + + require.NoError(err) + + expected, err := parser.Parse(tc.expected) + require.NoError(err, "test expectation does not parse [%s]", tc.expected) + + assert.Equal(t, String(expected), String(result.AST)) + }) + } +} + +func TestRewritesSysVar(in *testing.T) { + tests := []testCaseSysVar{{ + in: "select @x = @@sql_mode", + expected: "select :__vtudvx = @@sql_mode as `@x = @@sql_mode` from dual", + }, { + in: "select @x = @@sql_mode", + expected: "select :__vtudvx = :__vtsql_mode as `@x = @@sql_mode` from dual", + sysVar: map[string]string{"sql_mode": "' '"}, + }, { + in: "SELECT @@tx_isolation", + expected: "select @@tx_isolation from dual", + }, { + in: "SELECT @@transaction_isolation", + expected: "select @@transaction_isolation from dual", + }, { + in: "SELECT @@session.transaction_isolation", + expected: "select @@session.transaction_isolation from dual", + }, { + in: "SELECT @@tx_isolation", + sysVar: map[string]string{"tx_isolation": "'READ-COMMITTED'"}, + expected: "select :__vttx_isolation as `@@tx_isolation` from dual", + }, { + in: "SELECT @@transaction_isolation", + sysVar: map[string]string{"transaction_isolation": "'READ-COMMITTED'"}, + expected: "select :__vttransaction_isolation as `@@transaction_isolation` from dual", + }, { + in: "SELECT @@session.transaction_isolation", + sysVar: map[string]string{"transaction_isolation": "'READ-COMMITTED'"}, + expected: "select :__vttransaction_isolation as `@@session.transaction_isolation` from dual", + }} + + parser := NewTestParser() + for _, tc := range tests { + in.Run(tc.in, func(t *testing.T) { + require := require.New(t) + stmt, err := parser.Parse(tc.in) + require.NoError(err) + vars := NewReservedVars("v", nil) + result, err := PrepareAST( + stmt, + vars, + map[string]*querypb.BindVariable{}, + false, + "ks", + 0, + "", + tc.sysVar, + nil, + &fakeViews{}, + ) + + require.NoError(err) + + expected, err := parser.Parse(tc.expected) + require.NoError(err, "test expectation does not parse [%s]", tc.expected) + + assert.Equal(t, String(expected), String(result.AST)) + }) + } +} + +func TestRewritesWithDefaultKeyspace(in *testing.T) { + tests := []myTestCase{{ + in: "SELECT 1 from x.test", + expected: "SELECT 1 from x.test", // no change + }, { + in: "SELECT x.col as c from x.test", + expected: "SELECT x.col as c from x.test", // no change + }, { + in: "SELECT 1 from test", + expected: "SELECT 1 from sys.test", + }, { + in: "SELECT 1 from test as t", + expected: "SELECT 1 from sys.test as t", + }, { + in: "SELECT 1 from `test 24` as t", + expected: "SELECT 1 from sys.`test 24` as t", + }, { + in: "SELECT 1, (select 1 from test) from x.y", + expected: "SELECT 1, (select 1 from sys.test) from x.y", + }, { + in: "SELECT 1 from (select 2 from test) t", + expected: "SELECT 1 from (select 2 from sys.test) t", + }, { + in: "SELECT 1 from test where exists(select 2 from test)", + expected: "SELECT 1 from sys.test where exists(select 1 from sys.test)", + }, { + in: "SELECT 1 from dual", + expected: "SELECT 1 from dual", + }, { + in: "SELECT (select 2 from dual) from DUAL", + expected: "SELECT 2 as `(select 2 from dual)` from DUAL", + }} + + parser := NewTestParser() + for _, tc := range tests { + in.Run(tc.in, func(t *testing.T) { + require := require.New(t) + stmt, err := parser.Parse(tc.in) + require.NoError(err) + vars := NewReservedVars("v", nil) + result, err := PrepareAST( + stmt, + vars, + map[string]*querypb.BindVariable{}, + false, + "sys", + 0, + "", + map[string]string{}, + nil, + &fakeViews{}, + ) + + require.NoError(err) + + expected, err := parser.Parse(tc.expected) + require.NoError(err, "test expectation does not parse [%s]", tc.expected) + + assert.Equal(t, String(expected), String(result.AST)) + }) + } +} + +func TestReservedVars(t *testing.T) { + for _, prefix := range []string{"vtg", "bv"} { + t.Run("prefix_"+prefix, func(t *testing.T) { + reserved := NewReservedVars(prefix, make(BindVars)) + for i := 1; i < 1000; i++ { + require.Equal(t, fmt.Sprintf("%s%d", prefix, i), reserved.nextUnusedVar()) + } + }) + } +} + /* Skipping ColName, TableName: BenchmarkNormalize-8 1000000 2205 ns/op 821 B/op 27 allocs/op @@ -573,7 +1157,8 @@ func BenchmarkNormalize(b *testing.B) { b.Fatal(err) } for i := 0; i < b.N; i++ { - require.NoError(b, Normalize(ast, NewReservedVars("", reservedVars), map[string]*querypb.BindVariable{})) + _, err := PrepareAST(ast, NewReservedVars("", reservedVars), map[string]*querypb.BindVariable{}, true, "ks", 0, "", map[string]string{}, nil, nil) + require.NoError(b, err) } } @@ -602,7 +1187,8 @@ func BenchmarkNormalizeTraces(b *testing.B) { for i := 0; i < b.N; i++ { for i, query := range parsed { - _ = Normalize(query, NewReservedVars("", reservedVars[i]), map[string]*querypb.BindVariable{}) + _, err := PrepareAST(query, NewReservedVars("", reservedVars[i]), map[string]*querypb.BindVariable{}, true, "ks", 0, "", map[string]string{}, nil, nil) + require.NoError(b, err) } } }) diff --git a/go/vt/sqlparser/parse_test.go b/go/vt/sqlparser/parse_test.go index 5e075d51baa..6c4a6e634ec 100644 --- a/go/vt/sqlparser/parse_test.go +++ b/go/vt/sqlparser/parse_test.go @@ -1805,6 +1805,9 @@ var ( }, { input: "alter table a add spatial key indexes (column1)", output: "alter table a add spatial key `indexes` (column1)", + }, { + input: "alter table locations add lat_long point as (point(geocode->>'$.geometry.location.lat', geocode->>'$.geometry.location.lng')) SRID 4326 after geocodes", + output: "alter table locations add column lat_long point as (point(json_unquote(json_extract(geocode, '$.geometry.location.lat')), json_unquote(json_extract(geocode, '$.geometry.location.lng')))) virtual srid 4326 after geocodes", }, { input: "create table a", partialDDL: true, @@ -5975,6 +5978,10 @@ partition by range (YEAR(purchased)) subpartition by hash (TO_DAYS(purchased)) input: "create table t (id int, vec VECTOR(4))", output: "create table t (\n\tid int,\n\tvec VECTOR(4)\n)", }, + { + input: "CREATE TABLE `locations` (`geocode` json DEFAULT NULL, `lat_long` point GENERATED ALWAYS AS (point(json_unquote(json_extract(`geocode`,_utf8mb4'$.geometry.location.lat')),json_unquote(json_extract(`geocode`,_utf8mb4'$.geometry.location.lng')))) VIRTUAL /*!80003 SRID 4326 */) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci", + output: "create table locations (\n\tgeocode json default null,\n\tlat_long point as (point(json_unquote(json_extract(geocode, _utf8mb4 '$.geometry.location.lat')), json_unquote(json_extract(geocode, _utf8mb4 '$.geometry.location.lng')))) virtual srid 4326\n) ENGINE InnoDB,\n CHARSET utf8mb4,\n COLLATE utf8mb4_0900_ai_ci", + }, } parser := NewTestParser() for _, test := range createTableQueries { @@ -6347,6 +6354,17 @@ func TestParseVersionedComments(t *testing.T) { partition by range (id) (partition x values less than (5) engine InnoDB, partition t values less than (20) engine InnoDB)`, + }, { + input: "CREATE TABLE `TABLE_NAME` (\n `col1` longblob /*!50633 COLUMN_FORMAT COMPRESSED */,\n `id` bigint unsigned NOT NULL,\n PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin ROW_FORMAT=COMPRESSED", + mysqlVersion: "8.0.1", + output: `create table TABLE_NAME ( + col1 longblob column_format compressed, + id bigint unsigned not null, + primary key (id) +) ENGINE InnoDB, + CHARSET utf8mb4, + COLLATE utf8mb4_bin, + ROW_FORMAT COMPRESSED`, }, } @@ -6354,7 +6372,7 @@ partition by range (id) t.Run(testcase.input+":"+testcase.mysqlVersion, func(t *testing.T) { parser, err := New(Options{MySQLServerVersion: testcase.mysqlVersion}) require.NoError(t, err) - tree, err := parser.Parse(testcase.input) + tree, err := parser.ParseStrictDDL(testcase.input) require.NoError(t, err, testcase.input) out := String(tree) require.Equal(t, testcase.output, out) diff --git a/go/vt/sqlparser/redact_query.go b/go/vt/sqlparser/redact_query.go index e6b8c009c68..2d018d7c0eb 100644 --- a/go/vt/sqlparser/redact_query.go +++ b/go/vt/sqlparser/redact_query.go @@ -28,10 +28,10 @@ func (p *Parser) RedactSQLQuery(sql string) (string, error) { return "", err } - err = Normalize(stmt, NewReservedVars("redacted", reservedVars), bv) + out, err := PrepareAST(stmt, NewReservedVars("redacted", reservedVars), bv, true, "ks", 0, "", map[string]string{}, nil, nil) if err != nil { return "", err } - return comments.Leading + String(stmt) + comments.Trailing, nil + return comments.Leading + String(out.AST) + comments.Trailing, nil } diff --git a/go/vt/sqlparser/sql.go b/go/vt/sqlparser/sql.go index 4569fbc7686..ff9bc5cb71f 100644 --- a/go/vt/sqlparser/sql.go +++ b/go/vt/sqlparser/sql.go @@ -1553,239 +1553,239 @@ var yyExca = [...]int{ 149, 168, 191, 168, 364, 168, - -2, 526, + -2, 528, -1, 61, - 38, 787, - 254, 787, - 265, 787, - 300, 801, - 301, 801, - -2, 789, + 38, 789, + 254, 789, + 265, 789, + 300, 803, + 301, 803, + -2, 791, -1, 66, - 256, 825, - -2, 823, + 256, 827, + -2, 825, -1, 124, - 253, 1630, + 253, 1632, -2, 134, -1, 126, 1, 161, 756, 161, -2, 168, -1, 137, - 150, 411, - 259, 411, - -2, 515, + 150, 413, + 259, 413, + -2, 517, -1, 156, 149, 168, 191, 168, 364, 168, - -2, 535, + -2, 537, -1, 755, 177, 41, -2, 43, -1, 964, - 95, 1647, - -2, 1485, + 95, 1649, + -2, 1487, -1, 965, - 95, 1648, - 236, 1652, - -2, 1486, + 95, 1650, + 236, 1654, + -2, 1488, -1, 966, - 236, 1651, + 236, 1653, -2, 42, -1, 1052, - 65, 899, - -2, 912, + 65, 901, + -2, 914, -1, 1141, - 264, 1112, - 269, 1112, - -2, 422, + 264, 1114, + 269, 1114, + -2, 424, -1, 1226, - 1, 583, - 756, 583, + 1, 585, + 756, 585, -2, 168, -1, 1537, - 236, 1652, - -2, 1486, + 236, 1654, + -2, 1488, -1, 1750, - 65, 900, - -2, 916, + 65, 902, + -2, 918, -1, 1751, - 65, 901, - -2, 917, + 65, 903, + -2, 919, -1, 1816, 149, 168, 191, 168, 364, 168, - -2, 461, + -2, 463, -1, 1899, - 150, 411, - 259, 411, - -2, 515, + 150, 413, + 259, 413, + -2, 517, -1, 1908, - 264, 1113, - 269, 1113, - -2, 423, + 264, 1115, + 269, 1115, + -2, 425, -1, 2357, - 236, 1656, - -2, 1650, + 236, 1658, + -2, 1652, -1, 2358, - 236, 1652, - -2, 1648, + 236, 1654, + -2, 1650, -1, 2463, 149, 168, 191, 168, 364, 168, - -2, 462, + -2, 464, -1, 2470, 28, 189, -2, 191, -1, 2936, 86, 99, 96, 99, - -2, 979, + -2, 981, -1, 3004, - 731, 705, - -2, 679, + 731, 707, + -2, 681, -1, 3229, - 55, 1589, - -2, 1583, - -1, 4066, - 731, 705, - -2, 693, - -1, 4158, - 98, 637, - 104, 637, - 114, 637, - 193, 637, - 194, 637, - 195, 637, - 196, 637, - 197, 637, - 198, 637, - 199, 637, - 200, 637, - 201, 637, - 202, 637, - 203, 637, - 204, 637, - 205, 637, - 206, 637, - 207, 637, - 208, 637, - 209, 637, - 210, 637, - 211, 637, - 212, 637, - 213, 637, - 214, 637, - 215, 637, - 216, 637, - 217, 637, - 218, 637, - 219, 637, - 220, 637, - 221, 637, - 222, 637, - 223, 637, - 224, 637, - 225, 637, - 226, 637, - 227, 637, - 228, 637, - 229, 637, - 230, 637, - 231, 637, - 232, 637, - 233, 637, - 234, 637, - -2, 2029, + 55, 1591, + -2, 1585, + -1, 4067, + 731, 707, + -2, 695, + -1, 4159, + 98, 639, + 104, 639, + 114, 639, + 193, 639, + 194, 639, + 195, 639, + 196, 639, + 197, 639, + 198, 639, + 199, 639, + 200, 639, + 201, 639, + 202, 639, + 203, 639, + 204, 639, + 205, 639, + 206, 639, + 207, 639, + 208, 639, + 209, 639, + 210, 639, + 211, 639, + 212, 639, + 213, 639, + 214, 639, + 215, 639, + 216, 639, + 217, 639, + 218, 639, + 219, 639, + 220, 639, + 221, 639, + 222, 639, + 223, 639, + 224, 639, + 225, 639, + 226, 639, + 227, 639, + 228, 639, + 229, 639, + 230, 639, + 231, 639, + 232, 639, + 233, 639, + 234, 639, + -2, 2031, } const yyPrivate = 57344 -const yyLast = 56577 +const yyLast = 56210 var yyAct = [...]int{ - 980, 3716, 975, 87, 4246, 2162, 3717, 4233, 3718, 3380, - 4125, 968, 4137, 4200, 3281, 967, 4201, 2150, 4047, 3516, - 2460, 3288, 1292, 4156, 2386, 3952, 3242, 4029, 3338, 2185, - 3343, 3340, 3339, 3337, 3342, 1819, 3341, 4027, 3653, 2388, - 1294, 3666, 3095, 3358, 2029, 4098, 3296, 3329, 2088, 3180, - 2535, 5, 3357, 759, 3246, 3243, 3562, 3556, 3759, 3069, - 3094, 2896, 3230, 2498, 754, 2434, 3051, 1770, 929, 787, - 3546, 3387, 933, 753, 928, 42, 3360, 3001, 2970, 2522, - 2503, 2415, 3584, 2971, 2566, 1103, 1050, 2972, 87, 165, - 2448, 2431, 1876, 2921, 1071, 1924, 1047, 2436, 2902, 1078, - 2435, 1149, 3240, 2886, 749, 1173, 2870, 2310, 41, 1050, - 43, 2342, 2146, 2184, 2544, 3042, 151, 2309, 1906, 2096, - 2521, 2423, 2583, 2505, 1113, 2963, 1136, 1808, 1131, 2938, - 982, 1788, 1774, 102, 1550, 2190, 2438, 106, 1731, 107, - 2121, 2110, 1475, 1458, 2025, 1913, 3245, 1110, 1107, 769, - 1070, 1142, 1885, 2909, 1111, 2005, 756, 2494, 1049, 1137, - 1053, 1139, 1138, 1807, 1088, 1793, 1090, 101, 3754, 2198, - 2217, 2868, 2495, 1059, 1753, 1533, 109, 1509, 2087, 1282, - 3746, 1073, 2416, 3573, 1056, 764, 2037, 85, 169, 129, - 127, 128, 3517, 1898, 1045, 134, 1054, 135, 1055, 757, - 1222, 1083, 1057, 930, 1554, 100, 4234, 1290, 3654, 3326, - 1268, 4082, 2537, 84, 1082, 93, 1559, 2537, 2538, 2539, - 3024, 3023, 108, 2992, 2581, 1476, 3646, 4183, 1044, 3609, - 1776, 3059, 3060, 4078, 4077, 1063, 2103, 4083, 746, 1990, - 1153, 130, 2102, 2101, 689, 2100, 1178, 136, 1104, 2099, - 2098, 2383, 2384, 2068, 1238, 686, 2866, 687, 2635, 1175, - 3226, 2570, 1186, 4177, 4204, 3184, 4256, 3721, 4199, 3721, - 1064, 4224, 1192, 1193, 1194, 3520, 1197, 1198, 1199, 1200, - 2898, 3519, 1203, 1204, 1205, 1206, 1207, 1208, 1209, 1210, - 1211, 1212, 1213, 1214, 1215, 1216, 1217, 1218, 1219, 1048, - 1152, 1098, 2407, 2412, 1097, 2569, 731, 1046, 1239, 1061, - 2, 747, 4239, 1128, 4056, 130, 1127, 1126, 1125, 1179, - 1182, 1183, 3348, 1779, 1072, 1115, 1772, 2994, 3348, 1472, - 1764, 2411, 1469, 1486, 1492, 1120, 3017, 4238, 731, 4078, - 4030, 3345, 725, 2831, 1777, 2108, 981, 4187, 3406, 4152, - 3948, 3947, 1195, 1780, 113, 114, 115, 1043, 118, 1177, - 1176, 124, 192, 3720, 193, 3720, 3014, 681, 984, 985, - 986, 4214, 4186, 95, 1778, 1096, 1100, 932, 3958, 744, - 745, 4185, 3346, 130, 1129, 131, 4181, 725, 3346, 1038, - 1039, 1040, 1041, 3678, 3667, 1460, 1052, 984, 985, 986, - 4126, 174, 4134, 1096, 1100, 932, 4184, 3659, 2563, 3957, - 3660, 3352, 86, 2155, 4161, 3432, 1887, 3352, 3278, 3279, - 2455, 2456, 4138, 2867, 725, 2947, 1085, 1086, 2946, 3277, - 720, 2948, 3031, 3058, 3032, 4166, 2639, 1471, 86, 2080, - 2081, 1809, 3041, 1810, 2454, 2642, 1482, 2952, 1258, 1474, - 86, 1036, 725, 1035, 1287, 4164, 4048, 1246, 3677, 2995, - 1259, 171, 1247, 97, 172, 4170, 4171, 1263, 1264, 2033, - 2514, 2959, 1252, 2912, 3414, 3298, 3299, 725, 705, 2473, - 2472, 3412, 4165, 1489, 3384, 1490, 1491, 1488, 1453, 3773, - 191, 703, 2633, 2568, 2508, 95, 739, 1246, 4142, 2905, - 2906, 2913, 1247, 3382, 1124, 86, 1231, 1232, 88, 725, - 1245, 2226, 1244, 2079, 2083, 2640, 743, 737, 4205, 1476, - 725, 95, 725, 1805, 3388, 3116, 3349, 4142, 2385, 1221, - 3043, 700, 3349, 95, 1735, 4000, 1980, 4001, 1234, 4206, - 715, 3002, 1470, 2545, 3027, 3375, 2609, 4236, 2610, 2588, - 2611, 1196, 1275, 3376, 1277, 710, 97, 726, 1459, 1260, - 2584, 2590, 1122, 2419, 2006, 2419, 1279, 713, 1286, 1452, - 723, 1253, 3046, 1284, 1285, 1227, 1265, 1267, 724, 3648, - 1981, 3385, 1982, 3647, 3297, 2612, 1266, 2636, 95, 2637, - 1202, 2587, 1274, 1276, 1261, 1262, 3300, 1151, 1201, 2586, - 3383, 3932, 726, 3644, 2589, 175, 1162, 1089, 1160, 1132, - 2218, 2034, 2548, 1133, 181, 2220, 2591, 1738, 3725, 2225, - 2221, 3300, 1151, 2222, 2223, 2224, 2432, 1486, 2219, 2227, - 2228, 2229, 2230, 2231, 2232, 2233, 2234, 2235, 690, 726, - 692, 706, 1133, 728, 1171, 727, 696, 2507, 694, 698, - 707, 699, 1170, 693, 1169, 704, 1168, 1510, 695, 708, - 709, 712, 716, 717, 718, 714, 711, 726, 702, 729, - 4178, 1167, 1166, 3559, 1165, 1164, 1159, 1891, 1172, 3403, - 3183, 1511, 1512, 1513, 1514, 1515, 1516, 1517, 1519, 1518, - 1520, 1521, 726, 1108, 3117, 1123, 4257, 1524, 1145, 4211, - 1150, 1108, 1144, 1272, 1099, 1093, 1091, 1273, 2597, 2593, - 2595, 2596, 2594, 2598, 2599, 2600, 2601, 1278, 3643, 2026, - 1291, 1886, 1291, 1291, 726, 1150, 1108, 1084, 3047, 2574, - 1106, 2573, 1099, 1093, 1091, 726, 2022, 726, 1461, 1189, - 1482, 3211, 1271, 166, 3320, 3026, 1481, 1478, 1479, 1480, - 1485, 1487, 1484, 1884, 1483, 1806, 1163, 3012, 1161, 2417, - 2418, 2417, 2418, 1883, 1477, 2996, 3209, 1882, 2023, 1880, - 1237, 680, 1050, 1534, 1539, 1540, 4179, 1543, 1545, 1546, - 1547, 1548, 1549, 3063, 1552, 1553, 1555, 1555, 3029, 1555, + 980, 3717, 2162, 87, 4236, 3718, 3719, 4048, 4249, 3380, + 4126, 4202, 975, 2150, 1294, 4138, 967, 4203, 2460, 2029, + 3516, 4157, 3281, 3288, 2386, 3953, 4030, 1292, 3329, 3242, + 3654, 3338, 3343, 3340, 3339, 1819, 3337, 3342, 3341, 3667, + 4028, 3095, 3358, 3357, 3180, 3296, 2535, 2388, 2088, 759, + 3246, 5, 3243, 3562, 3069, 3760, 3556, 3094, 3230, 787, + 968, 2415, 2970, 3360, 928, 3051, 2431, 1770, 929, 2896, + 3546, 4099, 753, 2498, 3387, 754, 3001, 2522, 2972, 2971, + 2434, 2503, 3584, 2566, 1173, 165, 1050, 933, 87, 1876, + 42, 1103, 2448, 2921, 2902, 1071, 43, 1047, 2435, 1924, + 2886, 1078, 3240, 2870, 2436, 41, 2342, 2310, 2184, 1050, + 3042, 2146, 2544, 151, 2521, 1906, 2423, 2096, 2505, 2963, + 1131, 2583, 1136, 1808, 1113, 2938, 982, 1788, 2438, 1774, + 1731, 102, 1550, 2190, 2121, 2110, 1475, 2309, 106, 1458, + 107, 2025, 1913, 1110, 1107, 2005, 769, 3245, 1142, 1885, + 2494, 1139, 1111, 2909, 1137, 2495, 1138, 1807, 1088, 1149, + 2416, 764, 1090, 1793, 1533, 1509, 2087, 1282, 3755, 1059, + 1753, 2868, 2217, 1049, 109, 1053, 1070, 2037, 101, 1056, + 3747, 169, 85, 3517, 1055, 129, 127, 128, 134, 1898, + 2198, 135, 93, 1054, 1222, 1045, 1073, 1083, 3573, 1057, + 757, 100, 1554, 84, 4237, 746, 3655, 3326, 1290, 4083, + 1268, 2537, 2538, 2539, 2537, 930, 1082, 108, 3024, 3023, + 1476, 1559, 689, 2992, 2581, 3647, 756, 4185, 1776, 3609, + 3059, 1476, 3060, 1063, 130, 4084, 1044, 4079, 1175, 2383, + 2384, 2103, 1178, 136, 1104, 4078, 2102, 2101, 2100, 3722, + 2099, 1192, 1193, 1194, 2098, 1197, 1198, 1199, 1200, 2068, + 1238, 1203, 1204, 1205, 1206, 1207, 1208, 1209, 1210, 1211, + 1212, 1213, 1214, 1215, 1216, 1217, 1218, 1219, 747, 1098, + 1097, 1064, 686, 4179, 687, 2866, 1061, 2, 3348, 1048, + 1152, 1128, 2635, 3226, 4206, 3184, 1492, 4242, 1153, 2570, + 3520, 1072, 1046, 1990, 4259, 1239, 1779, 4201, 130, 1179, + 1182, 1183, 1127, 1126, 1125, 4057, 1472, 2994, 4227, 1469, + 1186, 1777, 4241, 3722, 3519, 2407, 1772, 2898, 1486, 731, + 1195, 113, 114, 115, 731, 118, 1780, 2412, 124, 1486, + 2411, 193, 725, 2569, 681, 3721, 3348, 4189, 3346, 1120, + 4079, 1778, 981, 1115, 4187, 3017, 744, 745, 192, 3345, + 4031, 984, 985, 986, 2831, 1043, 1038, 1039, 1040, 1041, + 2108, 3406, 4188, 1052, 4153, 3949, 130, 3352, 3948, 4186, + 1177, 131, 3660, 725, 1129, 3661, 1764, 1176, 86, 4217, + 3959, 95, 4183, 984, 985, 986, 3679, 174, 86, 2642, + 3668, 3014, 1460, 1085, 1086, 4127, 3346, 1096, 1100, 932, + 86, 2912, 4135, 2563, 3958, 4139, 2155, 4162, 3432, 3721, + 1887, 1809, 2947, 1810, 1471, 2946, 720, 3031, 2948, 3032, + 3278, 3279, 2455, 2456, 2514, 3352, 1096, 1100, 932, 2913, + 2867, 1482, 4167, 2952, 1474, 1489, 1488, 1490, 1491, 97, + 2080, 2081, 1482, 3277, 3058, 2639, 725, 171, 2508, 2454, + 172, 3774, 4165, 1275, 3041, 1277, 2568, 1258, 1036, 2640, + 1035, 95, 4172, 4173, 705, 1246, 1124, 3678, 1231, 1232, + 1247, 95, 3298, 3299, 4049, 725, 191, 703, 1245, 4166, + 1244, 4143, 3349, 95, 725, 1246, 1263, 1264, 1259, 1287, + 1247, 1252, 2959, 1274, 1276, 3414, 2033, 2473, 2472, 3384, + 1234, 3382, 2905, 2906, 725, 3070, 2385, 725, 3116, 86, + 3412, 1453, 88, 4143, 2633, 2079, 739, 700, 3002, 1470, + 1805, 737, 2083, 3388, 1122, 743, 715, 2419, 1735, 3043, + 4001, 2545, 4002, 1221, 3375, 3027, 1980, 2584, 4207, 4239, + 3349, 710, 3376, 2006, 1510, 1279, 1196, 726, 2609, 1452, + 2610, 2590, 2611, 713, 1284, 1459, 723, 2588, 1267, 4208, + 97, 1261, 1262, 1227, 724, 3046, 3403, 3649, 1511, 1512, + 1513, 1514, 1515, 1516, 1517, 1519, 1518, 1520, 1521, 2586, + 1981, 3297, 1982, 3933, 3648, 2612, 1151, 1260, 726, 3072, + 1253, 175, 95, 3300, 1151, 1265, 3385, 1202, 3383, 2587, + 181, 2507, 1201, 1286, 1272, 1266, 2591, 2548, 1273, 1285, + 3645, 2636, 2589, 2637, 3726, 1132, 1162, 2432, 1278, 1133, + 1133, 1171, 1170, 1169, 690, 1168, 692, 706, 3559, 728, + 1167, 727, 696, 2995, 694, 698, 707, 699, 2034, 693, + 1166, 704, 1165, 1271, 695, 708, 709, 712, 716, 717, + 718, 714, 711, 1164, 702, 729, 1159, 1123, 1089, 1738, + 3300, 726, 1891, 3082, 3081, 3080, 1172, 1524, 3074, 4260, + 3078, 1108, 3073, 1524, 3071, 1181, 1145, 3117, 1108, 3076, + 4180, 1144, 1106, 4214, 1144, 1180, 1108, 2026, 3075, 1150, + 726, 1886, 3320, 1084, 3047, 2574, 2573, 1150, 2022, 726, + 3183, 1461, 1189, 3026, 1884, 1883, 1882, 3077, 3079, 3012, + 1291, 2023, 1291, 1291, 1880, 1237, 680, 3040, 3192, 726, + 3039, 4181, 726, 2417, 2418, 3644, 1099, 1093, 1091, 166, + 3211, 1481, 1478, 1479, 1480, 1485, 1487, 1484, 3209, 1483, + 1525, 1526, 1481, 1478, 1479, 1480, 1485, 1487, 1484, 1477, + 1483, 4044, 1806, 3063, 3598, 1099, 1093, 1091, 3580, 2657, + 1477, 2943, 1050, 1534, 1539, 1540, 1163, 1543, 1545, 1546, + 1547, 1548, 1549, 3029, 1552, 1553, 1555, 1555, 2908, 1555, 1555, 1560, 1560, 1560, 1563, 1564, 1565, 1566, 1567, 1568, 1569, 1570, 1571, 1572, 1573, 1574, 1575, 1576, 1577, 1578, 1579, 1580, 1581, 1582, 1583, 1584, 1585, 1586, 1587, 1588, @@ -1798,1046 +1798,977 @@ var yyAct = [...]int{ 1649, 1650, 1651, 1652, 1653, 1654, 1655, 1656, 1657, 1658, 1659, 1660, 1661, 1662, 1663, 1664, 1665, 1666, 1667, 1668, 1669, 1670, 1671, 1672, 1673, 1674, 1675, 1676, 1677, 1678, - 1679, 1680, 1681, 1682, 1683, 1684, 1685, 1686, 4055, 1449, - 1280, 1531, 1687, 1130, 1689, 1690, 1691, 1692, 1693, 1450, - 1451, 2993, 3607, 3608, 1544, 1776, 1560, 1560, 1560, 1560, - 1560, 1560, 1992, 1991, 1993, 1994, 1995, 3719, 730, 3719, - 4140, 1700, 1701, 1702, 1703, 1704, 1705, 1706, 1707, 1708, - 1709, 1710, 1711, 1712, 1713, 1527, 1528, 1529, 1530, 721, - 4169, 3676, 1243, 2567, 1225, 1541, 1535, 3016, 2961, 4140, - 89, 2511, 167, 3560, 722, 1092, 4139, 95, 4101, 179, - 1524, 1556, 1912, 1557, 1558, 2871, 2873, 94, 2565, 1242, - 1468, 1248, 1249, 1250, 1251, 3350, 3351, 1230, 1561, 1562, - 1726, 3350, 3351, 1092, 4168, 4139, 2641, 1233, 3354, 2640, - 3504, 3015, 2512, 94, 3354, 1288, 1289, 3050, 1151, 2510, - 187, 4043, 1728, 3040, 1763, 94, 3039, 3598, 1734, 3580, - 1481, 1478, 1479, 1480, 1485, 1487, 1484, 1050, 1483, 4250, - 1181, 1050, 3192, 1724, 1525, 1526, 1144, 1050, 1477, 1119, - 1180, 2943, 1121, 2513, 1151, 2908, 1256, 2843, 2158, 1797, - 1688, 1236, 3191, 2509, 2903, 688, 2657, 168, 173, 170, - 176, 177, 178, 180, 182, 183, 184, 185, 126, 1725, - 94, 2010, 2461, 186, 188, 189, 190, 1524, 1521, 3276, - 3404, 1911, 1511, 1512, 1513, 1514, 1515, 1516, 1517, 1519, - 1518, 1520, 1521, 2011, 2668, 1151, 1764, 1269, 2199, 1742, - 2038, 1504, 1067, 1746, 1283, 4069, 1241, 1174, 121, 1049, - 3639, 1150, 3572, 2585, 2092, 2200, 1124, 1220, 1516, 1517, - 1519, 1518, 1520, 1521, 1744, 2019, 1745, 1811, 106, 3090, - 107, 2191, 1694, 1695, 1696, 1697, 1698, 1699, 2191, 1725, - 2677, 1124, 2527, 1116, 1490, 1491, 4215, 1150, 1188, 2872, - 1118, 1117, 1732, 1144, 1147, 1148, 1491, 1108, 3768, 4207, - 4061, 1141, 1145, 1510, 2557, 3614, 3613, 109, 3070, 2552, - 3053, 1921, 1775, 1492, 1920, 3052, 1740, 1910, 3053, 2557, - 2668, 1224, 1140, 3052, 2562, 2564, 122, 1511, 1512, 1513, - 1514, 1515, 1516, 1517, 1519, 1518, 1520, 1521, 1150, 1122, - 2560, 1162, 1766, 1154, 1144, 1904, 1160, 2561, 1156, 1062, - 3599, 4252, 1157, 1155, 1888, 1889, 1890, 3940, 2114, 2115, - 2647, 2648, 2559, 1743, 3939, 1975, 2007, 3284, 2008, 1914, - 1914, 2009, 1897, 1158, 4258, 1926, 1151, 1927, 3930, 1929, - 1931, 1769, 1741, 1935, 1937, 1939, 1941, 1943, 1916, 1957, - 1048, 1046, 3072, 1729, 2197, 1270, 4102, 2031, 2039, 1291, - 1240, 4248, 1255, 1226, 4249, 3962, 4247, 1802, 1803, 1151, - 95, 1151, 4035, 1257, 1915, 1492, 731, 1764, 3285, 1871, - 2347, 1965, 1966, 2126, 2344, 2196, 2000, 1971, 1972, 3690, - 2124, 1223, 1492, 2346, 3673, 1879, 3674, 2127, 1522, 1523, - 2125, 2182, 1998, 3287, 1987, 4103, 2714, 1123, 1894, 979, - 1895, 3689, 1893, 2015, 1907, 2013, 2014, 2012, 2016, 2017, - 2018, 4036, 1489, 3282, 1490, 1491, 3082, 3081, 3080, 3621, - 4259, 3074, 1123, 3078, 3620, 3073, 1918, 3071, 3610, 1150, - 3327, 1747, 3076, 3298, 3299, 1144, 1147, 1148, 3316, 1108, - 3283, 3075, 1961, 1141, 1145, 1492, 2968, 1999, 2027, 2967, - 192, 1492, 2966, 1953, 2517, 2001, 1956, 1492, 1958, 2182, - 3077, 3079, 1150, 1997, 1150, 1986, 1187, 1154, 1144, 1985, - 1184, 1984, 1156, 131, 3289, 1764, 1157, 1155, 1983, 3421, - 984, 985, 986, 1492, 1973, 130, 1127, 1126, 1125, 174, - 2174, 2163, 2164, 2165, 2166, 2176, 2167, 2168, 2169, 2181, - 2177, 2170, 2171, 2178, 2179, 2180, 2172, 2173, 2175, 2424, - 2425, 2044, 1967, 1964, 1489, 1963, 1490, 1491, 1962, 1291, - 1291, 1933, 1739, 3092, 2347, 2040, 2041, 2666, 3604, 2066, - 731, 1489, 3379, 1490, 1491, 87, 1455, 2665, 87, 2045, - 1805, 4208, 3297, 4220, 1764, 1764, 2052, 2053, 2054, 171, - 1764, 4057, 172, 4064, 3300, 1510, 2065, 3062, 2174, 2163, - 2164, 2165, 2166, 2176, 2167, 2168, 2169, 2181, 2177, 2170, - 2171, 2178, 2179, 2180, 2172, 2173, 2175, 3967, 191, 1511, - 1512, 1513, 1514, 1515, 1516, 1517, 1519, 1518, 1520, 1521, - 2950, 1510, 731, 2533, 1489, 2532, 1490, 1491, 2153, 2153, - 1489, 1492, 1490, 1491, 4063, 1782, 1489, 42, 1490, 1491, - 42, 2151, 2151, 2718, 2154, 1511, 1512, 1513, 1514, 1515, - 1516, 1517, 1519, 1518, 1520, 1521, 2114, 2115, 2112, 2113, - 2116, 2042, 1489, 4039, 1490, 1491, 1510, 2531, 2046, 2530, - 2048, 2049, 2050, 2051, 2529, 1726, 2528, 2055, 2892, 4235, - 4195, 1764, 1510, 2111, 1783, 1506, 4038, 1507, 2237, 2067, - 1511, 1512, 1513, 1514, 1515, 1516, 1517, 1519, 1518, 1520, - 1521, 1508, 1522, 1523, 1505, 3286, 1511, 1512, 1513, 1514, - 1515, 1516, 1517, 1519, 1518, 1520, 1521, 4037, 1724, 3935, - 1492, 3919, 2251, 175, 1514, 1515, 1516, 1517, 1519, 1518, - 1520, 1521, 181, 1512, 1513, 1514, 1515, 1516, 1517, 1519, - 1518, 1520, 1521, 2892, 1764, 3966, 2093, 3918, 2716, 85, - 1488, 1764, 85, 3767, 1725, 2123, 2073, 2074, 1488, 1764, - 3923, 2186, 3765, 1510, 2129, 2656, 2131, 2132, 2133, 2134, - 2135, 2136, 2138, 2140, 2141, 2142, 2143, 2144, 2145, 3686, - 1489, 1492, 1490, 1491, 2128, 1492, 1723, 1511, 1512, 1513, - 1514, 1515, 1516, 1517, 1519, 1518, 1520, 1521, 2892, 4133, - 2892, 4112, 2334, 2335, 2336, 2337, 2338, 1722, 2130, 1721, - 2157, 2355, 4218, 1764, 1492, 3618, 2261, 3603, 1492, 2359, - 3389, 103, 2362, 2363, 2892, 4108, 3922, 105, 1552, 2357, - 1492, 104, 3386, 2356, 2201, 2202, 2203, 2204, 1535, 1498, - 1499, 1500, 1501, 1502, 1503, 1497, 1494, 103, 2215, 2343, - 1720, 2253, 2236, 3319, 2345, 1718, 2192, 104, 2380, 3318, - 1716, 166, 3044, 1717, 1715, 2977, 1719, 4020, 1764, 1489, - 112, 1490, 1491, 4148, 1764, 112, 2964, 2410, 1764, 1492, - 1720, 111, 1714, 110, 3657, 4054, 111, 2630, 110, 3943, - 1764, 105, 1764, 3665, 1492, 2892, 3931, 3657, 1764, 2892, - 3655, 2354, 2622, 2440, 2360, 2361, 4146, 1764, 2557, 1764, - 4144, 1764, 1492, 3578, 1764, 105, 1492, 2939, 1764, 106, - 2355, 107, 4013, 1764, 2798, 1764, 3309, 3308, 3306, 3307, - 1489, 2621, 1490, 1491, 1489, 2579, 1490, 1491, 2357, 2578, - 2470, 106, 2429, 107, 3304, 3305, 2889, 3290, 2390, 2402, - 2414, 3294, 2122, 2391, 1492, 2069, 1764, 2939, 3293, 1492, - 105, 1764, 3003, 1489, 1492, 1490, 1491, 1489, 2035, 1490, - 1491, 4011, 1764, 3304, 3303, 2442, 1113, 2918, 1764, 1489, - 1764, 1490, 1491, 2640, 3025, 2940, 4008, 1764, 1875, 3006, - 2999, 3000, 3295, 2378, 2396, 2942, 2397, 3291, 2892, 2891, - 1063, 1492, 3292, 2465, 3990, 1764, 2464, 1996, 3545, 1764, - 1113, 1988, 2479, 2480, 2481, 2482, 1978, 2474, 1974, 2475, - 2476, 2477, 2478, 2446, 2887, 2940, 2982, 2403, 1489, 1970, - 1490, 1491, 1492, 2484, 2500, 2640, 2486, 2487, 2488, 2489, - 2156, 1764, 2405, 1489, 2468, 1490, 1491, 4209, 111, 2546, - 1969, 3538, 1764, 3575, 2506, 1968, 3535, 1764, 1875, 1874, - 2427, 1489, 1784, 1490, 1491, 1489, 1281, 1490, 1491, 2451, - 2452, 2450, 3271, 1492, 1817, 1816, 2469, 2467, 1492, 2917, - 2466, 3241, 2640, 1492, 2910, 2910, 3571, 1098, 1488, 2543, - 1097, 2558, 3571, 3533, 1764, 1492, 4096, 4068, 2516, 1492, - 167, 2892, 2918, 1489, 1153, 1490, 1491, 179, 1489, 3524, - 1490, 1491, 1492, 1489, 1914, 1490, 1491, 3306, 3214, 2453, - 2501, 3574, 1488, 1492, 3496, 1764, 2497, 1492, 2798, 2551, - 2515, 2701, 2554, 2520, 2555, 2519, 2704, 2490, 2492, 2493, - 2918, 2700, 2571, 1051, 1492, 2557, 2540, 2422, 187, 1492, - 1489, 2664, 1490, 1491, 2409, 2557, 2501, 2550, 2553, 2549, - 1492, 2918, 3571, 1768, 1152, 3494, 1764, 1492, 2381, 2156, - 3490, 1764, 2572, 2094, 2575, 3487, 1764, 2078, 2576, 2577, - 2021, 1489, 1804, 1490, 1491, 1135, 1134, 3485, 1764, 1765, - 1767, 3483, 1764, 95, 97, 168, 173, 170, 176, 177, - 178, 180, 182, 183, 184, 185, 4174, 4115, 3954, 2645, - 1771, 186, 188, 189, 190, 3481, 1764, 3920, 1050, 1050, - 1050, 1492, 1489, 2582, 1490, 1491, 95, 1489, 1492, 1490, - 1491, 3780, 1489, 3622, 1490, 1491, 3479, 1764, 1545, 1492, - 1545, 3477, 1764, 3638, 1489, 3635, 1490, 1491, 1489, 1492, - 1490, 1491, 3475, 1764, 1492, 3616, 2660, 3437, 1492, 3473, - 1764, 1489, 1492, 1490, 1491, 3436, 1492, 1877, 2615, 2499, - 1492, 3377, 1489, 3332, 1490, 1491, 1489, 1949, 1490, 1491, - 3328, 2663, 3007, 2496, 2491, 1492, 2485, 2483, 2003, 1492, - 3623, 3624, 3625, 1489, 1492, 1490, 1491, 1909, 1489, 2357, - 1490, 1491, 1905, 2356, 1873, 123, 3330, 2973, 2974, 1489, - 1492, 1490, 1491, 3471, 1764, 1225, 1489, 3381, 1490, 1491, - 3469, 1764, 2632, 3955, 2673, 3585, 3586, 1492, 2683, 4072, - 2514, 3467, 1764, 2394, 1950, 1951, 1952, 2638, 1492, 3591, - 4230, 3465, 1764, 3590, 4228, 2698, 3463, 1764, 4202, 2071, - 3461, 1764, 4076, 2646, 3459, 1764, 3956, 3995, 3457, 1764, - 1492, 2974, 3443, 1764, 3588, 1492, 2652, 2649, 2650, 2651, - 1489, 3324, 1490, 1491, 1492, 2123, 3323, 1489, 4052, 1490, - 1491, 3419, 1764, 2653, 3322, 2655, 2863, 1764, 1489, 3241, - 1490, 1491, 2986, 2616, 2658, 3260, 2659, 3259, 1489, 1492, - 1490, 1491, 2672, 1489, 1492, 1490, 1491, 1489, 1492, 1490, - 1491, 1489, 1492, 1490, 1491, 1489, 2072, 1490, 1491, 1489, - 3927, 1490, 1491, 3263, 3261, 2676, 1492, 2654, 3264, 3262, - 2861, 1764, 685, 2413, 1489, 1492, 1490, 1491, 1489, 1781, - 1490, 1491, 1492, 1489, 2400, 1490, 1491, 3579, 1065, 2624, - 2625, 1492, 2836, 1764, 2627, 3219, 2842, 2813, 1764, 1489, - 2661, 1490, 1491, 2628, 3218, 4034, 2805, 1764, 3758, 3760, - 1492, 3265, 1786, 2927, 2928, 3567, 1489, 1492, 1490, 1491, - 3228, 2712, 1492, 2830, 3626, 2020, 1034, 1489, 2874, 1490, - 1491, 2796, 1764, 3231, 3233, 2153, 2794, 1764, 3302, 1066, - 2781, 1764, 3234, 2957, 2779, 1764, 748, 1050, 2151, 1489, - 2877, 1490, 1491, 3564, 1489, 1492, 1490, 1491, 2777, 1764, - 2978, 3563, 1492, 1489, 2608, 1490, 1491, 2775, 1764, 2875, - 2199, 1492, 2915, 2916, 2773, 1764, 2607, 3627, 3628, 3629, - 2380, 2440, 2606, 1785, 1050, 2935, 1068, 2200, 1489, 2605, - 1490, 1491, 1492, 1489, 1069, 1490, 1491, 1489, 1492, 1490, - 1491, 1489, 3593, 1490, 1491, 1077, 2878, 2604, 2880, 2771, - 1764, 2603, 2122, 2602, 3540, 1489, 3397, 1490, 1491, 1076, - 2914, 1191, 1190, 1492, 1489, 2973, 1490, 1491, 3745, 3056, - 3744, 1489, 1454, 1490, 1491, 103, 2895, 2119, 2117, 2118, - 1489, 105, 1490, 1491, 42, 104, 2933, 2769, 1764, 3013, - 131, 3569, 105, 2932, 2767, 1764, 2934, 2904, 1732, 1489, - 2865, 1490, 1491, 2765, 1764, 4244, 1489, 103, 1490, 1491, - 1492, 1489, 2990, 1490, 1491, 2885, 2619, 104, 1492, 4151, - 1775, 4053, 2893, 3743, 2763, 1764, 1492, 2424, 2425, 1725, - 2761, 1764, 3950, 2953, 2907, 1492, 2890, 2960, 2962, 3011, - 1492, 1945, 3547, 3301, 1489, 2937, 1490, 1491, 1492, 2931, - 3217, 1489, 2406, 1490, 1491, 2759, 1764, 2941, 3216, 2644, - 1489, 2944, 1490, 1491, 2506, 1492, 2077, 112, 2076, 110, - 2194, 2951, 2954, 1492, 4019, 2195, 3022, 4018, 111, 111, - 110, 1489, 3998, 1490, 1491, 3766, 3764, 1489, 105, 1490, - 1491, 2965, 3755, 2976, 1946, 1947, 1948, 3763, 2979, 2980, - 3756, 1492, 2757, 1764, 3636, 3568, 3566, 3333, 2975, 2541, - 2755, 1764, 1489, 2257, 1490, 1491, 1492, 1892, 2753, 1764, - 2983, 1492, 2984, 1075, 2987, 2988, 2989, 2751, 1764, 3557, - 3019, 112, 2749, 1764, 1492, 112, 3729, 1897, 2910, 2889, - 2747, 1764, 111, 3120, 3066, 3067, 111, 2702, 110, 2392, - 1492, 3008, 3009, 4232, 4231, 1492, 1798, 2742, 1764, 1489, - 1790, 1490, 1491, 116, 117, 3536, 3018, 1489, 4232, 1490, - 1491, 1492, 4231, 4040, 3602, 1489, 1492, 1490, 1491, 3086, - 2091, 3, 2089, 10, 1489, 9, 1490, 1491, 99, 1489, - 1492, 1490, 1491, 2340, 3640, 2090, 1492, 1489, 8, 1490, - 1491, 3064, 3045, 1492, 1, 3083, 1042, 1457, 2738, 1764, - 1456, 1492, 3606, 3502, 1489, 3048, 1490, 1491, 4163, 701, - 2382, 1730, 1489, 2372, 1490, 1491, 2736, 1764, 4203, 3101, - 3102, 3103, 3104, 3105, 3106, 3107, 3108, 3109, 3110, 4159, - 1765, 2379, 2729, 1764, 4160, 1989, 1492, 2727, 1764, 3118, - 1489, 1979, 1490, 1491, 3668, 2308, 3951, 3020, 1492, 3084, - 3336, 2547, 3634, 3498, 2504, 1489, 1143, 1490, 1491, 2969, - 1489, 156, 1490, 1491, 2462, 2463, 4128, 120, 1101, 119, - 1492, 2404, 3434, 1489, 1146, 1490, 1491, 1254, 3433, 2542, - 3658, 2958, 2471, 1823, 1821, 3425, 1822, 3068, 1820, 1489, - 1492, 1490, 1491, 3423, 1489, 3085, 1490, 1491, 1825, 3122, - 1824, 3160, 3178, 3162, 3054, 4100, 3405, 3055, 2703, 3503, - 1489, 2082, 1490, 1491, 2998, 1489, 738, 1490, 1491, 3173, - 3174, 3175, 3176, 2930, 732, 194, 1812, 3065, 2859, 1489, - 1791, 1490, 1491, 2075, 1185, 1489, 3196, 1490, 1491, 691, - 2858, 3310, 1489, 2580, 1490, 1491, 3185, 697, 1542, 2070, - 1489, 3215, 1490, 1491, 2945, 3187, 1492, 1095, 1087, 2393, - 2440, 2879, 2854, 3111, 1492, 1094, 3928, 3249, 1492, 3561, - 3227, 3229, 2897, 2343, 3232, 2343, 3158, 3225, 2345, 4033, - 2345, 3757, 2853, 2518, 3248, 1489, 87, 1490, 1491, 2440, - 2440, 2440, 2440, 2440, 1492, 4113, 2955, 1489, 1787, 1490, - 1491, 3196, 3168, 3169, 3170, 3171, 3172, 3523, 2675, 2440, - 2189, 1532, 2440, 763, 3253, 2439, 3186, 934, 3188, 1489, - 1773, 1490, 1491, 3724, 2109, 3223, 3195, 761, 760, 1492, - 758, 3270, 2442, 2881, 2911, 1496, 1495, 969, 2869, 1489, - 3213, 1490, 1491, 3208, 3210, 3212, 3207, 1799, 2852, 2922, - 1492, 2920, 2919, 2617, 2031, 1492, 2851, 3222, 1053, 3220, - 2850, 2442, 2442, 2442, 2442, 2442, 1492, 2447, 3235, 3236, - 1492, 3587, 3583, 4155, 3272, 3353, 2441, 3273, 2437, 2888, - 920, 2442, 3252, 919, 2442, 3361, 2849, 3255, 3256, 3254, - 3258, 770, 3257, 3266, 1054, 762, 1055, 106, 1492, 107, - 752, 983, 1492, 3274, 918, 1489, 917, 1490, 1491, 3363, - 3221, 3364, 3280, 1489, 3028, 1490, 1491, 1489, 1492, 1490, - 1491, 2840, 1492, 3378, 3311, 3030, 3313, 2956, 3374, 3312, - 3238, 1473, 1492, 2923, 2926, 2927, 2928, 2924, 1749, 2925, - 2929, 1752, 2839, 1489, 2401, 1490, 1491, 2838, 1114, 3314, - 3315, 3402, 4059, 3365, 3362, 3334, 2506, 3355, 2837, 3366, - 2643, 3431, 2834, 1748, 4066, 3344, 3372, 3652, 3325, 3004, - 2534, 1492, 69, 46, 4028, 4097, 1492, 912, 1489, 909, - 1490, 1491, 3726, 1492, 3727, 3392, 3244, 3390, 3728, 3181, - 2829, 3244, 3182, 4079, 2822, 4080, 908, 3400, 3393, 1489, - 4081, 1490, 1491, 2246, 1489, 1467, 1490, 1491, 3410, 1464, - 2821, 4176, 2084, 98, 2820, 1489, 36, 1490, 1491, 1489, - 35, 1490, 1491, 34, 2819, 33, 32, 3426, 3427, 3428, - 3429, 3430, 26, 3407, 3408, 25, 3409, 24, 23, 3411, - 22, 3413, 29, 3415, 19, 21, 20, 1489, 18, 1490, - 1491, 1489, 3347, 1490, 1491, 4198, 4243, 125, 55, 52, - 1545, 50, 2662, 2818, 1545, 133, 2667, 1489, 2817, 1490, - 1491, 1489, 132, 1490, 1491, 2816, 3335, 53, 49, 1228, - 3548, 1489, 3550, 1490, 1491, 47, 96, 31, 30, 2670, - 17, 2671, 16, 3518, 15, 14, 13, 2679, 12, 11, - 3522, 2681, 2682, 7, 6, 39, 38, 37, 28, 27, + 1679, 1680, 1681, 1682, 1683, 1684, 1685, 1686, 1531, 4056, + 1280, 2993, 1687, 1130, 1689, 1690, 1691, 1692, 1693, 3720, + 1450, 1451, 3607, 3608, 3610, 1776, 1560, 1560, 1560, 1560, + 1560, 1560, 1449, 4141, 730, 2511, 2567, 4102, 3560, 2996, + 2961, 1700, 1701, 1702, 1703, 1704, 1705, 1706, 1707, 1708, + 1709, 1710, 1711, 1712, 1713, 721, 1527, 1528, 1529, 1530, + 2641, 3350, 3351, 94, 1225, 4141, 1541, 4171, 167, 4140, + 722, 725, 3504, 94, 3354, 179, 2512, 1468, 1535, 1556, + 3677, 1557, 1558, 2510, 89, 94, 1242, 3404, 1248, 1249, + 1250, 1251, 1160, 3720, 1544, 2640, 1992, 1991, 1993, 1994, + 1995, 4140, 3016, 1561, 1562, 1151, 4169, 1092, 1912, 1243, + 1151, 4170, 1288, 1289, 2419, 95, 187, 2513, 2565, 3350, + 3351, 1233, 1728, 2843, 1763, 1230, 2158, 2509, 1734, 1797, + 922, 4253, 3354, 2871, 2873, 1688, 1092, 1050, 3050, 1236, + 3191, 1050, 2903, 126, 688, 3276, 3015, 1050, 2461, 1521, + 2668, 1524, 1764, 1119, 1504, 1067, 1121, 1283, 1724, 1256, + 2010, 4070, 1188, 168, 173, 170, 176, 177, 178, 180, + 182, 183, 184, 185, 1174, 2226, 1725, 1269, 3640, 186, + 188, 189, 190, 2011, 121, 3090, 195, 2038, 3572, 684, + 2126, 2585, 2092, 1241, 94, 2597, 2593, 2595, 2596, 2594, + 2598, 2599, 2600, 2601, 2127, 1522, 1523, 2125, 1150, 684, + 2019, 1811, 2191, 1150, 1144, 1147, 1148, 1911, 1108, 1151, + 1490, 1491, 1141, 1145, 1742, 1060, 1124, 1220, 1746, 2527, + 2191, 3769, 2677, 4218, 1049, 1744, 2668, 1745, 1491, 106, + 2562, 107, 1161, 1140, 1081, 1081, 1725, 1694, 1695, 1696, + 1697, 1698, 1699, 684, 1732, 1124, 2199, 1116, 3615, 3614, + 2552, 1921, 122, 1920, 1118, 1117, 3053, 1910, 3284, 2560, + 1162, 3052, 1160, 2200, 2218, 109, 4261, 4103, 1775, 2220, + 4209, 3599, 4036, 2225, 2221, 1151, 726, 2222, 2223, 2224, + 2557, 1224, 2219, 2227, 2228, 2229, 2230, 2231, 2232, 2233, + 2234, 2235, 1062, 1888, 1889, 1890, 4255, 2872, 4062, 3053, + 2417, 2418, 1740, 1122, 3052, 2007, 3674, 2008, 3675, 3285, + 2009, 1904, 1150, 1766, 1151, 2564, 4104, 1154, 1144, 1741, + 1729, 4037, 1156, 2561, 1743, 1270, 1157, 1155, 1226, 1897, + 2557, 2031, 1151, 1975, 3287, 2039, 2185, 1240, 1769, 1926, + 1048, 1927, 4211, 1929, 1931, 1916, 1046, 1935, 1937, 1939, + 1941, 1943, 95, 4251, 3282, 1957, 4252, 2182, 4250, 1291, + 1965, 1966, 4262, 1802, 1803, 1255, 1971, 1972, 2000, 1764, + 1871, 1915, 2124, 2559, 3298, 3299, 1257, 2196, 1150, 3941, + 1187, 3283, 1492, 3940, 1184, 3931, 3691, 1914, 1914, 1879, + 3690, 1223, 3622, 2015, 3621, 2013, 2014, 2012, 2016, 2017, + 2018, 3611, 2197, 1895, 1894, 1907, 1893, 1123, 2424, 2425, + 1998, 749, 3327, 1492, 3316, 3289, 2968, 1150, 1747, 984, + 985, 986, 1154, 1144, 2967, 2347, 1987, 1156, 2347, 2344, + 1961, 1157, 1155, 2966, 2517, 1150, 1123, 2704, 2346, 1999, + 2001, 1144, 1147, 1148, 1985, 1108, 1984, 1983, 1918, 1141, + 1145, 1973, 1158, 1967, 979, 2027, 2174, 2163, 2164, 2165, + 2166, 2176, 2167, 2168, 2169, 2181, 2177, 2170, 2171, 2178, + 2179, 2180, 2172, 2173, 2175, 1953, 1492, 1510, 1956, 3062, + 1958, 1997, 1964, 3297, 2114, 2115, 2647, 2648, 130, 1963, + 1962, 1510, 1127, 1126, 1125, 3300, 1933, 1986, 1739, 3379, + 1455, 1511, 1512, 1513, 1514, 1515, 1516, 1517, 1519, 1518, + 1520, 1521, 2044, 2718, 731, 1511, 1512, 1513, 1514, 1515, + 1516, 1517, 1519, 1518, 1520, 1521, 3604, 2066, 731, 1291, + 1291, 1489, 1805, 1490, 1491, 2040, 2041, 1514, 1515, 1516, + 1517, 1519, 1518, 1520, 1521, 87, 2892, 4238, 87, 2045, + 1516, 1517, 1519, 1518, 1520, 1521, 2052, 2053, 2054, 4210, + 1492, 192, 1489, 4065, 1490, 1491, 1492, 2065, 1498, 1499, + 1500, 1501, 1502, 1503, 1497, 1494, 2950, 1510, 731, 2533, + 1506, 2532, 1507, 4064, 131, 1511, 1512, 1513, 1514, 1515, + 1516, 1517, 1519, 1518, 1520, 1521, 1508, 1522, 1523, 1505, + 174, 1511, 1512, 1513, 1514, 1515, 1516, 1517, 1519, 1518, + 1520, 1521, 1492, 2531, 4040, 2530, 3286, 4039, 2153, 2153, + 2154, 4038, 2151, 2151, 1492, 1489, 1720, 1490, 1491, 1492, + 3936, 1718, 42, 1492, 3092, 42, 1716, 3920, 2042, 1717, + 1715, 1492, 1719, 3919, 1510, 2046, 2656, 2048, 2049, 2050, + 2051, 2116, 4223, 1764, 2055, 2529, 3768, 2528, 4221, 1764, + 171, 1782, 3766, 172, 3687, 2237, 2067, 1510, 1511, 1512, + 1513, 1514, 1515, 1516, 1517, 1519, 1518, 1520, 1521, 1512, + 1513, 1514, 1515, 1516, 1517, 1519, 1518, 1520, 1521, 191, + 1723, 1511, 1512, 1513, 1514, 1515, 1516, 1517, 1519, 1518, + 1520, 1521, 1492, 1722, 4149, 1764, 2666, 4197, 1764, 1489, + 1783, 1490, 1491, 1724, 2093, 1489, 2665, 1490, 1491, 1492, + 1721, 4147, 1764, 1764, 85, 4145, 1764, 85, 2892, 1764, + 4058, 1725, 2123, 4014, 1764, 2716, 2186, 2073, 2074, 1492, + 2114, 2115, 2112, 2113, 103, 1488, 1764, 1492, 1488, 1764, + 105, 3619, 2128, 3603, 104, 1492, 2892, 4134, 3968, 112, + 1492, 1489, 3389, 1490, 1491, 2892, 4113, 2111, 1492, 2673, + 111, 3386, 110, 1489, 3319, 1490, 1491, 3318, 1489, 2157, + 1490, 1491, 1489, 2357, 1490, 1491, 112, 3044, 2356, 2130, + 1489, 2261, 1490, 1491, 4012, 1764, 2355, 111, 2977, 110, + 2964, 684, 1492, 684, 175, 1720, 1492, 105, 1552, 2892, + 4109, 4009, 1764, 181, 2129, 1764, 2131, 2132, 2133, 2134, + 2135, 2136, 2138, 2140, 2141, 2142, 2143, 2144, 2145, 2343, + 1535, 3991, 1764, 2345, 2236, 2201, 2202, 2203, 2204, 3545, + 1764, 4021, 1764, 3658, 4055, 1764, 3967, 2672, 2192, 2215, + 1714, 1489, 3963, 1490, 1491, 1492, 103, 2410, 3290, 2630, + 3538, 1764, 3294, 3944, 1764, 684, 104, 2622, 1489, 3293, + 1490, 1491, 1764, 3575, 1492, 2621, 2354, 2892, 3932, 2360, + 2361, 3658, 1764, 2440, 1492, 2892, 3656, 105, 1489, 2579, + 1490, 1491, 2357, 1538, 3535, 1764, 1489, 2429, 1490, 1491, + 106, 2253, 107, 3295, 1489, 2355, 1490, 1491, 3291, 1489, + 2578, 1490, 1491, 3292, 2557, 1764, 1492, 1489, 2470, 1490, + 1491, 2414, 106, 2390, 107, 1492, 2391, 1764, 3924, 1492, + 2069, 2402, 3578, 1764, 2798, 1764, 3923, 1492, 2122, 3309, + 3308, 3574, 166, 3306, 3307, 3666, 1786, 3533, 1764, 3304, + 3305, 1489, 1764, 1490, 1491, 1489, 1113, 1490, 1491, 3304, + 3303, 2918, 1764, 1492, 2640, 3025, 3496, 1764, 1492, 2035, + 2442, 2939, 2479, 2480, 2481, 2482, 3494, 1764, 1063, 1875, + 3006, 3003, 2464, 1996, 2378, 2999, 3000, 2982, 1492, 2465, + 1113, 2939, 1492, 1988, 2474, 1978, 2475, 2476, 2477, 2478, + 2396, 2446, 2397, 2403, 1489, 1974, 1490, 1491, 3490, 1764, + 2484, 1492, 2664, 2486, 2487, 2488, 2489, 1785, 2405, 111, + 2468, 3487, 1764, 1489, 2500, 1490, 1491, 1970, 2546, 3485, + 1764, 1492, 2506, 1489, 1969, 1490, 1491, 1968, 2427, 2940, + 2892, 2891, 2469, 2451, 2452, 1098, 1097, 2450, 1784, 2942, + 2156, 1764, 2467, 1281, 2466, 3483, 1764, 2558, 1492, 2940, + 3481, 1764, 1492, 1875, 1874, 1489, 2917, 1490, 1491, 2640, + 1817, 1816, 2714, 2516, 1489, 2543, 1490, 1491, 1489, 1492, + 1490, 1491, 2910, 1492, 3479, 1764, 1489, 3271, 1490, 1491, + 2910, 3571, 1492, 1488, 1051, 1488, 2501, 2640, 1492, 2497, + 2490, 2492, 2493, 3477, 1764, 2519, 2551, 3241, 2515, 2554, + 2520, 2555, 1489, 1492, 1490, 1491, 2889, 1489, 3571, 1490, + 1491, 2557, 4097, 3475, 1764, 4069, 2892, 2918, 2571, 2918, + 105, 3524, 2501, 2550, 1152, 2553, 2549, 1489, 3623, 1490, + 1491, 1489, 1153, 1490, 1491, 97, 3306, 3214, 2453, 2798, + 2572, 1764, 1914, 2575, 3473, 1764, 684, 2576, 2577, 2918, + 1489, 2701, 1490, 1491, 1492, 2700, 2557, 3571, 2540, 1765, + 1767, 3471, 1764, 2422, 2409, 3469, 1764, 95, 95, 1060, + 1489, 167, 1490, 1491, 3467, 1764, 1768, 2381, 179, 2645, + 3465, 1764, 2156, 2094, 2887, 3624, 3625, 3626, 1050, 1050, + 1050, 2582, 2078, 2021, 684, 3463, 1764, 1489, 1804, 1490, + 1491, 1489, 1949, 1490, 1491, 1492, 1135, 1134, 1545, 4176, + 1545, 1492, 4116, 684, 3955, 1771, 1492, 3921, 1489, 187, + 1490, 1491, 1489, 3781, 1490, 1491, 2660, 1492, 3639, 3636, + 3617, 1489, 3437, 1490, 1491, 2615, 3436, 1489, 1877, 1490, + 1491, 2499, 3377, 2357, 3332, 1492, 3461, 1764, 2356, 3328, + 3007, 1492, 1489, 2496, 1490, 1491, 2663, 1492, 2491, 1950, + 1951, 1952, 2485, 1538, 2483, 2003, 168, 173, 170, 176, + 177, 178, 180, 182, 183, 184, 185, 1909, 1905, 3421, + 1492, 1873, 186, 188, 189, 190, 123, 2973, 2632, 3330, + 1538, 3381, 2974, 1538, 1225, 1538, 684, 3459, 1764, 1492, + 3956, 2638, 2514, 1489, 1764, 1490, 1491, 1726, 3457, 1764, + 3585, 3586, 1492, 2394, 4233, 4231, 1976, 2646, 1492, 3443, + 1764, 4204, 1492, 4077, 3996, 3588, 4073, 3324, 2071, 3323, + 2652, 684, 3591, 3322, 2649, 2650, 2651, 3419, 1764, 3241, + 1492, 2974, 2123, 2863, 1764, 1492, 2986, 2030, 684, 2616, + 1764, 3957, 3590, 3263, 1489, 3260, 1490, 1491, 3264, 3259, + 1489, 1492, 1490, 1491, 684, 1489, 685, 1490, 1491, 3261, + 2413, 684, 2861, 1764, 3262, 3579, 1489, 1065, 1490, 1491, + 2056, 2057, 684, 684, 684, 684, 684, 684, 684, 1492, + 3627, 2836, 1764, 2676, 1489, 2072, 1490, 1491, 2654, 1781, + 1489, 3219, 1490, 1491, 2813, 1764, 1489, 1492, 1490, 1491, + 2805, 1764, 1492, 2400, 2796, 1764, 2624, 2625, 3231, 3233, + 4035, 2627, 3218, 2653, 1492, 2655, 2842, 3234, 1066, 1489, + 2628, 1490, 1491, 4212, 2658, 1492, 2659, 2794, 1764, 3564, + 748, 1492, 2661, 3628, 3629, 3630, 3759, 3563, 1489, 2712, + 1490, 1491, 2830, 2781, 1764, 3761, 3567, 3265, 2874, 2927, + 2928, 1489, 1492, 1490, 1491, 3228, 2020, 1489, 1945, 1490, + 1491, 1489, 1068, 1490, 1491, 2153, 2877, 1050, 1034, 2151, + 1069, 2779, 1764, 3302, 2957, 1492, 2978, 2608, 2607, 1489, + 2606, 1490, 1491, 2605, 1489, 1077, 1490, 1491, 2604, 2777, + 1764, 2199, 2915, 2916, 2775, 1764, 2603, 2875, 2602, 1076, + 1489, 2440, 1490, 1491, 1050, 2935, 2773, 1764, 2200, 3397, + 1492, 1946, 1947, 1948, 3746, 1492, 3745, 2771, 1764, 1492, + 2119, 2117, 2118, 2769, 1764, 2878, 1191, 2880, 1489, 1492, + 1490, 1491, 1454, 1492, 1190, 2973, 2895, 1492, 2122, 3056, + 2914, 3013, 103, 131, 2767, 1764, 1489, 3569, 1490, 1491, + 105, 1489, 104, 1490, 1491, 2923, 2926, 2927, 2928, 2924, + 4247, 2925, 2929, 1489, 1492, 1490, 1491, 2765, 1764, 3744, + 1732, 2990, 2865, 2904, 1489, 684, 1490, 1491, 2619, 42, + 1489, 2933, 1490, 1491, 1492, 2424, 2425, 4152, 2932, 4054, + 3951, 2934, 3301, 2885, 1492, 2931, 1775, 2960, 2962, 2893, + 1492, 1489, 3593, 1490, 1491, 1492, 1725, 2763, 1764, 2953, + 2907, 2761, 1764, 2890, 1492, 2406, 110, 3547, 1492, 3011, + 2644, 2759, 1764, 2937, 1489, 3540, 1490, 1491, 103, 2757, + 1764, 2077, 1492, 2941, 105, 1538, 3217, 2944, 104, 1492, + 4020, 2076, 2506, 2951, 3216, 1492, 4019, 3999, 2954, 1492, + 2194, 111, 2976, 1538, 3022, 2195, 3536, 2979, 2980, 1489, + 3767, 1490, 1491, 3765, 1489, 2965, 1490, 1491, 1489, 3764, + 1490, 1491, 3757, 3637, 3568, 3566, 2755, 1764, 1489, 1492, + 1490, 1491, 1489, 2975, 1490, 1491, 1489, 4053, 1490, 1491, + 1492, 3333, 3502, 2257, 1492, 2983, 2541, 3498, 2987, 2988, + 2989, 2984, 1492, 1892, 1075, 3756, 2753, 1764, 112, 3019, + 2751, 1764, 3557, 1489, 1897, 1490, 1491, 4234, 2910, 111, + 3730, 3066, 3067, 2889, 2749, 1764, 1492, 3120, 3008, 3009, + 1492, 2747, 1764, 1489, 1492, 1490, 1491, 2742, 1764, 4235, + 4234, 2738, 1764, 1489, 3018, 1490, 1491, 112, 3, 1489, + 2702, 1490, 1491, 2392, 1489, 1798, 1490, 1491, 111, 1790, + 110, 116, 117, 1489, 1492, 1490, 1491, 1489, 1492, 1490, + 1491, 2736, 1764, 2340, 1492, 4235, 99, 3045, 4041, 3602, + 3083, 1489, 3434, 1490, 1491, 1, 2729, 1764, 1489, 2030, + 1490, 1491, 3064, 3048, 1489, 3928, 1490, 1491, 1489, 2091, + 1490, 1491, 10, 2372, 1042, 1457, 3101, 3102, 3103, 3104, + 3105, 3106, 3107, 3108, 3109, 3110, 1456, 3606, 2727, 1764, + 1765, 2379, 2089, 3641, 4164, 9, 3118, 2969, 1489, 2090, + 1490, 1491, 8, 701, 1976, 2382, 1492, 1730, 3084, 1489, + 4205, 1490, 1491, 1489, 112, 1490, 1491, 4160, 4161, 3020, + 1081, 1489, 1989, 1490, 1491, 111, 3433, 110, 1979, 3669, + 3425, 2404, 1726, 2308, 3952, 105, 3423, 3336, 1492, 1060, + 2547, 3635, 2504, 1143, 156, 1489, 1492, 1490, 1491, 1489, + 1492, 1490, 1491, 1489, 2462, 1490, 1491, 2463, 3122, 4129, + 120, 684, 3178, 1101, 3054, 119, 1146, 3055, 2030, 684, + 1254, 684, 2542, 684, 2449, 3659, 2958, 2471, 1492, 2251, + 1823, 1821, 1822, 1489, 1820, 1490, 1491, 1489, 3065, 1490, + 1491, 1825, 1824, 1489, 4101, 1490, 1491, 2998, 2859, 3405, + 2703, 3196, 3503, 2082, 738, 3185, 2930, 732, 194, 1812, + 3187, 1791, 2923, 2926, 2927, 2928, 2924, 3068, 2925, 2929, + 2440, 2075, 3585, 3586, 3111, 3085, 1492, 1185, 691, 3310, + 2858, 2580, 697, 2343, 1542, 2343, 3158, 2345, 2854, 2345, + 2070, 3215, 2853, 2518, 3248, 2945, 87, 1095, 1087, 2440, + 2440, 2440, 2440, 2440, 2393, 1489, 2526, 1490, 1491, 2334, + 2335, 2336, 2337, 2338, 2879, 1094, 3196, 3929, 3249, 2440, + 2852, 3186, 2440, 3188, 3561, 1492, 2359, 3253, 3227, 2362, + 2363, 3195, 3168, 3169, 3170, 3171, 3172, 1489, 2031, 1490, + 1491, 3270, 3229, 2897, 1492, 1489, 3232, 1490, 1491, 1489, + 3223, 1490, 1491, 3207, 3213, 1492, 3225, 2442, 4034, 3758, + 1492, 4114, 2955, 1787, 3523, 2380, 3220, 2675, 2851, 3222, + 1492, 2189, 1532, 763, 3235, 3236, 2439, 1489, 1492, 1490, + 1491, 934, 1773, 1053, 3725, 3353, 2442, 2442, 2442, 2442, + 2442, 2109, 1055, 1492, 761, 3361, 3252, 3254, 760, 3272, + 3257, 1054, 3273, 3266, 3255, 3256, 2442, 3258, 106, 2442, + 107, 3208, 3210, 3212, 758, 3274, 2881, 2850, 3280, 2911, + 3221, 1496, 1495, 969, 684, 1489, 2869, 1490, 1491, 1799, + 3312, 684, 3313, 3311, 1492, 2922, 2849, 2920, 3314, 3315, + 2919, 2617, 684, 684, 2447, 3587, 684, 2840, 2620, 3583, + 4156, 2441, 2839, 2437, 3362, 2888, 920, 919, 684, 3366, + 770, 762, 2838, 3365, 2506, 684, 3238, 1492, 3355, 752, + 2837, 3334, 983, 918, 1489, 3372, 1490, 1491, 917, 3363, + 3364, 1492, 3028, 3378, 3030, 2834, 1492, 2956, 3374, 1473, + 1492, 684, 3393, 1489, 3392, 1490, 1491, 1749, 2631, 1492, + 3390, 1752, 2401, 1114, 1489, 3402, 1490, 1491, 3244, 1489, + 4060, 1490, 1491, 3244, 2643, 3431, 1748, 4067, 3400, 1489, + 3344, 1490, 1491, 3653, 3325, 3004, 2829, 1489, 3410, 1490, + 1491, 2534, 69, 46, 3426, 3427, 3428, 3429, 3430, 4029, + 3407, 3408, 1489, 3409, 1490, 1491, 3411, 4098, 3413, 912, + 3415, 909, 3727, 3728, 3729, 3181, 3182, 4080, 4081, 2822, + 908, 4082, 2246, 1467, 1464, 4178, 2084, 98, 36, 35, + 1545, 34, 2662, 2821, 1545, 33, 2667, 1538, 2820, 2030, + 32, 26, 2819, 1489, 25, 1490, 1491, 24, 23, 22, + 3548, 2818, 3550, 29, 19, 21, 20, 18, 3335, 2670, + 3347, 2671, 3518, 4200, 4246, 125, 55, 2679, 52, 3522, + 50, 2681, 2682, 133, 132, 53, 1489, 49, 1490, 1491, 2688, 2689, 2690, 2691, 2692, 2693, 2694, 2695, 2696, 2697, - 1489, 2699, 1490, 1491, 40, 1489, 4, 1490, 1491, 2991, - 3247, 2536, 1489, 3401, 1490, 1491, 0, 0, 0, 0, - 0, 0, 2440, 0, 2705, 2706, 2707, 2708, 1726, 2710, - 2711, 3549, 2713, 3551, 0, 3600, 2715, 3558, 3553, 0, - 2720, 2721, 3565, 2722, 0, 0, 2725, 2726, 2728, 2730, + 1489, 2699, 1490, 1491, 1228, 1489, 47, 1490, 1491, 1489, + 96, 1490, 1491, 31, 3401, 30, 3247, 17, 1489, 16, + 1490, 1491, 2440, 15, 2705, 2706, 2707, 2708, 14, 2710, + 2711, 3549, 2713, 3551, 13, 3600, 2715, 3553, 3565, 12, + 2720, 2721, 11, 2722, 7, 3558, 2725, 2726, 2728, 2730, 2731, 2732, 2733, 2734, 2735, 2737, 2739, 2740, 2741, 2743, - 3356, 2745, 2746, 2748, 2750, 2752, 2754, 2756, 2758, 2760, + 1492, 2745, 2746, 2748, 2750, 2752, 2754, 2756, 2758, 2760, 2762, 2764, 2766, 2768, 2770, 2772, 2774, 2776, 2778, 2780, - 2782, 2783, 2784, 750, 2786, 3592, 2788, 3595, 2790, 2791, - 3589, 2793, 2795, 2797, 2442, 3570, 3525, 2800, 3527, 3528, - 3529, 2804, 0, 3365, 3362, 2809, 2810, 2811, 2812, 3366, - 1733, 3601, 3594, 3395, 3396, 0, 0, 1492, 2823, 2824, - 2825, 2826, 2827, 2828, 3555, 1492, 2832, 2833, 0, 3662, - 3663, 0, 0, 0, 2835, 3617, 0, 3619, 1492, 2841, - 0, 0, 1492, 0, 2844, 2845, 2846, 2847, 2848, 0, - 3611, 3612, 1492, 0, 0, 2855, 2856, 3582, 2857, 1492, - 0, 2860, 2862, 2404, 1492, 2864, 0, 0, 1492, 683, - 0, 0, 1492, 0, 0, 2876, 3596, 3597, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1492, 0, 1037, - 0, 3664, 0, 0, 1074, 2894, 1492, 1080, 1080, 0, - 1492, 0, 3645, 0, 1492, 0, 3649, 3650, 3651, 2815, - 0, 0, 0, 0, 0, 1492, 0, 2814, 2923, 2926, - 2927, 2928, 2924, 0, 2925, 2929, 0, 0, 3585, 3586, - 2808, 0, 0, 1109, 2807, 0, 0, 0, 0, 1492, - 3680, 0, 0, 0, 2806, 1492, 0, 0, 0, 3691, - 1492, 2803, 0, 0, 0, 0, 2802, 0, 1492, 0, - 2801, 0, 1492, 0, 2799, 0, 1489, 0, 1490, 1491, - 1492, 0, 0, 0, 1489, 0, 1490, 1491, 3713, 2792, - 1492, 3732, 0, 3733, 3734, 3735, 0, 1489, 2789, 1490, - 1491, 1489, 2787, 1490, 1491, 1492, 2785, 3742, 0, 0, - 3749, 1489, 3751, 1490, 1491, 0, 0, 2744, 1489, 0, - 1490, 1491, 0, 1489, 3722, 1490, 1491, 1489, 0, 1490, - 1491, 1489, 0, 1490, 1491, 3248, 0, 3752, 87, 0, - 3248, 2724, 3685, 0, 0, 0, 1489, 2723, 1490, 1491, - 0, 0, 2719, 0, 0, 1489, 2153, 1490, 1491, 1489, - 2717, 1490, 1491, 1489, 2709, 1490, 1491, 0, 0, 2151, - 0, 3782, 2680, 3753, 1489, 3772, 1490, 1491, 3762, 3761, - 0, 0, 2674, 0, 0, 0, 3774, 3769, 0, 3771, - 0, 0, 0, 0, 0, 3641, 3642, 2669, 1489, 0, - 1490, 1491, 0, 0, 1489, 3934, 1490, 1491, 0, 1489, - 42, 1490, 1491, 0, 0, 0, 3786, 1489, 0, 1490, - 1491, 1489, 0, 1490, 1491, 0, 0, 0, 0, 1489, - 0, 1490, 1491, 0, 0, 0, 0, 0, 0, 1489, - 0, 1490, 1491, 0, 0, 0, 0, 3926, 3925, 0, - 3953, 3941, 0, 0, 1489, 0, 1490, 1491, 3924, 0, - 0, 3946, 3945, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1754, 0, 0, 0, 0, 3096, 3097, - 3098, 3099, 3100, 3992, 2153, 3993, 3776, 1762, 0, 0, - 1755, 3750, 0, 0, 0, 0, 0, 2151, 3115, 3996, - 0, 0, 0, 0, 0, 0, 0, 0, 3783, 3784, - 0, 0, 3936, 3937, 3938, 2398, 2399, 1761, 1759, 1760, - 1756, 0, 1757, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 4041, 3248, 3244, 3999, 3778, 0, 0, - 4002, 0, 0, 0, 0, 1758, 4032, 0, 1563, 1564, - 1565, 1566, 1567, 1568, 1569, 1570, 1571, 1572, 1573, 1574, - 1575, 1576, 1577, 1578, 1579, 1580, 1581, 1583, 1584, 1585, - 1586, 1587, 1588, 1589, 1590, 1591, 1592, 1593, 1594, 1595, - 1596, 1597, 1598, 1599, 1600, 1601, 1602, 1603, 1604, 1605, - 1606, 1607, 1608, 1609, 1610, 1611, 1612, 1613, 1614, 1615, - 1616, 1617, 1618, 1619, 1620, 1621, 1622, 1623, 1624, 1625, - 1626, 1627, 1628, 1629, 1630, 1631, 1632, 1633, 1634, 1635, - 1636, 1637, 1638, 1639, 1640, 1641, 1642, 1643, 1644, 1645, - 1646, 1647, 1648, 1649, 1650, 1651, 1652, 1653, 1654, 1655, - 1656, 1657, 1658, 1659, 1660, 1662, 1663, 1664, 1665, 1666, - 1667, 1668, 1669, 1670, 1671, 1672, 1673, 1674, 1675, 1676, - 1677, 1683, 1684, 1685, 1686, 1700, 1701, 1702, 1703, 1704, - 1705, 1706, 1707, 1708, 1709, 1710, 1711, 1712, 1713, 3997, - 4042, 3247, 4026, 4016, 4025, 0, 3247, 0, 1754, 4045, - 4022, 0, 4024, 4060, 0, 0, 0, 0, 0, 0, - 0, 3929, 1762, 0, 0, 1755, 0, 0, 0, 0, - 3250, 87, 0, 0, 0, 0, 0, 0, 0, 0, - 4044, 0, 0, 0, 1726, 0, 0, 0, 3268, 0, - 1750, 1751, 1761, 1759, 1760, 1756, 4062, 1757, 4049, 0, - 0, 0, 4065, 0, 0, 0, 0, 0, 0, 0, - 0, 3933, 0, 0, 0, 0, 0, 0, 0, 4067, - 1758, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 4074, 0, 0, 42, 0, 0, 0, 0, 4084, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1229, 4085, 1235, 0, 4086, 0, 0, 0, 4110, - 0, 0, 0, 0, 87, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 4095, 0, 0, 4104, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 4046, 0, 1493, 0, 0, 0, 0, - 1726, 3953, 4130, 4141, 4127, 4119, 3399, 4124, 4121, 4120, - 4118, 4123, 4114, 4122, 4116, 1463, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1551, 0, 3416, 3417, - 3247, 3418, 3420, 3422, 4149, 4172, 42, 0, 4162, 0, - 0, 0, 0, 0, 4154, 4167, 0, 0, 0, 0, - 0, 0, 0, 4180, 0, 0, 0, 0, 0, 3435, - 4141, 4182, 4193, 0, 3438, 0, 3440, 3441, 3442, 3444, + 2782, 2783, 2784, 3356, 2786, 3592, 2788, 3594, 2790, 2791, + 3589, 2793, 2795, 2797, 3362, 3570, 1492, 2800, 3601, 3366, + 1492, 2804, 3595, 3365, 1492, 2809, 2810, 2811, 2812, 2442, + 3395, 3396, 1492, 6, 39, 3618, 1492, 3620, 2823, 2824, + 2825, 2826, 2827, 2828, 3555, 1492, 2832, 2833, 38, 3612, + 3613, 37, 28, 27, 2835, 1492, 40, 4, 2991, 2841, + 1492, 2536, 0, 0, 2844, 2845, 2846, 2847, 2848, 0, + 0, 0, 2817, 0, 0, 2855, 2856, 3582, 2857, 0, + 0, 2860, 2862, 2404, 0, 2864, 3525, 1492, 3527, 3528, + 3529, 0, 684, 0, 0, 2876, 3596, 3597, 3663, 3664, + 1976, 3646, 0, 1492, 0, 3650, 3651, 3652, 2816, 0, + 0, 3665, 2815, 1492, 0, 2894, 2814, 0, 1492, 0, + 0, 0, 1492, 0, 2808, 2683, 0, 0, 2807, 1489, + 0, 1490, 1491, 0, 0, 0, 0, 2806, 1492, 0, + 3681, 0, 2698, 0, 0, 0, 0, 2803, 0, 0, + 0, 684, 2802, 0, 1492, 0, 684, 0, 0, 1492, + 0, 0, 0, 0, 0, 1489, 3692, 1490, 1491, 1489, + 0, 1490, 1491, 1489, 0, 1490, 1491, 0, 0, 2801, + 0, 1489, 0, 1490, 1491, 1489, 0, 1490, 1491, 1492, + 0, 0, 0, 0, 1489, 2799, 1490, 1491, 3733, 0, + 3734, 3735, 3736, 0, 1489, 2792, 1490, 1491, 0, 1489, + 2789, 1490, 1491, 0, 2787, 0, 0, 3743, 0, 0, + 3750, 0, 3752, 0, 0, 1492, 0, 0, 0, 3723, + 2785, 684, 1492, 0, 0, 0, 1489, 0, 1490, 1491, + 0, 0, 0, 0, 0, 3248, 2744, 3753, 87, 0, + 3248, 2724, 1489, 0, 1490, 1491, 0, 0, 0, 0, + 0, 1492, 1489, 0, 1490, 1491, 0, 1489, 0, 1490, + 1491, 1489, 1492, 1490, 1491, 0, 2153, 3783, 3686, 0, + 2151, 2723, 3754, 1492, 1538, 3763, 3762, 1489, 1492, 1490, + 1491, 0, 0, 3773, 3770, 3772, 3775, 684, 684, 684, + 684, 684, 684, 1489, 0, 1490, 1491, 0, 1489, 0, + 1490, 1491, 0, 0, 0, 0, 3935, 2719, 0, 0, + 0, 0, 3787, 0, 2717, 0, 684, 684, 3642, 3643, + 0, 0, 0, 0, 0, 42, 0, 2380, 1489, 0, + 1490, 1491, 0, 0, 0, 0, 0, 0, 0, 0, + 3926, 684, 0, 2709, 3927, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2680, 0, 3954, 0, 0, 3925, + 3942, 3947, 3946, 0, 1489, 2674, 1490, 1491, 0, 0, + 2669, 1489, 0, 1490, 1491, 0, 0, 0, 3096, 3097, + 3098, 3099, 3100, 3993, 3994, 0, 0, 3777, 0, 0, + 0, 3751, 3937, 3938, 3939, 2153, 3997, 0, 3115, 2151, + 1489, 0, 1490, 1491, 0, 0, 0, 0, 3784, 3785, + 0, 1489, 0, 1490, 1491, 0, 0, 0, 0, 0, + 0, 0, 1489, 0, 1490, 1491, 0, 1489, 0, 1490, + 1491, 0, 4000, 0, 4042, 3248, 4003, 0, 3779, 0, + 0, 0, 0, 0, 0, 0, 0, 3244, 0, 1563, + 1564, 1565, 1566, 1567, 1568, 1569, 1570, 1571, 1572, 1573, + 1574, 1575, 1576, 1577, 1578, 1579, 1580, 1581, 1583, 1584, + 1585, 1586, 1587, 1588, 1589, 1590, 1591, 1592, 1593, 1594, + 1595, 1596, 1597, 1598, 1599, 1600, 1601, 1602, 1603, 1604, + 1605, 1606, 1607, 1608, 1609, 1610, 1611, 1612, 1613, 1614, + 1615, 1616, 1617, 1618, 1619, 1620, 1621, 1622, 1623, 1624, + 1625, 1626, 1627, 1628, 1629, 1630, 1631, 1632, 1633, 1634, + 1635, 1636, 1637, 1638, 1639, 1640, 1641, 1642, 1643, 1644, + 1645, 1646, 1647, 1648, 1649, 1650, 1651, 1652, 1653, 1654, + 1655, 1656, 1657, 1658, 1659, 1660, 1662, 1663, 1664, 1665, + 1666, 1667, 1668, 1669, 1670, 1671, 1672, 1673, 1674, 1675, + 1676, 1677, 1683, 1684, 1685, 1686, 1700, 1701, 1702, 1703, + 1704, 1705, 1706, 1707, 1708, 1709, 1710, 1711, 1712, 1713, + 750, 3998, 4043, 4027, 4017, 4026, 3086, 3247, 1081, 0, + 684, 4023, 3247, 4025, 4061, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3250, 0, 87, 1538, 0, 0, 4046, 0, 1538, 684, + 684, 684, 684, 684, 1754, 3930, 0, 0, 3268, 0, + 0, 3267, 1754, 0, 0, 4066, 4045, 1976, 1762, 684, + 4050, 1755, 684, 3275, 2030, 4063, 1762, 0, 0, 1755, + 0, 0, 0, 0, 0, 0, 0, 0, 3934, 0, + 4068, 0, 0, 0, 0, 0, 2398, 2399, 1761, 1759, + 1760, 1756, 0, 1757, 1750, 1751, 1761, 1759, 1760, 1756, + 0, 1757, 0, 0, 0, 0, 0, 684, 0, 0, + 0, 1074, 0, 0, 1080, 1080, 1758, 0, 0, 42, + 0, 0, 4086, 1538, 1758, 4087, 0, 0, 0, 0, + 4111, 0, 0, 684, 0, 87, 0, 0, 3160, 0, + 3162, 0, 0, 0, 0, 0, 0, 684, 4096, 0, + 0, 4105, 0, 0, 0, 0, 3173, 3174, 3175, 3176, + 0, 0, 0, 0, 0, 0, 4117, 0, 684, 0, + 0, 684, 0, 0, 0, 4128, 3399, 3954, 4131, 4120, + 4125, 4122, 4121, 4115, 4119, 4124, 4123, 4047, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 3416, 3417, + 0, 3418, 3420, 3422, 4150, 0, 4174, 3247, 0, 0, + 0, 0, 0, 0, 0, 4155, 0, 4163, 4168, 0, + 0, 0, 42, 4142, 4182, 0, 0, 0, 0, 3435, + 0, 0, 0, 4195, 3438, 4184, 3440, 3441, 3442, 3444, 3445, 3446, 3447, 3448, 3449, 3450, 3451, 3452, 3453, 3454, 3455, 3456, 3458, 3460, 3462, 3464, 3466, 3468, 3470, 3472, 3474, 3476, 3478, 3480, 3482, 3484, 3486, 3488, 3489, 3491, - 3492, 3493, 3495, 4197, 4216, 3497, 4192, 3499, 3500, 3501, - 4111, 2153, 3505, 3506, 3507, 3508, 3509, 3510, 3511, 3512, - 3513, 3514, 3515, 4222, 2151, 4229, 4226, 4227, 4225, 4223, - 2031, 3521, 4213, 4051, 4212, 3526, 4106, 4141, 4237, 3530, - 3531, 0, 3532, 3534, 0, 3537, 3539, 4251, 3541, 3542, - 3543, 3544, 0, 4253, 3244, 4245, 0, 0, 3552, 0, - 1032, 0, 0, 2347, 0, 0, 1033, 4070, 0, 2153, - 0, 0, 4261, 0, 0, 0, 2152, 4262, 4263, 0, - 3993, 0, 2151, 0, 4260, 0, 0, 0, 0, 4058, - 0, 0, 0, 3576, 3577, 0, 0, 3581, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 4188, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 4196, 0, 0, 0, 0, 0, 0, 0, 0, 1841, - 0, 0, 0, 0, 4105, 989, 990, 991, 992, 993, - 994, 995, 996, 997, 998, 999, 1000, 1001, 1002, 1003, - 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012, 1013, - 1014, 1015, 1016, 1017, 1018, 1019, 1020, 1021, 1022, 1023, - 1024, 1025, 1026, 1027, 1028, 1029, 1030, 0, 0, 0, - 0, 0, 3656, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1789, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 3675, 0, 0, - 3679, 0, 0, 0, 1801, 0, 0, 1878, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1818, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 3692, 0, 0, 4210, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1828, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 965, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 3715, 0, - 0, 0, 0, 0, 0, 0, 1959, 0, 0, 0, - 0, 3723, 0, 0, 0, 0, 0, 0, 3730, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 2036, 197, 0, 0, 197, - 1842, 2004, 0, 736, 0, 0, 0, 0, 742, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 2032, 197, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 2043, 197, 0, 0, 0, 0, - 0, 2047, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 2058, 2059, 2060, 2061, 2062, 2063, 2064, 0, - 0, 0, 742, 197, 742, 0, 1855, 1858, 1859, 1860, - 1861, 1862, 1863, 0, 1864, 1865, 1867, 1868, 1866, 1869, - 1870, 1843, 1844, 1845, 1846, 1826, 1827, 1856, 0, 1829, - 0, 1830, 1831, 1832, 1833, 1834, 1835, 1836, 1837, 1838, - 0, 0, 1839, 1847, 1848, 1849, 1850, 3942, 1851, 1852, - 1853, 1854, 0, 0, 1840, 0, 3949, 0, 0, 0, + 3492, 3493, 3495, 4219, 4199, 3497, 2031, 3499, 3500, 3501, + 4142, 4215, 3505, 3506, 3507, 3508, 3509, 3510, 3511, 3512, + 3513, 3514, 3515, 2153, 4229, 4232, 4225, 2151, 4228, 4226, + 4230, 3521, 4216, 4194, 0, 3526, 0, 4112, 192, 3530, + 3531, 0, 3532, 3534, 4240, 3537, 3539, 4248, 3541, 3542, + 3543, 3544, 4107, 4256, 4254, 0, 0, 4052, 3552, 0, + 0, 131, 0, 153, 0, 0, 684, 3244, 0, 0, + 0, 0, 0, 0, 0, 4264, 0, 174, 0, 4265, + 4266, 3994, 2153, 4263, 0, 0, 2151, 0, 0, 4142, + 0, 4071, 0, 3576, 3577, 0, 4059, 3581, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1032, + 0, 164, 2347, 0, 0, 1033, 0, 152, 0, 0, + 0, 0, 684, 0, 0, 2152, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 171, 0, 0, + 172, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 684, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 140, 141, 163, 162, 191, 0, 0, 0, + 0, 684, 0, 684, 684, 684, 0, 0, 4106, 0, + 4190, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 3959, 3960, 3961, 0, - 3963, 0, 3964, 3965, 0, 0, 0, 0, 3968, 3969, + 0, 0, 3657, 0, 989, 990, 991, 992, 993, 994, + 995, 996, 997, 998, 999, 1000, 1001, 1002, 1003, 1004, + 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014, + 1015, 1016, 1017, 1018, 1019, 1020, 1021, 1022, 1023, 1024, + 1025, 1026, 1027, 1028, 1029, 1030, 0, 3676, 0, 0, + 3680, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 157, 138, + 160, 145, 137, 0, 158, 159, 0, 0, 0, 0, + 0, 175, 0, 0, 3693, 0, 0, 0, 0, 0, + 181, 146, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 149, 147, 142, 143, 144, + 148, 0, 4213, 0, 0, 1726, 0, 139, 0, 0, + 0, 0, 0, 0, 0, 0, 150, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 3716, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 3724, 1510, 0, 0, 0, 0, 0, 3731, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 86, 44, 45, 88, 0, 1511, 1512, 1513, 1514, + 1515, 1516, 1517, 1519, 1518, 1520, 1521, 0, 0, 0, + 92, 0, 0, 1976, 48, 76, 77, 0, 74, 78, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 166, + 75, 0, 1538, 0, 0, 0, 1976, 0, 0, 0, + 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 95, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1493, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 3943, 0, + 0, 0, 0, 1976, 0, 0, 0, 3950, 0, 0, + 0, 0, 0, 1551, 83, 161, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 3960, 3961, 3962, + 0, 3964, 0, 3965, 3966, 0, 0, 0, 0, 3969, 3970, 3971, 3972, 3973, 3974, 3975, 3976, 3977, 3978, 3979, 3980, 3981, 3982, 3983, 3984, 3985, 3986, 3987, 3988, 3989, - 0, 3991, 3994, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 4003, 4004, 4005, - 4006, 4007, 4009, 4010, 4012, 4014, 4015, 4017, 0, 0, - 0, 4021, 0, 0, 0, 4023, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 4050, 0, 2104, 2105, 2106, 2107, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 2097, 0, 0, 2120, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 2159, 2160, 0, 0, 0, 0, 2183, - 0, 0, 2187, 2188, 0, 0, 0, 2193, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1857, - 0, 0, 2205, 2206, 2207, 2208, 2209, 2210, 2211, 2212, - 2213, 2214, 0, 2216, 0, 0, 0, 2238, 2239, 2240, - 2241, 2242, 2243, 2244, 2245, 2247, 0, 2252, 0, 2254, - 2255, 2256, 0, 2258, 2259, 2260, 0, 2262, 2263, 2264, - 2265, 2266, 2267, 2268, 2269, 2270, 2271, 2272, 2273, 2274, - 2275, 2276, 2277, 2278, 2279, 2280, 2281, 2282, 2283, 2284, - 2285, 2286, 2287, 2288, 2289, 2290, 2291, 2292, 2293, 2294, - 2295, 2296, 2297, 2298, 2299, 2300, 2301, 2302, 2303, 2304, - 2305, 2306, 2307, 2311, 2312, 2313, 2314, 2315, 2316, 2317, - 2318, 2319, 2320, 2321, 2322, 2323, 2324, 2325, 2326, 2327, - 2328, 2329, 2330, 2331, 2332, 2333, 0, 0, 0, 0, - 0, 2339, 0, 2341, 0, 2348, 2349, 2350, 2351, 2352, - 2353, 0, 0, 0, 0, 0, 0, 4075, 0, 0, - 0, 0, 0, 0, 2364, 2365, 2366, 2367, 2368, 2369, - 2370, 2371, 0, 2373, 2374, 2375, 2376, 2377, 0, 0, - 0, 4090, 0, 0, 0, 0, 0, 4093, 0, 4094, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 4109, 1080, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 192, 4135, 4136, - 0, 0, 0, 0, 0, 0, 0, 0, 2997, 2420, - 2421, 0, 4143, 4145, 4147, 0, 0, 0, 0, 0, - 131, 0, 153, 0, 0, 0, 0, 0, 0, 0, - 4153, 0, 192, 0, 0, 2459, 174, 0, 0, 0, - 0, 2426, 4175, 0, 0, 0, 0, 0, 0, 2430, - 0, 2433, 0, 0, 2097, 131, 0, 153, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 164, 174, 0, 0, 0, 0, 152, 0, 0, 0, - 4194, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 197, 0, 197, 0, 0, 171, 2502, 0, 172, - 0, 0, 0, 0, 0, 164, 0, 0, 0, 0, - 0, 152, 0, 0, 4217, 4219, 4221, 0, 0, 0, - 0, 1900, 1901, 163, 162, 191, 0, 0, 0, 0, - 742, 171, 742, 742, 172, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 4242, 0, 0, - 0, 0, 0, 0, 742, 197, 140, 141, 163, 162, - 191, 0, 0, 0, 0, 4254, 4255, 0, 0, 0, - 0, 0, 0, 0, 86, 44, 45, 88, 0, 0, - 0, 0, 0, 1537, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 92, 0, 0, 0, 48, 76, 77, - 0, 74, 78, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 75, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 97, 0, 157, 1902, 160, - 1032, 1899, 0, 158, 159, 0, 1033, 0, 0, 0, - 175, 0, 0, 0, 0, 62, 2152, 0, 0, 181, - 0, 0, 0, 0, 2097, 0, 0, 95, 0, 0, - 0, 2592, 157, 138, 160, 145, 137, 0, 158, 159, - 0, 0, 2613, 2614, 0, 175, 2618, 0, 0, 0, - 0, 0, 0, 0, 181, 146, 0, 0, 2623, 0, - 0, 0, 0, 0, 0, 2626, 0, 0, 0, 149, - 147, 142, 143, 144, 148, 0, 0, 83, 0, 0, - 0, 139, 0, 0, 0, 0, 0, 0, 0, 0, - 150, 2629, 0, 0, 0, 989, 990, 991, 992, 993, - 994, 995, 996, 997, 998, 999, 1000, 1001, 1002, 1003, - 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012, 1013, - 1014, 1015, 1016, 1017, 1018, 1019, 1020, 1021, 1022, 1023, - 1024, 1025, 1026, 1027, 1028, 1029, 1030, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 166, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 51, 54, 57, 56, 59, 0, 73, 0, - 0, 82, 79, 166, 0, 2678, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 2684, 2685, 2686, 2687, 0, - 0, 0, 0, 0, 0, 61, 91, 90, 0, 0, - 71, 72, 58, 0, 0, 0, 197, 0, 80, 81, - 742, 742, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1841, 0, 0, 0, 197, - 1551, 0, 0, 0, 161, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 742, 63, 64, 197, 65, 66, 67, 68, 0, - 0, 0, 0, 0, 0, 0, 742, 0, 0, 161, - 0, 0, 0, 197, 0, 0, 0, 742, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 742, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 742, 0, 742, 0, 0, 0, 0, 0, 0, 60, - 742, 0, 0, 1537, 742, 0, 0, 742, 742, 742, - 742, 0, 742, 0, 742, 742, 0, 742, 742, 742, - 742, 742, 742, 154, 0, 0, 155, 0, 0, 0, - 1537, 742, 742, 1537, 742, 1537, 197, 742, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 197, 167, 154, 0, - 0, 155, 1828, 0, 179, 0, 0, 0, 0, 742, - 0, 197, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 742, 0, 0, 742, 1789, 197, 197, 89, - 0, 0, 167, 0, 0, 0, 0, 0, 0, 179, - 0, 0, 0, 0, 197, 187, 0, 0, 0, 0, - 0, 197, 0, 0, 0, 0, 0, 0, 0, 0, - 197, 197, 197, 197, 197, 197, 197, 197, 197, 742, - 0, 0, 0, 0, 0, 0, 2936, 0, 0, 0, - 187, 0, 0, 0, 0, 0, 1842, 0, 0, 0, - 0, 0, 168, 173, 170, 176, 177, 178, 180, 182, - 183, 184, 185, 0, 0, 0, 0, 0, 186, 188, - 189, 190, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 168, 173, 170, - 176, 177, 178, 180, 182, 183, 184, 185, 0, 94, - 0, 0, 0, 186, 188, 189, 190, 0, 0, 0, - 0, 2985, 1855, 1858, 1859, 1860, 1861, 1862, 1863, 0, - 1864, 1865, 1867, 1868, 1866, 1869, 1870, 1843, 1844, 1845, - 1846, 1826, 1827, 1856, 0, 1829, 0, 1830, 1831, 1832, - 1833, 1834, 1835, 1836, 1837, 1838, 0, 0, 1839, 1847, - 1848, 1849, 1850, 0, 1851, 1852, 1853, 1854, 0, 0, - 1840, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 3033, 3034, 3035, - 3036, 3037, 3038, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 742, - 742, 0, 0, 0, 0, 0, 2097, 3049, 0, 3061, - 70, 0, 0, 0, 742, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 197, 0, 0, 0, 0, - 0, 3057, 0, 0, 0, 0, 3087, 3088, 3089, 0, - 0, 3091, 0, 0, 3093, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 3112, 3113, 3114, 0, 0, 0, - 0, 0, 0, 3119, 0, 742, 0, 0, 3121, 0, - 0, 3123, 3124, 3125, 0, 1537, 0, 3126, 3127, 0, - 0, 3128, 0, 3129, 0, 0, 0, 0, 0, 0, - 3130, 0, 3131, 1537, 0, 0, 3132, 0, 3133, 0, - 0, 3134, 0, 3135, 0, 3136, 0, 3137, 0, 3138, - 0, 3139, 0, 3140, 0, 3141, 0, 3142, 0, 3143, - 0, 3144, 0, 3145, 0, 3146, 0, 3147, 0, 3148, - 0, 3149, 0, 3150, 0, 3151, 0, 0, 0, 3152, - 0, 3153, 0, 3154, 0, 0, 3155, 0, 3156, 0, - 3157, 0, 2311, 3159, 0, 1857, 3161, 0, 0, 3163, - 3164, 3165, 3166, 0, 0, 0, 0, 3167, 2311, 2311, - 2311, 2311, 2311, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 3177, 0, 0, 0, 0, 0, 0, - 0, 3190, 0, 0, 3194, 0, 0, 0, 0, 0, - 0, 0, 0, 3197, 3198, 3199, 3200, 3201, 3202, 0, - 0, 0, 3203, 3204, 0, 3205, 0, 3206, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 2358, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1080, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 964, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 3239, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 197, 0, 0, 0, 0, 742, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 3269, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 197, - 0, 0, 742, 0, 0, 0, 719, 0, 0, 0, - 0, 0, 741, 0, 0, 0, 0, 0, 0, 0, - 0, 197, 0, 0, 0, 742, 0, 0, 2358, 197, - 0, 197, 0, 197, 197, 0, 0, 0, 0, 3331, - 0, 0, 0, 0, 0, 0, 0, 0, 742, 0, - 0, 0, 0, 0, 0, 0, 0, 3321, 0, 0, - 0, 0, 0, 0, 0, 0, 741, 0, 741, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 3359, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 3373, 0, 0, - 0, 0, 0, 0, 0, 0, 742, 0, 0, 0, - 0, 0, 0, 742, 742, 742, 197, 0, 3391, 0, - 0, 3394, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 742, 0, 3424, 0, 0, 0, - 742, 742, 0, 0, 742, 0, 742, 0, 0, 0, - 0, 0, 742, 0, 921, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 3439, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 742, 0, 0, - 0, 0, 742, 0, 0, 0, 742, 742, 0, 0, - 0, 0, 0, 0, 192, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1896, 0, 0, 0, 0, - 0, 0, 740, 0, 0, 0, 0, 131, 0, 153, - 0, 0, 0, 0, 197, 0, 0, 0, 0, 0, - 0, 197, 0, 174, 0, 0, 0, 0, 0, 0, - 0, 0, 197, 197, 0, 0, 197, 0, 197, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 197, 0, - 0, 0, 0, 0, 0, 197, 1105, 164, 1112, 0, - 0, 0, 0, 152, 0, 0, 3554, 0, 0, 0, + 3990, 0, 3992, 3995, 0, 3714, 0, 0, 2182, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 4004, 4005, + 4006, 4007, 4008, 4010, 4011, 4013, 4015, 4016, 4018, 0, + 0, 0, 4022, 0, 0, 0, 4024, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, + 54, 57, 56, 59, 1032, 73, 0, 0, 82, 79, + 1033, 0, 0, 0, 154, 0, 0, 155, 0, 0, + 2152, 4051, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 61, 91, 90, 0, 0, 71, 72, 58, + 0, 0, 0, 0, 0, 80, 81, 0, 167, 0, + 0, 0, 0, 0, 0, 179, 0, 2174, 2163, 2164, + 2165, 2166, 2176, 2167, 2168, 2169, 2181, 2177, 2170, 2171, + 2178, 2179, 2180, 2172, 2173, 2175, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, + 64, 0, 65, 66, 67, 68, 187, 0, 0, 989, + 990, 991, 992, 993, 994, 995, 996, 997, 998, 999, + 1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, + 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018, 1019, + 1020, 1021, 1022, 1023, 1024, 1025, 1026, 1027, 1028, 1029, + 1030, 0, 0, 168, 173, 170, 176, 177, 178, 180, + 182, 183, 184, 185, 0, 0, 60, 0, 0, 186, + 188, 189, 190, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1976, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1789, 684, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 4033, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 4076, 0, + 0, 0, 0, 0, 1878, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 4198, 0, 89, 0, 0, 0, + 0, 0, 4091, 1841, 0, 0, 0, 0, 4094, 0, + 4095, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1538, 4110, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 965, 0, 4136, + 4137, 4130, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 4144, 4146, 4148, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 4154, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1976, 0, 4177, 0, 0, 94, 0, 0, 0, + 0, 0, 2036, 197, 0, 0, 197, 0, 0, 0, + 736, 0, 0, 0, 0, 742, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 197, 0, 0, 0, + 0, 4196, 1726, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 197, 0, 0, 0, 0, 0, 0, 0, + 1828, 0, 0, 192, 0, 0, 0, 0, 0, 0, + 0, 0, 2030, 0, 2997, 0, 4220, 4222, 4224, 742, + 197, 742, 0, 0, 0, 0, 131, 0, 153, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 4075, 0, + 0, 0, 174, 0, 0, 0, 4085, 0, 0, 0, + 4245, 0, 0, 0, 0, 0, 0, 70, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 4257, 4258, + 0, 0, 0, 0, 0, 0, 164, 0, 0, 0, + 0, 964, 152, 0, 1842, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 171, 0, 0, 172, 0, 0, 1726, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1900, 1901, 163, + 162, 191, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 719, 0, 0, 0, 0, 0, 741, + 1855, 1858, 1859, 1860, 1861, 1862, 1863, 0, 1864, 1865, + 1867, 1868, 1866, 1869, 1870, 1843, 1844, 1845, 1846, 1826, + 1827, 1856, 0, 1829, 0, 1830, 1831, 1832, 1833, 1834, + 1835, 1836, 1837, 1838, 0, 0, 1839, 1847, 1848, 1849, + 1850, 0, 1851, 1852, 1853, 1854, 0, 0, 1840, 2104, + 2105, 2106, 2107, 741, 0, 741, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 2120, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 157, 1902, 160, 0, 1899, 0, 158, + 159, 0, 0, 0, 0, 0, 175, 0, 0, 0, + 2159, 2160, 0, 0, 0, 181, 2183, 0, 0, 2187, + 2188, 0, 0, 0, 2193, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 2205, + 2206, 2207, 2208, 2209, 2210, 2211, 2212, 2213, 2214, 0, + 2216, 0, 0, 0, 2238, 2239, 2240, 2241, 2242, 2243, + 2244, 2245, 2247, 0, 2252, 0, 2254, 2255, 2256, 0, + 2258, 2259, 2260, 0, 2262, 2263, 2264, 2265, 2266, 2267, + 2268, 2269, 2270, 2271, 2272, 2273, 2274, 2275, 2276, 2277, + 2278, 2279, 2280, 2281, 2282, 2283, 2284, 2285, 2286, 2287, + 2288, 2289, 2290, 2291, 2292, 2293, 2294, 2295, 2296, 2297, + 2298, 2299, 2300, 2301, 2302, 2303, 2304, 2305, 2306, 2307, + 2311, 2312, 2313, 2314, 2315, 2316, 2317, 2318, 2319, 2320, + 2321, 2322, 2323, 2324, 2325, 2326, 2327, 2328, 2329, 2330, + 2331, 2332, 2333, 0, 166, 0, 0, 0, 2339, 0, + 2341, 0, 2348, 2349, 2350, 2351, 2352, 2353, 0, 0, + 0, 0, 0, 1857, 0, 0, 0, 0, 0, 0, + 0, 2364, 2365, 2366, 2367, 2368, 2369, 2370, 2371, 0, + 2373, 2374, 2375, 2376, 2377, 0, 0, 0, 0, 0, + 0, 1841, 95, 0, 0, 1032, 0, 0, 0, 0, + 970, 1033, 984, 985, 986, 971, 0, 0, 972, 973, + 0, 974, 0, 0, 0, 0, 0, 0, 0, 0, + 1080, 0, 0, 0, 0, 0, 0, 979, 0, 987, + 988, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 161, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 2420, 2421, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 3367, 3368, + 0, 0, 2459, 0, 0, 0, 0, 0, 0, 0, + 989, 990, 991, 992, 993, 994, 995, 996, 997, 998, + 999, 1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, + 1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018, + 1019, 1020, 1021, 1022, 1023, 1024, 1025, 1026, 1027, 1028, + 1029, 1030, 0, 0, 0, 0, 0, 0, 197, 0, + 197, 0, 0, 0, 2502, 0, 0, 0, 1828, 154, + 0, 0, 155, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 197, 0, 171, 0, 0, 172, 0, 197, 0, - 0, 0, 0, 742, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1900, 1901, - 163, 162, 191, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 3369, 0, 0, 0, 742, 0, 742, + 742, 0, 0, 167, 0, 0, 0, 0, 0, 0, + 179, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 742, 197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1537, 187, 1842, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 3615, 3637, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1537, 0, 2358, - 0, 3630, 0, 3631, 3632, 3633, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 3661, 0, 0, 0, 0, + 0, 0, 0, 0, 3370, 3371, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 168, 173, + 170, 176, 177, 178, 180, 182, 183, 184, 185, 0, + 0, 0, 0, 0, 186, 188, 189, 190, 1855, 1858, + 1859, 1860, 1861, 1862, 1863, 0, 1864, 1865, 1867, 1868, + 1866, 1869, 1870, 1843, 1844, 1845, 1846, 1826, 1827, 1856, + 0, 1829, 0, 1830, 1831, 1832, 1833, 1834, 1835, 1836, + 1837, 1838, 0, 0, 1839, 1847, 1848, 1849, 1850, 935, + 1851, 1852, 1853, 1854, 0, 939, 1840, 0, 0, 936, + 937, 0, 0, 0, 938, 940, 0, 0, 0, 0, + 0, 741, 1448, 741, 741, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 157, 1902, 160, 0, 1899, 0, - 158, 159, 0, 0, 0, 0, 0, 175, 0, 0, - 0, 0, 0, 0, 0, 0, 181, 0, 0, 0, - 0, 0, 0, 3681, 0, 3682, 0, 3683, 0, 3684, - 0, 0, 0, 0, 0, 0, 0, 3687, 3688, 0, - 0, 0, 0, 0, 0, 0, 0, 3693, 0, 0, + 0, 0, 0, 0, 0, 741, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 3694, 0, 3695, 0, 3696, 0, 3697, 0, 3698, - 0, 3699, 0, 3700, 0, 3701, 0, 3702, 0, 3703, - 0, 3704, 0, 3705, 0, 3706, 0, 3707, 0, 3708, - 0, 3709, 0, 0, 3710, 0, 0, 0, 3711, 0, - 3712, 0, 0, 0, 0, 0, 3714, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 3731, 0, - 0, 0, 0, 0, 0, 0, 0, 3736, 0, 3737, - 3738, 0, 3739, 0, 3740, 166, 0, 0, 0, 3741, + 0, 0, 0, 0, 1536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 197, 0, 0, 0, 3770, 0, 0, 0, - 197, 0, 0, 0, 0, 0, 0, 0, 0, 3779, - 0, 742, 3781, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 3785, 0, 0, 742, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3921, 0, 0, 0, 741, 1448, 741, 741, 0, 0, - 0, 197, 0, 0, 0, 0, 197, 0, 0, 0, - 0, 161, 0, 0, 0, 0, 0, 0, 741, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2678, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2684, 2685, 2686, 2687, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1536, 0, 0, + 0, 0, 0, 197, 0, 0, 0, 742, 742, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 197, 1551, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 742, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 742, 0, 0, 197, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1857, 0, 742, 0, 0, 0, 0, 0, 0, + 197, 0, 0, 0, 742, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 742, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 742, 0, 0, 0, 0, 0, 0, 742, - 0, 0, 0, 742, 742, 0, 0, 0, 742, 0, - 154, 0, 0, 155, 0, 0, 0, 0, 0, 4031, - 0, 0, 0, 0, 1537, 742, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 197, 197, 197, - 197, 197, 197, 0, 167, 0, 0, 0, 0, 0, - 0, 179, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 197, 197, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 197, 187, 0, 1293, 0, 1293, 1293, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 742, 1462, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 168, - 173, 170, 176, 177, 178, 180, 182, 183, 184, 185, - 0, 0, 0, 0, 0, 186, 188, 189, 190, 0, + 0, 0, 0, 0, 0, 0, 0, 742, 0, 742, 0, 0, 0, 0, 0, 0, 0, 742, 0, 0, + 1537, 742, 0, 0, 742, 742, 742, 742, 0, 742, + 0, 742, 742, 0, 742, 742, 742, 742, 742, 742, + 0, 0, 0, 0, 0, 0, 0, 1537, 742, 742, + 1537, 742, 1537, 197, 742, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 741, 741, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 4073, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 741, 4071, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 741, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 741, 4087, 0, 0, 4088, 0, 4089, 0, 0, - 0, 741, 742, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 742, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 741, 0, 741, 0, 0, 0, - 0, 0, 0, 0, 741, 0, 0, 1536, 741, 0, - 0, 741, 741, 741, 741, 742, 741, 0, 741, 741, - 0, 741, 741, 741, 741, 741, 741, 0, 0, 0, - 197, 0, 0, 742, 1536, 741, 741, 1536, 741, 1536, - 0, 741, 0, 0, 0, 0, 0, 0, 0, 742, - 0, 0, 0, 1537, 0, 0, 742, 742, 1537, 197, - 197, 197, 197, 197, 0, 0, 0, 0, 0, 4173, - 0, 197, 0, 741, 0, 0, 0, 197, 0, 197, - 0, 0, 197, 197, 197, 0, 741, 0, 0, 741, - 0, 0, 0, 0, 0, 0, 0, 0, 4189, 0, - 4190, 0, 4191, 0, 1736, 1737, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 197, 0, 0, - 0, 0, 0, 741, 0, 0, 0, 0, 0, 0, - 742, 0, 0, 1537, 0, 1795, 0, 0, 742, 0, 0, 0, 0, 197, 0, 0, 0, 0, 0, 0, - 1813, 0, 0, 0, 0, 0, 0, 197, 0, 0, - 0, 1872, 4240, 0, 4241, 0, 0, 0, 0, 0, - 0, 1881, 0, 0, 0, 0, 0, 0, 197, 0, - 0, 197, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1105, 0, 1908, 0, 0, 0, - 0, 0, 0, 0, 1917, 0, 0, 0, 1919, 0, - 0, 1922, 1923, 1925, 1925, 0, 1925, 0, 1925, 1925, - 0, 1934, 1925, 1925, 1925, 1925, 1925, 0, 0, 0, - 0, 0, 0, 0, 0, 1954, 1955, 0, 1105, 0, - 0, 1960, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 742, 0, 197, 0, + 0, 741, 741, 0, 0, 0, 0, 0, 0, 742, + 0, 0, 742, 1789, 197, 197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 922, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 2002, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 2024, 0, 0, 2028, - 0, 0, 0, 741, 741, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 741, 742, - 0, 0, 0, 0, 0, 0, 195, 0, 0, 684, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1293, 0, 0, 0, 0, 0, 684, - 0, 0, 0, 0, 0, 0, 197, 0, 0, 0, - 0, 0, 0, 0, 0, 1060, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 741, - 0, 0, 0, 0, 1081, 1081, 0, 0, 0, 1536, - 0, 0, 0, 684, 0, 0, 0, 0, 2161, 0, - 0, 0, 0, 0, 0, 0, 0, 1536, 0, 0, - 0, 0, 197, 0, 0, 0, 0, 0, 0, 0, + 0, 197, 0, 0, 0, 0, 0, 0, 197, 0, + 0, 0, 741, 0, 0, 0, 0, 197, 197, 197, + 197, 197, 197, 197, 197, 197, 742, 741, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 741, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 741, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 197, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 741, 0, 741, 0, 0, 0, 0, 0, 0, + 0, 741, 0, 0, 1536, 741, 0, 0, 741, 741, + 741, 741, 0, 741, 0, 741, 741, 0, 741, 741, + 741, 741, 741, 741, 0, 0, 0, 0, 0, 0, + 0, 1536, 741, 741, 1536, 741, 1536, 0, 741, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 197, 0, 197, 197, 197, 0, 0, 0, 0, - 0, 0, 0, 742, 742, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1733, 0, 0, 0, 0, + 741, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 741, 0, 0, 741, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 742, 742, 0, 0, + 0, 0, 0, 0, 683, 0, 3061, 0, 0, 0, + 741, 742, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 197, 0, 1037, 0, 0, 0, 0, 0, + 0, 0, 0, 3087, 3088, 3089, 0, 0, 3091, 0, + 0, 3093, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 3112, 3113, 3114, 0, 0, 0, 0, 1109, 0, + 3119, 0, 742, 0, 0, 3121, 0, 0, 3123, 3124, + 3125, 0, 1537, 0, 3126, 3127, 0, 0, 3128, 0, + 3129, 0, 0, 0, 0, 0, 0, 3130, 0, 3131, + 1537, 0, 0, 3132, 0, 3133, 0, 0, 3134, 0, + 3135, 0, 3136, 0, 3137, 0, 3138, 0, 3139, 0, + 3140, 0, 3141, 0, 3142, 0, 3143, 0, 3144, 0, + 3145, 0, 3146, 0, 3147, 0, 3148, 0, 3149, 0, + 3150, 0, 3151, 0, 0, 0, 3152, 0, 3153, 0, + 3154, 0, 0, 3155, 0, 3156, 0, 3157, 0, 2311, + 3159, 0, 0, 3161, 0, 0, 3163, 3164, 3165, 3166, + 0, 0, 0, 0, 3167, 2311, 2311, 2311, 2311, 2311, + 741, 741, 0, 0, 0, 0, 0, 0, 0, 0, + 3177, 0, 0, 0, 0, 741, 0, 0, 3190, 0, + 0, 3194, 0, 0, 0, 0, 0, 0, 0, 0, + 3197, 3198, 3199, 3200, 3201, 3202, 0, 0, 0, 3203, + 3204, 0, 3205, 0, 3206, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 2358, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1080, 0, + 0, 0, 0, 0, 0, 0, 741, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1536, 0, 0, 0, + 0, 3239, 0, 0, 0, 2161, 0, 0, 0, 0, + 0, 197, 0, 0, 1536, 0, 742, 192, 0, 0, + 0, 0, 0, 0, 0, 0, 3269, 0, 1896, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 131, 0, 153, 0, 0, 0, 197, 0, 0, 742, + 0, 0, 0, 0, 0, 0, 174, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 197, 0, + 0, 0, 742, 0, 0, 2358, 197, 0, 197, 0, + 197, 197, 0, 0, 0, 0, 3331, 0, 0, 0, + 164, 0, 0, 0, 0, 742, 152, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1293, 1293, 0, 0, 0, 0, 0, - 0, 0, 742, 742, 742, 742, 0, 0, 2085, 0, + 0, 0, 0, 0, 0, 0, 171, 0, 0, 172, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 741, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1900, 1901, 163, 162, 191, 0, 0, 0, 0, + 741, 0, 0, 742, 0, 0, 0, 0, 0, 0, + 742, 742, 742, 197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 742, 0, 3424, 0, 0, 0, 742, 742, 0, + 0, 742, 0, 742, 0, 0, 0, 0, 0, 742, + 741, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 3439, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 2147, + 0, 0, 0, 741, 742, 0, 0, 0, 0, 742, + 0, 0, 0, 742, 742, 0, 0, 157, 1902, 160, + 0, 1899, 0, 158, 159, 0, 741, 0, 0, 741, + 175, 0, 0, 0, 0, 0, 0, 0, 0, 181, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 741, + 0, 197, 0, 0, 0, 0, 0, 0, 197, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 197, + 197, 0, 0, 197, 0, 197, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 197, 0, 0, 0, 0, + 0, 0, 197, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 741, 0, 0, + 0, 0, 0, 0, 741, 741, 741, 0, 197, 0, + 0, 0, 0, 0, 0, 197, 1229, 0, 1235, 0, + 742, 0, 0, 0, 0, 741, 0, 0, 0, 0, + 0, 741, 741, 0, 921, 741, 0, 741, 0, 0, 0, 0, 0, 741, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 166, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 741, 3638, + 1463, 0, 0, 741, 0, 0, 0, 741, 741, 0, + 0, 0, 0, 0, 1537, 0, 2358, 0, 0, 0, + 0, 0, 740, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 3662, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 161, 0, 1105, 0, 1112, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3682, 0, 3683, 0, 3684, 0, 3685, 0, 0, 0, + 0, 0, 0, 0, 3688, 3689, 0, 0, 0, 0, + 0, 0, 0, 0, 3694, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 741, 0, 0, 0, 3695, 0, + 3696, 0, 3697, 0, 3698, 0, 3699, 0, 3700, 0, + 3701, 0, 3702, 0, 3703, 0, 3704, 0, 3705, 0, + 3706, 0, 3707, 0, 3708, 0, 3709, 0, 3710, 0, + 0, 3711, 0, 0, 0, 3712, 0, 3713, 0, 0, + 0, 0, 0, 3715, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 154, 0, 0, 155, 0, 0, 0, + 0, 0, 0, 0, 0, 3732, 0, 0, 1536, 0, + 741, 0, 0, 0, 3737, 0, 3738, 3739, 0, 3740, + 0, 3741, 0, 0, 0, 0, 3742, 167, 0, 0, + 0, 0, 0, 0, 179, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 197, + 0, 0, 0, 3771, 0, 0, 0, 197, 0, 0, + 0, 0, 0, 0, 0, 0, 3780, 0, 742, 3782, + 0, 0, 0, 0, 0, 187, 0, 0, 0, 0, + 0, 3786, 0, 0, 742, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 3922, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 197, 0, + 0, 0, 0, 197, 0, 0, 0, 0, 0, 0, + 0, 0, 168, 173, 170, 176, 177, 178, 180, 182, + 183, 184, 185, 0, 0, 0, 0, 0, 186, 188, + 189, 190, 0, 0, 0, 0, 0, 0, 0, 1801, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 741, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1818, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 741, - 0, 0, 741, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 742, 0, 0, 0, 0, 0, 197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 741, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 742, - 0, 742, 0, 197, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1537, 0, 0, 0, 197, 0, 0, 742, - 0, 742, 0, 0, 0, 0, 0, 0, 0, 0, - 741, 0, 0, 0, 0, 0, 0, 741, 741, 741, + 0, 0, 0, 0, 0, 0, 742, 0, 0, 0, + 742, 742, 0, 0, 0, 742, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 4032, 0, 0, + 0, 1537, 742, 0, 0, 0, 0, 0, 0, 0, + 0, 1959, 741, 0, 197, 197, 197, 197, 197, 197, + 0, 0, 0, 0, 0, 0, 0, 0, 741, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1293, 0, 0, 0, 0, 741, 0, - 0, 0, 0, 0, 741, 741, 0, 0, 741, 0, - 741, 0, 0, 0, 0, 0, 741, 0, 0, 742, + 0, 0, 0, 197, 197, 0, 2004, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 197, 0, 0, 742, 0, 0, 0, 0, - 0, 0, 0, 2395, 0, 0, 0, 0, 742, 0, - 0, 741, 0, 0, 0, 0, 741, 0, 0, 0, - 741, 741, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 2408, 0, 0, 0, + 0, 0, 0, 2032, 0, 0, 0, 0, 197, 0, + 0, 0, 0, 2949, 0, 0, 0, 0, 0, 2043, + 0, 0, 0, 0, 0, 0, 2047, 0, 0, 0, + 0, 0, 0, 0, 742, 0, 0, 2058, 2059, 2060, + 2061, 2062, 2063, 2064, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1795, - 0, 0, 1293, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1105, 742, 0, 0, 0, 0, 0, 0, - 742, 0, 742, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 741, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 742, 0, 0, 0, 0, 0, + 0, 0, 0, 741, 0, 0, 0, 0, 0, 0, + 741, 0, 0, 0, 741, 741, 0, 0, 0, 741, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 742, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 741, 0, 0, - 1112, 0, 0, 0, 0, 0, 0, 2523, 2524, 2525, - 0, 684, 0, 684, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1105, 0, - 0, 0, 0, 0, 1112, 1917, 0, 0, 1917, 0, - 1917, 0, 0, 0, 0, 0, 2556, 0, 0, 0, + 0, 0, 0, 0, 0, 1536, 741, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 4074, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1536, 0, 741, 0, 684, 0, 0, 0, 0, - 0, 1105, 0, 0, 0, 0, 2147, 0, 0, 0, - 2147, 2147, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1538, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 742, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 742, 197, 0, 0, 0, + 0, 0, 0, 0, 1293, 0, 1293, 1293, 0, 0, + 4088, 0, 0, 4089, 0, 4090, 0, 0, 0, 742, + 0, 0, 0, 0, 0, 0, 0, 0, 1462, 0, + 0, 742, 0, 0, 0, 0, 0, 0, 741, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2097, 0, 742, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 197, 0, 0, + 742, 0, 0, 0, 0, 0, 0, 0, 741, 0, + 0, 0, 0, 0, 0, 0, 742, 0, 0, 0, + 1537, 0, 0, 742, 742, 1537, 197, 197, 197, 197, + 197, 0, 0, 0, 0, 0, 0, 4175, 197, 0, + 0, 0, 0, 0, 197, 0, 197, 0, 0, 197, + 197, 197, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 4191, 0, 4192, 0, + 4193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 197, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 742, 0, 0, + 1537, 0, 0, 0, 0, 742, 0, 0, 0, 0, + 197, 0, 0, 741, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 197, 741, 0, 0, 0, 0, + 0, 0, 4243, 0, 4244, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 197, 0, 0, 197, 0, + 0, 0, 0, 0, 0, 0, 741, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 2634, 0, 0, + 0, 0, 0, 0, 741, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 742, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 742, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1537, 742, 0, 742, 0, 0, 0, 0, 0, + 741, 0, 0, 0, 1536, 0, 0, 741, 741, 1536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 742, - 2358, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1293, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 197, 742, 0, 0, 0, 741, 0, 0, 0, 0, + 0, 0, 0, 0, 1736, 1737, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 741, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 742, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 684, 0, 0, 0, - 0, 0, 0, 0, 0, 742, 2949, 0, 0, 0, - 197, 0, 0, 0, 0, 0, 0, 0, 0, 1060, - 0, 0, 0, 0, 742, 0, 742, 0, 0, 0, + 3317, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1795, 742, 0, 0, 0, + 0, 741, 0, 0, 1536, 0, 2426, 0, 0, 741, + 1813, 0, 0, 0, 2430, 0, 2433, 0, 0, 2097, + 0, 1872, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1881, 0, 197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 684, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 741, - 0, 0, 0, 684, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1105, 0, 1908, 0, 0, 0, + 0, 0, 3398, 0, 1917, 0, 0, 0, 1919, 0, + 0, 1922, 1923, 1925, 1925, 0, 1925, 0, 1925, 1925, + 0, 1934, 1925, 1925, 1925, 1925, 1925, 0, 0, 197, + 0, 0, 0, 0, 0, 1954, 1955, 0, 1105, 0, + 0, 1960, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 741, 0, 0, 0, - 0, 0, 0, 741, 0, 0, 0, 741, 741, 0, - 0, 0, 741, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1538, 0, 0, 0, 0, 1536, 741, + 0, 0, 0, 2002, 0, 0, 0, 0, 197, 0, + 197, 197, 197, 0, 0, 0, 2024, 0, 0, 2028, + 742, 742, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1538, 0, 0, 1538, 0, 1538, 684, 0, 0, 0, - 0, 0, 0, 0, 0, 2882, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1976, 0, 0, 0, - 0, 2899, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 684, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 2030, 684, 0, + 741, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1293, 0, 0, 0, 0, 0, 742, + 742, 742, 742, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 2097, + 0, 0, 0, 0, 0, 0, 2592, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 2613, 2614, 0, + 0, 2618, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 2623, 0, 0, 0, 0, 0, 0, + 2626, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 741, 0, 0, 684, 0, 0, 0, 0, 0, - 0, 684, 0, 0, 0, 0, 0, 0, 0, 0, - 2056, 2057, 684, 684, 684, 684, 684, 684, 684, 0, + 0, 0, 0, 0, 0, 0, 2629, 0, 0, 0, + 0, 3605, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 741, 0, 0, 0, 0, 0, 0, 0, 2981, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 741, 741, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 2408, 0, 0, 0, - 0, 0, 0, 3005, 0, 0, 0, 1917, 1917, 0, - 0, 0, 3010, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 3021, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1293, 1293, 0, 742, 0, 742, 0, + 197, 0, 0, 0, 0, 0, 0, 0, 2085, 0, + 0, 0, 0, 741, 741, 741, 741, 0, 0, 1537, + 0, 0, 0, 197, 0, 0, 742, 0, 742, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 741, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 741, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 2147, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 742, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 741, - 0, 2147, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 684, 0, 741, 0, 0, + 197, 0, 0, 742, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 742, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 741, 0, 0, 0, 1536, 0, 0, - 741, 741, 1536, 0, 0, 0, 0, 0, 0, 0, - 0, 2147, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1538, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1538, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 3317, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 741, 0, 0, 1536, 0, 0, - 0, 0, 741, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 3179, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1293, 0, - 0, 0, 0, 0, 0, 3398, 0, 0, 0, 0, + 741, 0, 741, 0, 0, 0, 0, 0, 0, 0, + 0, 742, 0, 0, 0, 0, 0, 0, 742, 0, + 742, 0, 0, 1536, 0, 0, 0, 0, 0, 0, + 741, 0, 741, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 742, + 0, 0, 0, 1293, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1925, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 3224, 0, 2030, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1293, 0, 0, 0, 0, 0, 0, - 3251, 1925, 0, 0, 0, 0, 0, 0, 0, 95, - 0, 0, 1032, 0, 0, 0, 0, 970, 1033, 984, - 985, 986, 971, 0, 1976, 972, 973, 0, 974, 0, + 0, 741, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 2395, 0, 0, 0, 741, 0, 0, + 0, 2936, 0, 0, 0, 0, 0, 0, 0, 0, + 741, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 2408, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1081, 0, 0, 0, 979, 0, 987, 988, 0, 0, - 0, 0, 0, 741, 0, 0, 0, 0, 0, 1060, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1795, + 0, 0, 1293, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1105, 0, 0, 0, 2985, 0, 0, 742, + 0, 0, 0, 0, 0, 741, 0, 0, 0, 0, + 0, 0, 741, 0, 741, 197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 684, 0, 0, 1105, 0, 0, 0, 2030, 684, - 0, 684, 2408, 684, 2449, 3367, 3368, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 989, 990, 991, - 992, 993, 994, 995, 996, 997, 998, 999, 1000, 1001, - 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011, - 1012, 1013, 1014, 1015, 1016, 1017, 1018, 1019, 1020, 1021, - 1022, 1023, 1024, 1025, 1026, 1027, 1028, 1029, 1030, 0, + 0, 0, 0, 742, 197, 0, 0, 0, 0, 0, + 0, 0, 0, 741, 0, 0, 0, 0, 0, 0, + 1112, 0, 0, 0, 0, 0, 0, 2523, 2524, 2525, + 0, 0, 3033, 3034, 3035, 3036, 3037, 3038, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1105, 0, + 0, 0, 0, 0, 1112, 1917, 0, 0, 1917, 0, + 1917, 2097, 3049, 0, 0, 0, 2556, 0, 0, 742, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 742, + 0, 0, 0, 0, 0, 0, 3057, 0, 0, 1537, + 742, 0, 742, 0, 0, 0, 0, 0, 0, 0, + 0, 1105, 0, 0, 0, 0, 2147, 0, 0, 0, + 2147, 2147, 0, 0, 0, 0, 0, 742, 2358, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 3605, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 2526, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3369, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 741, 741, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 741, 0, 0, 0, 0, 197, 742, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 741, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 742, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 741, 741, 741, 741, - 0, 0, 0, 1872, 0, 0, 0, 0, 0, 0, - 0, 3370, 3371, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 684, 0, 0, 0, 0, 0, - 0, 684, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 684, 684, 0, 0, 684, 0, 2620, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 684, 0, - 0, 0, 0, 0, 0, 684, 0, 0, 0, 0, + 0, 0, 0, 0, 742, 0, 0, 2634, 0, 197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 935, 0, 0, 0, - 0, 684, 939, 0, 0, 0, 936, 937, 2631, 0, - 0, 938, 940, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 742, 0, 742, 0, 0, 0, 0, + 0, 0, 0, 741, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 741, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1536, 741, 0, 741, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 741, 741, 1293, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 2408, 2408, 0, - 0, 0, 0, 741, 0, 741, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1536, 1538, 0, 2030, - 0, 0, 0, 741, 0, 741, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 3669, 3670, 3671, 3672, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 741, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 741, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 741, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 741, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 741, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 741, 0, 741, + 0, 0, 3321, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 3359, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 3373, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 3391, 0, 0, 3394, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 741, 0, 0, - 0, 0, 0, 0, 741, 0, 741, 0, 0, 0, - 0, 0, 0, 3747, 0, 3747, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 741, 0, 0, 0, 0, - 0, 0, 0, 3775, 0, 3777, 0, 0, 0, 0, - 0, 0, 684, 0, 0, 0, 0, 0, 0, 0, - 1976, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 2882, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2899, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 2408, 0, 0, 0, 0, 0, 0, - 0, 684, 0, 0, 0, 0, 684, 0, 0, 3944, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1293, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 741, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 684, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 3747, 0, 741, - 0, 0, 0, 0, 3747, 0, 3747, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1538, 2408, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 684, 684, 684, - 684, 684, 684, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 741, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 741, 684, 684, 0, 0, - 0, 0, 0, 0, 0, 1536, 741, 0, 741, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 2981, + 0, 3554, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 684, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 741, 741, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 2408, 0, 0, 0, + 0, 0, 0, 3005, 0, 0, 0, 1917, 1917, 0, + 0, 0, 3010, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 3021, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 3616, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 741, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 3631, 0, 3632, 3633, + 3634, 0, 0, 0, 0, 0, 3808, 3810, 3809, 3875, + 3876, 3877, 3878, 3879, 3880, 3881, 3811, 3812, 812, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 2408, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 741, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 2408, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 741, + 0, 2147, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 741, 0, - 741, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 4091, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 4099, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 2408, 0, 4107, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2147, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1293, 1293, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1081, 0, - 684, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 4157, 0, 0, 0, 0, - 0, 0, 0, 1538, 0, 0, 0, 0, 1538, 684, - 684, 684, 684, 684, 0, 0, 0, 0, 0, 0, - 0, 3267, 0, 0, 0, 0, 0, 1976, 0, 684, - 0, 0, 684, 3275, 2030, 4099, 0, 0, 0, 3807, - 3809, 3808, 3874, 3875, 3876, 3877, 3878, 3879, 3880, 3810, - 3811, 812, 0, 0, 0, 0, 0, 0, 0, 2408, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 684, 1872, 0, - 4157, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1538, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 684, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 684, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 684, 0, - 0, 684, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 3179, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1293, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1925, + 3816, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 3824, 3825, 3224, 0, 3900, + 3899, 3898, 0, 0, 3896, 3897, 3895, 0, 0, 0, + 0, 0, 0, 1293, 0, 0, 0, 0, 0, 0, + 3251, 1925, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3901, 935, 0, 788, 789, 3902, 3903, 939, 3904, 791, + 792, 936, 937, 0, 786, 790, 938, 940, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 3815, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 3823, 3824, - 0, 0, 3899, 3898, 3897, 0, 684, 3895, 3896, 3894, + 0, 0, 0, 0, 1105, 0, 0, 0, 0, 0, + 0, 0, 2408, 3805, 3806, 3807, 3813, 3814, 3815, 3826, + 3873, 3874, 3882, 3884, 891, 3883, 3885, 3886, 3887, 3890, + 3891, 3892, 3893, 3888, 3889, 3894, 3788, 3792, 3789, 3790, + 3791, 3803, 3793, 3794, 3795, 3796, 3797, 3798, 3799, 3800, + 3801, 3802, 3804, 3905, 3906, 3907, 3908, 3909, 3910, 3819, + 3823, 3822, 3820, 3821, 3817, 3818, 3845, 3844, 3846, 3847, + 3848, 3849, 3850, 3851, 3853, 3852, 3854, 3855, 3856, 3857, + 3858, 3859, 3827, 3828, 3831, 3832, 3830, 3829, 3833, 3842, + 3843, 3834, 3835, 3836, 3837, 3838, 3839, 3841, 3840, 3860, + 3861, 3862, 3863, 3864, 3866, 3865, 3869, 3870, 3868, 3867, + 3872, 3871, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 941, 0, 942, 0, 0, + 946, 0, 0, 0, 948, 947, 0, 949, 911, 910, + 0, 0, 943, 944, 0, 945, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1872, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 684, 3900, 935, 0, 788, 789, 3901, 3902, - 939, 3903, 791, 792, 936, 937, 0, 786, 790, 938, - 940, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 684, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 3911, 3912, 3913, 3914, 3915, 3916, + 3917, 3918, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 684, 0, 684, 684, 684, 3804, 3805, 3806, 3812, - 3813, 3814, 3825, 3872, 3873, 3881, 3883, 891, 3882, 3884, - 3885, 3886, 3889, 3890, 3891, 3892, 3887, 3888, 3893, 3787, - 3791, 3788, 3789, 3790, 3802, 3792, 3793, 3794, 3795, 3796, - 3797, 3798, 3799, 3800, 3801, 3803, 3904, 3905, 3906, 3907, - 3908, 3909, 3818, 3822, 3821, 3819, 3820, 3816, 3817, 3844, - 3843, 3845, 3846, 3847, 3848, 3849, 3850, 3852, 3851, 3853, - 3854, 3855, 3856, 3857, 3858, 3826, 3827, 3830, 3831, 3829, - 3828, 3832, 3841, 3842, 3833, 3834, 3835, 3836, 3837, 3838, - 3840, 3839, 3859, 3860, 3861, 3862, 3863, 3865, 3864, 3868, - 3869, 3867, 3866, 3871, 3870, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 941, 0, - 942, 0, 0, 946, 0, 0, 0, 948, 947, 0, - 949, 911, 910, 0, 0, 943, 944, 0, 945, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 4072, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 3910, 3911, 3912, - 3913, 3914, 3915, 3916, 3917, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1976, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1538, 0, 0, 0, 1976, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 2408, 2408, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 3670, 3671, 3672, 3673, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1976, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -2851,24 +2782,30 @@ var yyAct = [...]int{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 3748, 0, 3748, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 3776, 0, 3778, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2408, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3945, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1293, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1976, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 3748, 0, + 0, 0, 0, 0, 0, 3748, 0, 3748, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 684, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 2408, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -2876,4518 +2813,4544 @@ var yyAct = [...]int{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1538, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 4129, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1976, 0, 0, 400, 0, 0, 0, 0, 0, 0, - 1431, 1415, 534, 0, 1357, 1434, 1325, 1344, 1444, 1347, - 1350, 1394, 1303, 1372, 420, 1341, 1329, 1298, 1336, 1299, - 1327, 1359, 273, 1324, 1417, 1376, 1433, 369, 270, 1305, - 1296, 206, 511, 1330, 435, 1346, 205, 1396, 493, 255, - 380, 377, 590, 285, 276, 272, 252, 320, 389, 432, - 524, 426, 1440, 373, 1382, 0, 503, 405, 0, 0, - 2030, 1421, 1420, 1351, 1361, 1423, 1370, 1408, 1356, 1395, - 1313, 1381, 1435, 1342, 1391, 1436, 326, 250, 328, 204, - 417, 504, 289, 0, 0, 0, 0, 4131, 513, 966, - 0, 0, 0, 0, 4132, 0, 0, 0, 0, 240, - 0, 0, 247, 0, 0, 0, 354, 363, 362, 342, - 343, 345, 347, 353, 360, 366, 339, 348, 1338, 1388, - 616, 1430, 1339, 1390, 268, 324, 275, 267, 587, 1441, - 1422, 1302, 1369, 1429, 1364, 603, 0, 0, 231, 1432, - 1363, 0, 1393, 0, 1447, 1297, 1384, 0, 1300, 1304, - 1443, 1427, 1333, 278, 0, 0, 0, 0, 0, 0, - 0, 1360, 1371, 1405, 1409, 1354, 0, 0, 0, 0, - 0, 0, 0, 0, 1331, 0, 1380, 0, 0, 0, - 1309, 1301, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 2408, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1358, 0, 0, 0, 0, 1312, - 0, 1332, 1406, 0, 1295, 300, 1306, 406, 260, 0, - 459, 1413, 1426, 1355, 636, 1428, 1353, 1352, 1400, 1310, - 1419, 1345, 368, 1308, 333, 199, 227, 0, 1343, 416, - 467, 479, 1418, 1328, 1337, 256, 1335, 477, 430, 611, - 235, 287, 464, 437, 475, 445, 290, 1379, 1398, 476, - 375, 592, 455, 608, 637, 638, 266, 410, 622, 528, - 630, 655, 228, 263, 424, 512, 614, 500, 401, 588, - 589, 332, 499, 298, 203, 372, 643, 226, 485, 374, - 244, 233, 594, 619, 302, 254, 292, 462, 650, 215, - 523, 605, 241, 489, 0, 0, 658, 249, 510, 617, - 606, 217, 601, 509, 397, 329, 330, 216, 0, 463, - 271, 296, 0, 0, 261, 419, 596, 597, 259, 659, - 230, 629, 222, 1307, 628, 412, 591, 602, 398, 386, - 221, 600, 396, 385, 337, 358, 359, 283, 310, 452, - 378, 453, 309, 311, 408, 407, 409, 209, 615, 633, - 0, 210, 0, 505, 618, 660, 457, 214, 236, 237, - 239, 1323, 282, 286, 294, 297, 306, 307, 316, 370, - 423, 451, 447, 456, 1414, 585, 609, 623, 635, 641, - 642, 644, 645, 646, 647, 648, 651, 649, 411, 314, - 501, 336, 376, 1403, 1446, 429, 478, 242, 613, 502, - 201, 1317, 1322, 1315, 0, 257, 258, 1385, 581, 1318, - 1316, 1374, 1375, 1319, 1437, 1438, 1439, 1424, 661, 662, - 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, - 673, 674, 675, 676, 677, 678, 656, 514, 520, 515, - 516, 517, 518, 519, 0, 521, 1407, 1311, 0, 1320, - 1321, 402, 1416, 598, 599, 679, 387, 492, 610, 338, - 352, 355, 344, 364, 0, 365, 340, 341, 346, 349, - 350, 351, 356, 357, 361, 367, 251, 212, 394, 403, - 584, 315, 218, 219, 220, 530, 531, 532, 533, 626, - 627, 631, 207, 468, 469, 470, 471, 295, 621, 312, - 474, 473, 334, 335, 382, 454, 546, 548, 559, 563, - 565, 567, 573, 576, 547, 549, 560, 564, 566, 568, - 574, 577, 536, 538, 540, 542, 555, 554, 551, 579, - 580, 557, 562, 541, 553, 558, 571, 578, 575, 535, - 539, 543, 552, 570, 569, 550, 561, 572, 556, 544, - 537, 545, 1378, 198, 223, 371, 1442, 460, 291, 657, - 625, 490, 620, 208, 225, 1314, 265, 1326, 1334, 0, - 1340, 1348, 1349, 1362, 1365, 1366, 1367, 1368, 1386, 1387, - 1389, 1397, 1399, 1402, 1404, 1411, 1425, 1445, 200, 202, - 211, 224, 234, 238, 245, 264, 279, 281, 288, 301, - 313, 321, 322, 325, 331, 383, 390, 391, 392, 393, - 413, 414, 415, 418, 421, 422, 425, 427, 428, 431, - 436, 440, 441, 442, 444, 446, 448, 461, 466, 480, - 481, 482, 483, 484, 487, 488, 494, 495, 496, 497, - 498, 506, 507, 522, 593, 595, 612, 632, 639, 486, - 388, 434, 458, 586, 304, 305, 449, 450, 317, 318, - 653, 654, 303, 607, 640, 604, 652, 634, 443, 381, - 1377, 1383, 384, 284, 308, 323, 1392, 624, 508, 229, - 472, 293, 253, 1410, 1412, 213, 248, 232, 262, 277, - 280, 327, 395, 404, 433, 439, 299, 274, 246, 465, - 243, 491, 525, 526, 527, 529, 399, 269, 438, 1373, - 1401, 379, 582, 583, 319, 400, 0, 0, 0, 0, - 0, 0, 1431, 1415, 534, 0, 1357, 1434, 1325, 1344, - 1444, 1347, 1350, 1394, 1303, 1372, 420, 1341, 1329, 1298, - 1336, 1299, 1327, 1359, 273, 1324, 1417, 1376, 1433, 369, - 270, 1305, 1296, 206, 511, 1330, 435, 1346, 205, 1396, - 493, 255, 380, 377, 590, 285, 276, 272, 252, 320, - 389, 432, 524, 426, 1440, 373, 1382, 0, 503, 405, - 0, 0, 0, 1421, 1420, 1351, 1361, 1423, 1370, 1408, - 1356, 1395, 1313, 1381, 1435, 1342, 1391, 1436, 326, 250, - 328, 204, 417, 504, 289, 0, 0, 0, 0, 0, - 513, 196, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 240, 0, 0, 247, 0, 0, 0, 354, 363, - 362, 342, 343, 345, 347, 353, 360, 366, 339, 348, - 1338, 1388, 616, 1430, 1339, 1390, 268, 324, 275, 267, - 587, 1441, 1422, 1302, 1369, 1429, 1364, 603, 0, 0, - 231, 1432, 1363, 0, 1393, 0, 1447, 1297, 1384, 0, - 1300, 1304, 1443, 1427, 1333, 278, 0, 0, 0, 0, - 0, 0, 0, 1360, 1371, 1405, 1409, 1354, 0, 0, - 0, 0, 0, 0, 3276, 0, 1331, 0, 1380, 0, - 0, 0, 1309, 1301, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1358, 0, 0, 0, - 0, 1312, 0, 1332, 1406, 0, 1295, 300, 1306, 406, - 260, 0, 459, 1413, 1426, 1355, 636, 1428, 1353, 1352, - 1400, 1310, 1419, 1345, 368, 1308, 333, 199, 227, 0, - 1343, 416, 467, 479, 1418, 1328, 1337, 256, 1335, 477, - 430, 611, 235, 287, 464, 437, 475, 445, 290, 1379, - 1398, 476, 375, 592, 455, 608, 637, 638, 266, 410, - 622, 528, 630, 655, 228, 263, 424, 512, 614, 500, - 401, 588, 589, 332, 499, 298, 203, 372, 643, 226, - 485, 374, 244, 233, 594, 619, 302, 254, 292, 462, - 650, 215, 523, 605, 241, 489, 0, 0, 658, 249, - 510, 617, 606, 217, 601, 509, 397, 329, 330, 216, - 0, 463, 271, 296, 0, 0, 261, 419, 596, 597, - 259, 659, 230, 629, 222, 1307, 628, 412, 591, 602, - 398, 386, 221, 600, 396, 385, 337, 358, 359, 283, - 310, 452, 378, 453, 309, 311, 408, 407, 409, 209, - 615, 633, 0, 210, 0, 505, 618, 660, 457, 214, - 236, 237, 239, 1323, 282, 286, 294, 297, 306, 307, - 316, 370, 423, 451, 447, 456, 1414, 585, 609, 623, - 635, 641, 642, 644, 645, 646, 647, 648, 651, 649, - 411, 314, 501, 336, 376, 1403, 1446, 429, 478, 242, - 613, 502, 201, 1317, 1322, 1315, 0, 257, 258, 1385, - 581, 1318, 1316, 1374, 1375, 1319, 1437, 1438, 1439, 1424, - 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, - 671, 672, 673, 674, 675, 676, 677, 678, 656, 514, - 520, 515, 516, 517, 518, 519, 0, 521, 1407, 1311, - 0, 1320, 1321, 402, 1416, 598, 599, 679, 387, 492, - 610, 338, 352, 355, 344, 364, 0, 365, 340, 341, - 346, 349, 350, 351, 356, 357, 361, 367, 251, 212, - 394, 403, 584, 315, 218, 219, 220, 530, 531, 532, - 533, 626, 627, 631, 207, 468, 469, 470, 471, 295, - 621, 312, 474, 473, 334, 335, 382, 454, 546, 548, - 559, 563, 565, 567, 573, 576, 547, 549, 560, 564, - 566, 568, 574, 577, 536, 538, 540, 542, 555, 554, - 551, 579, 580, 557, 562, 541, 553, 558, 571, 578, - 575, 535, 539, 543, 552, 570, 569, 550, 561, 572, - 556, 544, 537, 545, 1378, 198, 223, 371, 1442, 460, - 291, 657, 625, 490, 620, 208, 225, 1314, 265, 1326, - 1334, 0, 1340, 1348, 1349, 1362, 1365, 1366, 1367, 1368, - 1386, 1387, 1389, 1397, 1399, 1402, 1404, 1411, 1425, 1445, - 200, 202, 211, 224, 234, 238, 245, 264, 279, 281, - 288, 301, 313, 321, 322, 325, 331, 383, 390, 391, - 392, 393, 413, 414, 415, 418, 421, 422, 425, 427, - 428, 431, 436, 440, 441, 442, 444, 446, 448, 461, - 466, 480, 481, 482, 483, 484, 487, 488, 494, 495, - 496, 497, 498, 506, 507, 522, 593, 595, 612, 632, - 639, 486, 388, 434, 458, 586, 304, 305, 449, 450, - 317, 318, 653, 654, 303, 607, 640, 604, 652, 634, - 443, 381, 1377, 1383, 384, 284, 308, 323, 1392, 624, - 508, 229, 472, 293, 253, 1410, 1412, 213, 248, 232, - 262, 277, 280, 327, 395, 404, 433, 439, 299, 274, - 246, 465, 243, 491, 525, 526, 527, 529, 399, 269, - 438, 1373, 1401, 379, 582, 583, 319, 400, 0, 0, - 0, 0, 0, 0, 1431, 1415, 534, 0, 1357, 1434, - 1325, 1344, 1444, 1347, 1350, 1394, 1303, 1372, 420, 1341, - 1329, 1298, 1336, 1299, 1327, 1359, 273, 1324, 1417, 1376, - 1433, 369, 270, 1305, 1296, 206, 511, 1330, 435, 1346, - 205, 1396, 493, 255, 380, 377, 590, 285, 276, 272, - 252, 320, 389, 432, 524, 426, 1440, 373, 1382, 0, - 503, 405, 0, 0, 0, 1421, 1420, 1351, 1361, 1423, - 1370, 1408, 1356, 1395, 1313, 1381, 1435, 1342, 1391, 1436, - 326, 250, 328, 204, 417, 504, 289, 0, 0, 0, - 0, 0, 513, 731, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 240, 0, 0, 247, 0, 0, 0, - 354, 363, 362, 342, 343, 345, 347, 353, 360, 366, - 339, 348, 1338, 1388, 616, 1430, 1339, 1390, 268, 324, - 275, 267, 587, 1441, 1422, 1302, 1369, 1429, 1364, 603, - 0, 0, 231, 1432, 1363, 0, 1393, 0, 1447, 1297, - 1384, 0, 1300, 1304, 1443, 1427, 1333, 278, 0, 0, - 0, 0, 0, 0, 0, 1360, 1371, 1405, 1409, 1354, - 0, 0, 0, 0, 0, 0, 3237, 0, 1331, 0, - 1380, 0, 0, 0, 1309, 1301, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1358, 0, - 0, 0, 0, 1312, 0, 1332, 1406, 0, 1295, 300, - 1306, 406, 260, 0, 459, 1413, 1426, 1355, 636, 1428, - 1353, 1352, 1400, 1310, 1419, 1345, 368, 1308, 333, 199, - 227, 0, 1343, 416, 467, 479, 1418, 1328, 1337, 256, - 1335, 477, 430, 611, 235, 287, 464, 437, 475, 445, - 290, 1379, 1398, 476, 375, 592, 455, 608, 637, 638, - 266, 410, 622, 528, 630, 655, 228, 263, 424, 512, - 614, 500, 401, 588, 589, 332, 499, 298, 203, 372, - 643, 226, 485, 374, 244, 233, 594, 619, 302, 254, - 292, 462, 650, 215, 523, 605, 241, 489, 0, 0, - 658, 249, 510, 617, 606, 217, 601, 509, 397, 329, - 330, 216, 0, 463, 271, 296, 0, 0, 261, 419, - 596, 597, 259, 659, 230, 629, 222, 1307, 628, 412, - 591, 602, 398, 386, 221, 600, 396, 385, 337, 358, - 359, 283, 310, 452, 378, 453, 309, 311, 408, 407, - 409, 209, 615, 633, 0, 210, 0, 505, 618, 660, - 457, 214, 236, 237, 239, 1323, 282, 286, 294, 297, - 306, 307, 316, 370, 423, 451, 447, 456, 1414, 585, - 609, 623, 635, 641, 642, 644, 645, 646, 647, 648, - 651, 649, 411, 314, 501, 336, 376, 1403, 1446, 429, - 478, 242, 613, 502, 201, 1317, 1322, 1315, 0, 257, - 258, 1385, 581, 1318, 1316, 1374, 1375, 1319, 1437, 1438, - 1439, 1424, 661, 662, 663, 664, 665, 666, 667, 668, - 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, - 656, 514, 520, 515, 516, 517, 518, 519, 0, 521, - 1407, 1311, 0, 1320, 1321, 402, 1416, 598, 599, 679, - 387, 492, 610, 338, 352, 355, 344, 364, 0, 365, - 340, 341, 346, 349, 350, 351, 356, 357, 361, 367, - 251, 212, 394, 403, 584, 315, 218, 219, 220, 530, - 531, 532, 533, 626, 627, 631, 207, 468, 469, 470, - 471, 295, 621, 312, 474, 473, 334, 335, 382, 454, - 546, 548, 559, 563, 565, 567, 573, 576, 547, 549, - 560, 564, 566, 568, 574, 577, 536, 538, 540, 542, - 555, 554, 551, 579, 580, 557, 562, 541, 553, 558, - 571, 578, 575, 535, 539, 543, 552, 570, 569, 550, - 561, 572, 556, 544, 537, 545, 1378, 198, 223, 371, - 1442, 460, 291, 657, 625, 490, 620, 208, 225, 1314, - 265, 1326, 1334, 0, 1340, 1348, 1349, 1362, 1365, 1366, - 1367, 1368, 1386, 1387, 1389, 1397, 1399, 1402, 1404, 1411, - 1425, 1445, 200, 202, 211, 224, 234, 238, 245, 264, - 279, 281, 288, 301, 313, 321, 322, 325, 331, 383, - 390, 391, 392, 393, 413, 414, 415, 418, 421, 422, - 425, 427, 428, 431, 436, 440, 441, 442, 444, 446, - 448, 461, 466, 480, 481, 482, 483, 484, 487, 488, - 494, 495, 496, 497, 498, 506, 507, 522, 593, 595, - 612, 632, 639, 486, 388, 434, 458, 586, 304, 305, - 449, 450, 317, 318, 653, 654, 303, 607, 640, 604, - 652, 634, 443, 381, 1377, 1383, 384, 284, 308, 323, - 1392, 624, 508, 229, 472, 293, 253, 1410, 1412, 213, - 248, 232, 262, 277, 280, 327, 395, 404, 433, 439, - 299, 274, 246, 465, 243, 491, 525, 526, 527, 529, - 399, 269, 438, 1373, 1401, 379, 582, 583, 319, 400, - 0, 0, 0, 0, 0, 0, 1431, 1415, 534, 0, - 1357, 1434, 1325, 1344, 1444, 1347, 1350, 1394, 1303, 1372, - 420, 1341, 1329, 1298, 1336, 1299, 1327, 1359, 273, 1324, - 1417, 1376, 1433, 369, 270, 1305, 1296, 206, 511, 1330, - 435, 1346, 205, 1396, 493, 255, 380, 377, 590, 285, - 276, 272, 252, 320, 389, 432, 524, 426, 1440, 373, - 1382, 0, 503, 405, 0, 0, 0, 1421, 1420, 1351, - 1361, 1423, 1370, 1408, 1356, 1395, 1313, 1381, 1435, 1342, - 1391, 1436, 326, 250, 328, 204, 417, 504, 289, 0, - 0, 0, 0, 0, 513, 966, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 240, 0, 0, 247, 0, - 0, 0, 354, 363, 362, 342, 343, 345, 347, 353, - 360, 366, 339, 348, 1338, 1388, 616, 1430, 1339, 1390, - 268, 324, 275, 267, 587, 1441, 1422, 1302, 1369, 1429, - 1364, 603, 0, 0, 231, 1432, 1363, 0, 1393, 0, - 1447, 1297, 1384, 0, 1300, 1304, 1443, 1427, 1333, 278, - 0, 0, 0, 0, 0, 0, 0, 1360, 1371, 1405, - 1409, 1354, 0, 0, 0, 0, 0, 0, 2428, 0, - 1331, 0, 1380, 0, 0, 0, 1309, 1301, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1358, 0, 0, 0, 0, 1312, 0, 1332, 1406, 0, - 1295, 300, 1306, 406, 260, 0, 459, 1413, 1426, 1355, - 636, 1428, 1353, 1352, 1400, 1310, 1419, 1345, 368, 1308, - 333, 199, 227, 0, 1343, 416, 467, 479, 1418, 1328, - 1337, 256, 1335, 477, 430, 611, 235, 287, 464, 437, - 475, 445, 290, 1379, 1398, 476, 375, 592, 455, 608, - 637, 638, 266, 410, 622, 528, 630, 655, 228, 263, - 424, 512, 614, 500, 401, 588, 589, 332, 499, 298, - 203, 372, 643, 226, 485, 374, 244, 233, 594, 619, - 302, 254, 292, 462, 650, 215, 523, 605, 241, 489, - 0, 0, 658, 249, 510, 617, 606, 217, 601, 509, - 397, 329, 330, 216, 0, 463, 271, 296, 0, 0, - 261, 419, 596, 597, 259, 659, 230, 629, 222, 1307, - 628, 412, 591, 602, 398, 386, 221, 600, 396, 385, - 337, 358, 359, 283, 310, 452, 378, 453, 309, 311, - 408, 407, 409, 209, 615, 633, 0, 210, 0, 505, - 618, 660, 457, 214, 236, 237, 239, 1323, 282, 286, - 294, 297, 306, 307, 316, 370, 423, 451, 447, 456, - 1414, 585, 609, 623, 635, 641, 642, 644, 645, 646, - 647, 648, 651, 649, 411, 314, 501, 336, 376, 1403, - 1446, 429, 478, 242, 613, 502, 201, 1317, 1322, 1315, - 0, 257, 258, 1385, 581, 1318, 1316, 1374, 1375, 1319, - 1437, 1438, 1439, 1424, 661, 662, 663, 664, 665, 666, - 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, - 677, 678, 656, 514, 520, 515, 516, 517, 518, 519, - 0, 521, 1407, 1311, 0, 1320, 1321, 402, 1416, 598, - 599, 679, 387, 492, 610, 338, 352, 355, 344, 364, - 0, 365, 340, 341, 346, 349, 350, 351, 356, 357, - 361, 367, 251, 212, 394, 403, 584, 315, 218, 219, - 220, 530, 531, 532, 533, 626, 627, 631, 207, 468, - 469, 470, 471, 295, 621, 312, 474, 473, 334, 335, - 382, 454, 546, 548, 559, 563, 565, 567, 573, 576, - 547, 549, 560, 564, 566, 568, 574, 577, 536, 538, - 540, 542, 555, 554, 551, 579, 580, 557, 562, 541, - 553, 558, 571, 578, 575, 535, 539, 543, 552, 570, - 569, 550, 561, 572, 556, 544, 537, 545, 1378, 198, - 223, 371, 1442, 460, 291, 657, 625, 490, 620, 208, - 225, 1314, 265, 1326, 1334, 0, 1340, 1348, 1349, 1362, - 1365, 1366, 1367, 1368, 1386, 1387, 1389, 1397, 1399, 1402, - 1404, 1411, 1425, 1445, 200, 202, 211, 224, 234, 238, - 245, 264, 279, 281, 288, 301, 313, 321, 322, 325, - 331, 383, 390, 391, 392, 393, 413, 414, 415, 418, - 421, 422, 425, 427, 428, 431, 436, 440, 441, 442, - 444, 446, 448, 461, 466, 480, 481, 482, 483, 484, - 487, 488, 494, 495, 496, 497, 498, 506, 507, 522, - 593, 595, 612, 632, 639, 486, 388, 434, 458, 586, - 304, 305, 449, 450, 317, 318, 653, 654, 303, 607, - 640, 604, 652, 634, 443, 381, 1377, 1383, 384, 284, - 308, 323, 1392, 624, 508, 229, 472, 293, 253, 1410, - 1412, 213, 248, 232, 262, 277, 280, 327, 395, 404, - 433, 439, 299, 274, 246, 465, 243, 491, 525, 526, - 527, 529, 399, 269, 438, 1373, 1401, 379, 582, 583, - 319, 400, 0, 0, 0, 0, 0, 0, 1431, 1415, - 534, 0, 1357, 1434, 1325, 1344, 1444, 1347, 1350, 1394, - 1303, 1372, 420, 1341, 1329, 1298, 1336, 1299, 1327, 1359, - 273, 1324, 1417, 1376, 1433, 369, 270, 1305, 1296, 206, - 511, 1330, 435, 1346, 205, 1396, 493, 255, 380, 377, - 590, 285, 276, 272, 252, 320, 389, 432, 524, 426, - 1440, 373, 1382, 0, 503, 405, 0, 0, 0, 1421, - 1420, 1351, 1361, 1423, 1370, 1408, 1356, 1395, 1313, 1381, - 1435, 1342, 1391, 1436, 326, 250, 328, 204, 417, 504, - 289, 0, 95, 0, 0, 0, 513, 731, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 240, 0, 0, - 247, 0, 0, 0, 354, 363, 362, 342, 343, 345, - 347, 353, 360, 366, 339, 348, 1338, 1388, 616, 1430, - 1339, 1390, 268, 324, 275, 267, 587, 1441, 1422, 1302, - 1369, 1429, 1364, 603, 0, 0, 231, 1432, 1363, 0, - 1393, 0, 1447, 1297, 1384, 0, 1300, 1304, 1443, 1427, - 1333, 278, 0, 0, 0, 0, 0, 0, 0, 1360, - 1371, 1405, 1409, 1354, 0, 0, 0, 0, 0, 0, - 0, 0, 1331, 0, 1380, 0, 0, 0, 1309, 1301, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1358, 0, 0, 0, 0, 1312, 0, 1332, - 1406, 0, 1295, 300, 1306, 406, 260, 0, 459, 1413, - 1426, 1355, 636, 1428, 1353, 1352, 1400, 1310, 1419, 1345, - 368, 1308, 333, 199, 227, 0, 1343, 416, 467, 479, - 1418, 1328, 1337, 256, 1335, 477, 430, 611, 235, 287, - 464, 437, 475, 445, 290, 1379, 1398, 476, 375, 592, - 455, 608, 637, 638, 266, 410, 622, 528, 630, 655, - 228, 263, 424, 512, 614, 500, 401, 588, 589, 332, - 499, 298, 203, 372, 643, 226, 485, 374, 244, 233, - 594, 619, 302, 254, 292, 462, 650, 215, 523, 605, - 241, 489, 0, 0, 658, 249, 510, 617, 606, 217, - 601, 509, 397, 329, 330, 216, 0, 463, 271, 296, - 0, 0, 261, 419, 596, 597, 259, 659, 230, 629, - 222, 1307, 628, 412, 591, 602, 398, 386, 221, 600, - 396, 385, 337, 358, 359, 283, 310, 452, 378, 453, - 309, 311, 408, 407, 409, 209, 615, 633, 0, 210, - 0, 505, 618, 660, 457, 214, 236, 237, 239, 1323, - 282, 286, 294, 297, 306, 307, 316, 370, 423, 451, - 447, 456, 1414, 585, 609, 623, 635, 641, 642, 644, - 645, 646, 647, 648, 651, 649, 411, 314, 501, 336, - 376, 1403, 1446, 429, 478, 242, 613, 502, 201, 1317, - 1322, 1315, 0, 257, 258, 1385, 581, 1318, 1316, 1374, - 1375, 1319, 1437, 1438, 1439, 1424, 661, 662, 663, 664, - 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, - 675, 676, 677, 678, 656, 514, 520, 515, 516, 517, - 518, 519, 0, 521, 1407, 1311, 0, 1320, 1321, 402, - 1416, 598, 599, 679, 387, 492, 610, 338, 352, 355, - 344, 364, 0, 365, 340, 341, 346, 349, 350, 351, - 356, 357, 361, 367, 251, 212, 394, 403, 584, 315, - 218, 219, 220, 530, 531, 532, 533, 626, 627, 631, - 207, 468, 469, 470, 471, 295, 621, 312, 474, 473, - 334, 335, 382, 454, 546, 548, 559, 563, 565, 567, - 573, 576, 547, 549, 560, 564, 566, 568, 574, 577, - 536, 538, 540, 542, 555, 554, 551, 579, 580, 557, - 562, 541, 553, 558, 571, 578, 575, 535, 539, 543, - 552, 570, 569, 550, 561, 572, 556, 544, 537, 545, - 1378, 198, 223, 371, 1442, 460, 291, 657, 625, 490, - 620, 208, 225, 1314, 265, 1326, 1334, 0, 1340, 1348, - 1349, 1362, 1365, 1366, 1367, 1368, 1386, 1387, 1389, 1397, - 1399, 1402, 1404, 1411, 1425, 1445, 200, 202, 211, 224, - 234, 238, 245, 264, 279, 281, 288, 301, 313, 321, - 322, 325, 331, 383, 390, 391, 392, 393, 413, 414, - 415, 418, 421, 422, 425, 427, 428, 431, 436, 440, - 441, 442, 444, 446, 448, 461, 466, 480, 481, 482, - 483, 484, 487, 488, 494, 495, 496, 497, 498, 506, - 507, 522, 593, 595, 612, 632, 639, 486, 388, 434, - 458, 586, 304, 305, 449, 450, 317, 318, 653, 654, - 303, 607, 640, 604, 652, 634, 443, 381, 1377, 1383, - 384, 284, 308, 323, 1392, 624, 508, 229, 472, 293, - 253, 1410, 1412, 213, 248, 232, 262, 277, 280, 327, - 395, 404, 433, 439, 299, 274, 246, 465, 243, 491, - 525, 526, 527, 529, 399, 269, 438, 1373, 1401, 379, - 582, 583, 319, 400, 0, 0, 0, 0, 0, 0, - 1431, 1415, 534, 0, 1357, 1434, 1325, 1344, 1444, 1347, - 1350, 1394, 1303, 1372, 420, 1341, 1329, 1298, 1336, 1299, - 1327, 1359, 273, 1324, 1417, 1376, 1433, 369, 270, 1305, - 1296, 206, 511, 1330, 435, 1346, 205, 1396, 493, 255, - 380, 377, 590, 285, 276, 272, 252, 320, 389, 432, - 524, 426, 1440, 373, 1382, 0, 503, 405, 0, 0, - 0, 1421, 1420, 1351, 1361, 1423, 1370, 1408, 1356, 1395, - 1313, 1381, 1435, 1342, 1391, 1436, 326, 250, 328, 204, - 417, 504, 289, 0, 0, 0, 0, 0, 513, 196, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 240, - 0, 0, 247, 0, 0, 0, 354, 363, 362, 342, - 343, 345, 347, 353, 360, 366, 339, 348, 1338, 1388, - 616, 1430, 1339, 1390, 268, 324, 275, 267, 587, 1441, - 1422, 1302, 1369, 1429, 1364, 603, 0, 0, 231, 1432, - 1363, 0, 1393, 0, 1447, 1297, 1384, 0, 1300, 1304, - 1443, 1427, 1333, 278, 0, 0, 0, 0, 0, 0, - 0, 1360, 1371, 1405, 1409, 1354, 0, 0, 0, 0, - 0, 0, 0, 0, 1331, 0, 1380, 0, 0, 0, - 1309, 1301, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1358, 0, 0, 0, 0, 1312, - 0, 1332, 1406, 0, 1295, 300, 1306, 406, 260, 0, - 459, 1413, 1426, 1355, 636, 1428, 1353, 1352, 1400, 1310, - 1419, 1345, 368, 1308, 333, 199, 227, 0, 1343, 416, - 467, 479, 1418, 1328, 1337, 256, 1335, 477, 430, 611, - 235, 287, 464, 437, 475, 445, 290, 1379, 1398, 476, - 375, 592, 455, 608, 637, 638, 266, 410, 622, 528, - 630, 655, 228, 263, 424, 512, 614, 500, 401, 588, - 589, 332, 499, 298, 203, 372, 643, 226, 485, 374, - 244, 233, 594, 619, 302, 254, 292, 462, 650, 215, - 523, 605, 241, 489, 0, 0, 658, 249, 510, 617, - 606, 217, 601, 509, 397, 329, 330, 216, 0, 463, - 271, 296, 0, 0, 261, 419, 596, 597, 259, 659, - 230, 629, 222, 1307, 628, 412, 591, 602, 398, 386, - 221, 600, 396, 385, 337, 358, 359, 283, 310, 452, - 378, 453, 309, 311, 408, 407, 409, 209, 615, 633, - 0, 210, 0, 505, 618, 660, 457, 214, 236, 237, - 239, 1323, 282, 286, 294, 297, 306, 307, 316, 370, - 423, 451, 447, 456, 1414, 585, 609, 623, 635, 641, - 642, 644, 645, 646, 647, 648, 651, 649, 411, 314, - 501, 336, 376, 1403, 1446, 429, 478, 242, 613, 502, - 201, 1317, 1322, 1315, 0, 257, 258, 1385, 581, 1318, - 1316, 1374, 1375, 1319, 1437, 1438, 1439, 1424, 661, 662, - 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, - 673, 674, 675, 676, 677, 678, 656, 514, 520, 515, - 516, 517, 518, 519, 0, 521, 1407, 1311, 0, 1320, - 1321, 402, 1416, 598, 599, 679, 387, 492, 610, 338, - 352, 355, 344, 364, 0, 365, 340, 341, 346, 349, - 350, 351, 356, 357, 361, 367, 251, 212, 394, 403, - 584, 315, 218, 219, 220, 530, 531, 532, 533, 626, - 627, 631, 207, 468, 469, 470, 471, 295, 621, 312, - 474, 473, 334, 335, 382, 454, 546, 548, 559, 563, - 565, 567, 573, 576, 547, 549, 560, 564, 566, 568, - 574, 577, 536, 538, 540, 542, 555, 554, 551, 579, - 580, 557, 562, 541, 553, 558, 571, 578, 575, 535, - 539, 543, 552, 570, 569, 550, 561, 572, 556, 544, - 537, 545, 1378, 198, 223, 371, 1442, 460, 291, 657, - 625, 490, 620, 208, 225, 1314, 265, 1326, 1334, 0, - 1340, 1348, 1349, 1362, 1365, 1366, 1367, 1368, 1386, 1387, - 1389, 1397, 1399, 1402, 1404, 1411, 1425, 1445, 200, 202, - 211, 224, 234, 238, 245, 264, 279, 281, 288, 301, - 313, 321, 322, 325, 331, 383, 390, 391, 392, 393, - 413, 414, 415, 418, 421, 422, 425, 427, 428, 431, - 436, 440, 441, 442, 444, 446, 448, 461, 466, 480, - 481, 482, 483, 484, 487, 488, 494, 495, 496, 497, - 498, 506, 507, 522, 593, 595, 612, 632, 639, 486, - 388, 434, 458, 586, 304, 305, 449, 450, 317, 318, - 653, 654, 303, 607, 640, 604, 652, 634, 443, 381, - 1377, 1383, 384, 284, 308, 323, 1392, 624, 508, 229, - 472, 293, 253, 1410, 1412, 213, 248, 232, 262, 277, - 280, 327, 395, 404, 433, 439, 299, 274, 246, 465, - 243, 491, 525, 526, 527, 529, 399, 269, 438, 1373, - 1401, 379, 582, 583, 319, 400, 0, 0, 0, 0, - 0, 0, 1431, 1415, 534, 0, 1357, 1434, 1325, 1344, - 1444, 1347, 1350, 1394, 1303, 1372, 420, 1341, 1329, 1298, - 1336, 1299, 1327, 1359, 273, 1324, 1417, 1376, 1433, 369, - 270, 1305, 1296, 206, 511, 1330, 435, 1346, 205, 1396, - 493, 255, 380, 377, 590, 285, 276, 272, 252, 320, - 389, 432, 524, 426, 1440, 373, 1382, 0, 503, 405, - 0, 0, 0, 1421, 1420, 1351, 1361, 1423, 1370, 1408, - 1356, 1395, 1313, 1381, 1435, 1342, 1391, 1436, 326, 250, - 328, 204, 417, 504, 289, 0, 0, 0, 0, 0, - 513, 731, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 240, 0, 0, 247, 0, 0, 0, 354, 363, - 362, 342, 343, 345, 347, 353, 360, 366, 339, 348, - 1338, 1388, 616, 1430, 1339, 1390, 268, 324, 275, 267, - 587, 1441, 1422, 1302, 1369, 1429, 1364, 603, 0, 0, - 231, 1432, 1363, 0, 1393, 0, 1447, 1297, 1384, 0, - 1300, 1304, 1443, 1427, 1333, 278, 0, 0, 0, 0, - 0, 0, 0, 1360, 1371, 1405, 1409, 1354, 0, 0, - 0, 0, 0, 0, 0, 0, 1331, 0, 1380, 0, - 0, 0, 1309, 1301, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1358, 0, 0, 0, - 0, 1312, 0, 1332, 1406, 0, 1295, 300, 1306, 406, - 260, 0, 459, 1413, 1426, 1355, 636, 1428, 1353, 1352, - 1400, 1310, 1419, 1345, 368, 1308, 333, 199, 227, 0, - 1343, 416, 467, 479, 1418, 1328, 1337, 256, 1335, 477, - 430, 611, 235, 287, 464, 437, 475, 445, 290, 1379, - 1398, 476, 375, 592, 455, 608, 637, 638, 266, 410, - 622, 528, 630, 655, 228, 263, 424, 512, 614, 500, - 401, 588, 589, 332, 499, 298, 203, 372, 643, 226, - 485, 374, 244, 233, 594, 619, 302, 254, 292, 462, - 650, 215, 523, 605, 241, 489, 0, 0, 658, 249, - 510, 617, 606, 217, 601, 509, 397, 329, 330, 216, - 0, 463, 271, 296, 0, 0, 261, 419, 596, 597, - 259, 659, 230, 629, 222, 1307, 628, 412, 591, 602, - 398, 386, 221, 600, 396, 385, 337, 358, 359, 283, - 310, 452, 378, 453, 309, 311, 408, 407, 409, 209, - 615, 633, 0, 210, 0, 505, 618, 660, 457, 214, - 236, 237, 239, 1323, 282, 286, 294, 297, 306, 307, - 316, 370, 423, 451, 447, 456, 1414, 585, 609, 623, - 635, 641, 642, 644, 645, 646, 647, 648, 651, 649, - 411, 314, 501, 336, 376, 1403, 1446, 429, 478, 242, - 613, 502, 201, 1317, 1322, 1315, 0, 257, 258, 1385, - 581, 1318, 1316, 1374, 1375, 1319, 1437, 1438, 1439, 1424, - 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, - 671, 672, 673, 674, 675, 676, 677, 678, 656, 514, - 520, 515, 516, 517, 518, 519, 0, 521, 1407, 1311, - 0, 1320, 1321, 402, 1416, 598, 599, 679, 387, 492, - 610, 338, 352, 355, 344, 364, 0, 365, 340, 341, - 346, 349, 350, 351, 356, 357, 361, 367, 251, 212, - 394, 403, 584, 315, 218, 219, 220, 530, 531, 532, - 533, 626, 627, 631, 207, 468, 469, 470, 471, 295, - 621, 312, 474, 473, 334, 335, 382, 454, 546, 548, - 559, 563, 565, 567, 573, 576, 547, 549, 560, 564, - 566, 568, 574, 577, 536, 538, 540, 542, 555, 554, - 551, 579, 580, 557, 562, 541, 553, 558, 571, 578, - 575, 535, 539, 543, 552, 570, 569, 550, 561, 572, - 556, 544, 537, 545, 1378, 198, 223, 371, 1442, 460, - 291, 657, 625, 490, 620, 208, 225, 1314, 265, 1326, - 1334, 0, 1340, 1348, 1349, 1362, 1365, 1366, 1367, 1368, - 1386, 1387, 1389, 1397, 1399, 1402, 1404, 1411, 1425, 1445, - 200, 202, 211, 224, 234, 238, 245, 264, 279, 281, - 288, 301, 313, 321, 322, 325, 331, 383, 390, 391, - 392, 393, 413, 414, 415, 418, 421, 422, 425, 427, - 428, 431, 436, 440, 441, 442, 444, 446, 448, 461, - 466, 480, 481, 482, 483, 484, 487, 488, 494, 495, - 496, 497, 498, 506, 507, 522, 593, 595, 612, 632, - 639, 486, 388, 434, 458, 586, 304, 305, 449, 450, - 317, 318, 653, 654, 303, 607, 640, 604, 652, 634, - 443, 381, 1377, 1383, 384, 284, 308, 323, 1392, 624, - 508, 229, 472, 293, 253, 1410, 1412, 213, 248, 232, - 262, 277, 280, 327, 395, 404, 433, 439, 299, 274, - 246, 465, 243, 491, 525, 526, 527, 529, 399, 269, - 438, 1373, 1401, 379, 582, 583, 319, 400, 0, 0, - 0, 0, 0, 0, 1431, 1415, 534, 0, 1357, 1434, - 1325, 1344, 1444, 1347, 1350, 1394, 1303, 1372, 420, 1341, - 1329, 1298, 1336, 1299, 1327, 1359, 273, 1324, 1417, 1376, - 1433, 369, 270, 1305, 1296, 206, 511, 1330, 435, 1346, - 205, 1396, 493, 255, 380, 377, 590, 285, 276, 272, - 252, 320, 389, 432, 524, 426, 1440, 373, 1382, 0, - 503, 405, 0, 0, 0, 1421, 1420, 1351, 1361, 1423, - 1370, 1408, 1356, 1395, 1313, 1381, 1435, 1342, 1391, 1436, - 326, 250, 328, 204, 417, 504, 289, 0, 0, 0, - 0, 0, 513, 966, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 240, 0, 0, 247, 0, 0, 0, - 354, 363, 362, 342, 343, 345, 347, 353, 360, 366, - 339, 348, 1338, 1388, 616, 1430, 1339, 1390, 268, 324, - 275, 267, 587, 1441, 1422, 1302, 1369, 1429, 1364, 603, - 0, 0, 231, 1432, 1363, 0, 1393, 0, 1447, 1297, - 1384, 0, 1300, 1304, 1443, 1427, 1333, 278, 0, 0, - 0, 0, 0, 0, 0, 1360, 1371, 1405, 1409, 1354, - 0, 0, 0, 0, 0, 0, 0, 0, 1331, 0, - 1380, 0, 0, 0, 1309, 1301, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1358, 0, - 0, 0, 0, 1312, 0, 1332, 1406, 0, 1295, 300, - 1306, 406, 260, 0, 459, 1413, 1426, 1355, 636, 1428, - 1353, 1352, 1400, 1310, 1419, 1345, 368, 1308, 333, 199, - 227, 0, 1343, 416, 467, 479, 1418, 1328, 1337, 256, - 1335, 477, 430, 611, 235, 287, 464, 437, 475, 445, - 290, 1379, 1398, 476, 375, 592, 455, 608, 637, 638, - 266, 410, 622, 528, 630, 655, 228, 263, 424, 512, - 614, 500, 401, 588, 589, 332, 499, 298, 203, 372, - 643, 226, 485, 374, 244, 233, 594, 619, 302, 254, - 292, 462, 650, 215, 523, 605, 241, 489, 0, 0, - 658, 249, 510, 617, 606, 217, 601, 509, 397, 329, - 330, 216, 0, 463, 271, 296, 0, 0, 261, 419, - 596, 597, 259, 659, 230, 629, 222, 1307, 628, 412, - 591, 602, 398, 386, 221, 600, 396, 385, 337, 358, - 359, 283, 310, 452, 378, 453, 309, 311, 408, 407, - 409, 209, 615, 633, 0, 210, 0, 505, 618, 660, - 457, 214, 236, 237, 239, 1323, 282, 286, 294, 297, - 306, 307, 316, 370, 423, 451, 447, 456, 1414, 585, - 609, 623, 635, 641, 642, 644, 645, 646, 647, 648, - 651, 649, 411, 314, 501, 336, 376, 1403, 1446, 429, - 478, 242, 613, 502, 201, 1317, 1322, 1315, 0, 257, - 258, 1385, 581, 1318, 1316, 1374, 1375, 1319, 1437, 1438, - 1439, 1424, 661, 662, 663, 664, 665, 666, 667, 668, - 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, - 656, 514, 520, 515, 516, 517, 518, 519, 0, 521, - 1407, 1311, 0, 1320, 1321, 402, 1416, 598, 599, 679, - 387, 492, 610, 338, 352, 355, 344, 364, 0, 365, - 340, 341, 346, 349, 350, 351, 356, 357, 361, 367, - 251, 212, 394, 403, 584, 315, 218, 219, 220, 530, - 531, 532, 533, 626, 627, 631, 207, 468, 469, 470, - 471, 295, 621, 312, 474, 473, 334, 335, 382, 454, - 546, 548, 559, 563, 565, 567, 573, 576, 547, 549, - 560, 564, 566, 568, 574, 577, 536, 538, 540, 542, - 555, 554, 551, 579, 580, 557, 562, 541, 553, 558, - 571, 578, 575, 535, 539, 543, 552, 570, 569, 550, - 561, 572, 556, 544, 537, 545, 1378, 198, 223, 371, - 1442, 460, 291, 657, 625, 490, 620, 208, 225, 1314, - 265, 1326, 1334, 0, 1340, 1348, 1349, 1362, 1365, 1366, - 1367, 1368, 1386, 1387, 1389, 1397, 1399, 1402, 1404, 1411, - 1425, 1445, 200, 202, 211, 224, 234, 238, 245, 264, - 279, 281, 288, 301, 313, 321, 322, 325, 331, 383, - 390, 391, 392, 393, 413, 414, 415, 418, 421, 422, - 425, 427, 428, 431, 436, 440, 441, 442, 444, 446, - 448, 461, 466, 480, 481, 482, 483, 484, 487, 488, - 494, 495, 496, 497, 498, 506, 507, 522, 593, 595, - 612, 632, 639, 486, 388, 434, 458, 586, 304, 305, - 449, 450, 317, 318, 653, 654, 303, 607, 640, 604, - 652, 634, 443, 381, 1377, 1383, 384, 284, 308, 323, - 1392, 624, 508, 229, 472, 293, 253, 1410, 1412, 213, - 248, 232, 262, 277, 280, 327, 395, 404, 433, 439, - 299, 274, 246, 465, 243, 491, 525, 526, 527, 529, - 399, 269, 438, 1373, 1401, 379, 582, 583, 319, 400, - 0, 0, 0, 0, 0, 0, 0, 0, 534, 0, - 784, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 420, 0, 0, 0, 771, 0, 0, 0, 273, 776, - 0, 0, 0, 369, 270, 0, 0, 206, 511, 0, - 435, 0, 205, 0, 493, 255, 380, 377, 590, 285, - 276, 272, 252, 320, 389, 432, 524, 426, 783, 373, - 0, 0, 503, 405, 0, 0, 0, 0, 0, 0, - 0, 0, 778, 779, 0, 0, 0, 0, 0, 0, - 0, 0, 326, 250, 328, 204, 417, 504, 289, 0, - 95, 0, 0, 1032, 513, 966, 755, 932, 970, 1033, - 984, 985, 986, 971, 0, 240, 972, 973, 247, 974, - 0, 931, 814, 816, 815, 881, 882, 883, 884, 885, - 886, 887, 817, 818, 812, 979, 616, 987, 988, 0, - 268, 324, 275, 267, 587, 0, 0, 2248, 2249, 2250, - 0, 603, 0, 0, 231, 0, 0, 0, 0, 0, - 0, 0, 751, 768, 0, 782, 0, 0, 0, 278, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 765, 766, 0, 0, - 0, 0, 926, 0, 767, 0, 0, 775, 989, 990, - 991, 992, 993, 994, 995, 996, 997, 998, 999, 1000, - 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, - 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018, 1019, 1020, - 1021, 1022, 1023, 1024, 1025, 1026, 1027, 1028, 1029, 1030, - 777, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 300, 0, 406, 260, 0, 459, 925, 0, 0, - 636, 0, 0, 923, 0, 0, 0, 0, 368, 0, - 333, 199, 227, 0, 0, 416, 467, 479, 0, 0, - 0, 976, 0, 477, 430, 611, 235, 287, 464, 437, - 475, 445, 290, 0, 0, 476, 375, 592, 455, 608, - 637, 638, 266, 410, 622, 528, 630, 655, 228, 263, - 424, 512, 614, 500, 401, 588, 589, 332, 499, 298, - 203, 372, 643, 226, 485, 374, 244, 233, 594, 619, - 302, 254, 292, 462, 650, 215, 523, 605, 241, 489, - 0, 0, 658, 249, 510, 617, 606, 217, 601, 509, - 397, 329, 330, 216, 0, 463, 271, 296, 0, 0, - 261, 419, 977, 978, 259, 659, 822, 629, 222, 0, - 628, 412, 591, 602, 398, 386, 221, 600, 396, 385, - 337, 830, 831, 283, 310, 907, 906, 905, 309, 311, - 903, 904, 902, 209, 615, 633, 0, 210, 0, 505, - 618, 660, 457, 214, 236, 237, 239, 0, 282, 286, - 294, 297, 306, 307, 316, 370, 423, 451, 447, 456, - 0, 585, 609, 623, 635, 641, 642, 644, 645, 646, - 647, 648, 651, 649, 411, 314, 501, 336, 376, 0, - 0, 429, 478, 242, 613, 502, 913, 935, 924, 788, - 789, 914, 915, 939, 916, 791, 792, 936, 937, 785, - 786, 790, 938, 940, 661, 662, 663, 664, 665, 666, - 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, - 677, 678, 656, 514, 520, 515, 516, 517, 518, 519, - 0, 521, 927, 774, 773, 0, 780, 781, 0, 810, - 811, 813, 819, 820, 821, 832, 879, 880, 888, 890, - 891, 889, 892, 893, 894, 897, 898, 899, 900, 895, - 896, 901, 793, 797, 794, 795, 796, 808, 798, 799, - 800, 801, 802, 803, 804, 805, 806, 807, 809, 950, - 951, 952, 953, 954, 955, 825, 829, 828, 826, 827, - 823, 824, 851, 850, 852, 853, 854, 855, 856, 857, - 859, 858, 860, 861, 862, 863, 864, 865, 833, 834, - 837, 838, 836, 835, 839, 848, 849, 840, 841, 842, - 843, 844, 845, 847, 846, 866, 867, 868, 869, 870, - 872, 871, 875, 876, 874, 873, 878, 877, 772, 198, - 223, 371, 0, 460, 291, 657, 625, 490, 620, 208, - 225, 941, 265, 942, 0, 0, 946, 0, 0, 0, - 948, 947, 0, 949, 911, 910, 0, 0, 943, 944, - 0, 945, 0, 0, 200, 202, 211, 224, 234, 238, - 245, 264, 279, 281, 288, 301, 313, 321, 322, 325, - 331, 383, 390, 391, 392, 393, 413, 414, 415, 418, - 421, 422, 425, 427, 428, 431, 436, 440, 441, 442, - 444, 446, 448, 461, 466, 480, 481, 482, 483, 484, - 487, 488, 494, 495, 496, 497, 498, 506, 507, 522, - 593, 595, 612, 632, 639, 486, 388, 434, 458, 586, - 956, 957, 958, 959, 960, 961, 962, 963, 303, 607, - 640, 604, 652, 634, 443, 381, 0, 0, 384, 284, - 308, 323, 0, 624, 508, 229, 472, 293, 253, 1031, - 0, 213, 248, 232, 262, 277, 280, 327, 395, 404, - 433, 439, 299, 274, 246, 465, 243, 491, 525, 526, - 527, 529, 399, 269, 438, 400, 0, 379, 582, 583, - 319, 0, 0, 0, 534, 0, 784, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 420, 0, 0, 0, - 771, 0, 0, 0, 273, 776, 0, 0, 0, 369, - 270, 0, 0, 206, 511, 0, 435, 0, 205, 0, - 493, 255, 380, 377, 590, 285, 276, 272, 252, 320, - 389, 432, 524, 426, 783, 373, 0, 0, 503, 405, - 0, 0, 0, 0, 0, 0, 0, 0, 778, 779, - 0, 0, 0, 0, 0, 0, 2457, 0, 326, 250, - 328, 204, 417, 504, 289, 0, 95, 0, 0, 1032, - 513, 966, 755, 932, 970, 1033, 984, 985, 986, 971, - 0, 240, 972, 973, 247, 974, 0, 931, 814, 816, - 815, 881, 882, 883, 884, 885, 886, 887, 817, 818, - 812, 979, 616, 987, 988, 2458, 268, 324, 275, 267, - 587, 0, 0, 0, 0, 0, 0, 603, 0, 0, - 231, 0, 0, 0, 0, 0, 0, 0, 751, 768, - 0, 782, 0, 0, 0, 278, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 765, 766, 0, 0, 0, 0, 926, 0, - 767, 0, 0, 775, 989, 990, 991, 992, 993, 994, - 995, 996, 997, 998, 999, 1000, 1001, 1002, 1003, 1004, - 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014, - 1015, 1016, 1017, 1018, 1019, 1020, 1021, 1022, 1023, 1024, - 1025, 1026, 1027, 1028, 1029, 1030, 777, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 300, 0, 406, - 260, 0, 459, 925, 0, 0, 636, 0, 0, 923, - 0, 0, 0, 0, 368, 0, 333, 199, 227, 0, - 0, 416, 467, 479, 0, 0, 0, 976, 0, 477, - 430, 611, 235, 287, 464, 437, 475, 445, 290, 0, - 0, 476, 375, 592, 455, 608, 637, 638, 266, 410, - 622, 528, 630, 655, 228, 263, 424, 512, 614, 500, - 401, 588, 589, 332, 499, 298, 203, 372, 643, 226, - 485, 374, 244, 233, 594, 619, 302, 254, 292, 462, - 650, 215, 523, 605, 241, 489, 0, 0, 658, 249, - 510, 617, 606, 217, 601, 509, 397, 329, 330, 216, - 0, 463, 271, 296, 0, 0, 261, 419, 977, 978, - 259, 659, 822, 629, 222, 0, 628, 412, 591, 602, - 398, 386, 221, 600, 396, 385, 337, 830, 831, 283, - 310, 907, 906, 905, 309, 311, 903, 904, 902, 209, - 615, 633, 0, 210, 0, 505, 618, 660, 457, 214, - 236, 237, 239, 0, 282, 286, 294, 297, 306, 307, - 316, 370, 423, 451, 447, 456, 0, 585, 609, 623, - 635, 641, 642, 644, 645, 646, 647, 648, 651, 649, - 411, 314, 501, 336, 376, 0, 0, 429, 478, 242, - 613, 502, 913, 935, 924, 788, 789, 914, 915, 939, - 916, 791, 792, 936, 937, 785, 786, 790, 938, 940, - 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, - 671, 672, 673, 674, 675, 676, 677, 678, 656, 514, - 520, 515, 516, 517, 518, 519, 0, 521, 927, 774, - 773, 0, 780, 781, 0, 810, 811, 813, 819, 820, - 821, 832, 879, 880, 888, 890, 891, 889, 892, 893, - 894, 897, 898, 899, 900, 895, 896, 901, 793, 797, - 794, 795, 796, 808, 798, 799, 800, 801, 802, 803, - 804, 805, 806, 807, 809, 950, 951, 952, 953, 954, - 955, 825, 829, 828, 826, 827, 823, 824, 851, 850, - 852, 853, 854, 855, 856, 857, 859, 858, 860, 861, - 862, 863, 864, 865, 833, 834, 837, 838, 836, 835, - 839, 848, 849, 840, 841, 842, 843, 844, 845, 847, - 846, 866, 867, 868, 869, 870, 872, 871, 875, 876, - 874, 873, 878, 877, 772, 198, 223, 371, 0, 460, - 291, 657, 625, 490, 620, 208, 225, 941, 265, 942, - 0, 0, 946, 0, 0, 0, 948, 947, 0, 949, - 911, 910, 0, 0, 943, 944, 0, 945, 0, 0, - 200, 202, 211, 224, 234, 238, 245, 264, 279, 281, - 288, 301, 313, 321, 322, 325, 331, 383, 390, 391, - 392, 393, 413, 414, 415, 418, 421, 422, 425, 427, - 428, 431, 436, 440, 441, 442, 444, 446, 448, 461, - 466, 480, 481, 482, 483, 484, 487, 488, 494, 495, - 496, 497, 498, 506, 507, 522, 593, 595, 612, 632, - 639, 486, 388, 434, 458, 586, 956, 957, 958, 959, - 960, 961, 962, 963, 303, 607, 640, 604, 652, 634, - 443, 381, 0, 0, 384, 284, 308, 323, 0, 624, - 508, 229, 472, 293, 253, 1031, 0, 213, 248, 232, - 262, 277, 280, 327, 395, 404, 433, 439, 299, 274, - 246, 465, 243, 491, 525, 526, 527, 529, 399, 269, - 438, 400, 0, 379, 582, 583, 319, 0, 0, 86, - 534, 0, 784, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 420, 0, 0, 0, 771, 0, 0, 0, - 273, 776, 0, 0, 0, 369, 270, 0, 0, 206, - 511, 0, 435, 0, 205, 0, 493, 255, 380, 377, - 590, 285, 276, 272, 252, 320, 389, 432, 524, 426, - 1727, 373, 0, 0, 503, 405, 0, 0, 0, 0, - 0, 0, 0, 0, 778, 779, 0, 0, 0, 0, - 0, 0, 0, 0, 326, 250, 328, 204, 417, 504, - 289, 0, 95, 0, 0, 1032, 513, 966, 755, 932, - 970, 1033, 984, 985, 986, 971, 0, 240, 972, 973, - 247, 974, 0, 931, 814, 816, 815, 881, 882, 883, - 884, 885, 886, 887, 817, 818, 812, 979, 616, 987, - 988, 0, 268, 324, 275, 267, 587, 0, 0, 0, - 0, 0, 0, 603, 0, 0, 231, 0, 0, 0, - 0, 0, 0, 0, 751, 768, 0, 782, 0, 0, - 0, 278, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 765, 766, - 0, 0, 0, 0, 926, 0, 767, 0, 0, 775, - 989, 990, 991, 992, 993, 994, 995, 996, 997, 998, - 999, 1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, - 1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018, - 1019, 1020, 1021, 1022, 1023, 1024, 1025, 1026, 1027, 1028, - 1029, 1030, 777, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 300, 0, 406, 260, 0, 459, 925, - 0, 0, 636, 0, 0, 923, 0, 0, 0, 0, - 368, 0, 333, 199, 227, 0, 0, 416, 467, 479, - 0, 0, 0, 976, 0, 477, 430, 611, 235, 287, - 464, 437, 475, 445, 290, 0, 0, 476, 375, 592, - 455, 608, 637, 638, 266, 410, 622, 528, 630, 655, - 228, 263, 424, 512, 614, 500, 401, 588, 589, 332, - 499, 298, 203, 372, 643, 226, 485, 374, 244, 233, - 594, 619, 302, 254, 292, 462, 650, 215, 523, 605, - 241, 489, 0, 0, 658, 249, 510, 617, 606, 217, - 601, 509, 397, 329, 330, 216, 0, 463, 271, 296, - 0, 0, 261, 419, 977, 978, 259, 659, 822, 629, - 222, 0, 628, 412, 591, 602, 398, 386, 221, 600, - 396, 385, 337, 830, 831, 283, 310, 907, 906, 905, - 309, 311, 903, 904, 902, 209, 615, 633, 0, 210, - 0, 505, 618, 660, 457, 214, 236, 237, 239, 0, - 282, 286, 294, 297, 306, 307, 316, 370, 423, 451, - 447, 456, 0, 585, 609, 623, 635, 641, 642, 644, - 645, 646, 647, 648, 651, 649, 411, 314, 501, 336, - 376, 0, 0, 429, 478, 242, 613, 502, 913, 935, - 924, 788, 789, 914, 915, 939, 916, 791, 792, 936, - 937, 785, 786, 790, 938, 940, 661, 662, 663, 664, - 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, - 675, 676, 677, 678, 656, 514, 520, 515, 516, 517, - 518, 519, 0, 521, 927, 774, 773, 0, 780, 781, - 0, 810, 811, 813, 819, 820, 821, 832, 879, 880, - 888, 890, 891, 889, 892, 893, 894, 897, 898, 899, - 900, 895, 896, 901, 793, 797, 794, 795, 796, 808, - 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, - 809, 950, 951, 952, 953, 954, 955, 825, 829, 828, - 826, 827, 823, 824, 851, 850, 852, 853, 854, 855, - 856, 857, 859, 858, 860, 861, 862, 863, 864, 865, - 833, 834, 837, 838, 836, 835, 839, 848, 849, 840, - 841, 842, 843, 844, 845, 847, 846, 866, 867, 868, - 869, 870, 872, 871, 875, 876, 874, 873, 878, 877, - 772, 198, 223, 371, 94, 460, 291, 657, 625, 490, - 620, 208, 225, 941, 265, 942, 0, 0, 946, 0, - 0, 0, 948, 947, 0, 949, 911, 910, 0, 0, - 943, 944, 0, 945, 0, 0, 200, 202, 211, 224, - 234, 238, 245, 264, 279, 281, 288, 301, 313, 321, - 322, 325, 331, 383, 390, 391, 392, 393, 413, 414, - 415, 418, 421, 422, 425, 427, 428, 431, 436, 440, - 441, 442, 444, 446, 448, 461, 466, 480, 481, 482, - 483, 484, 487, 488, 494, 495, 496, 497, 498, 506, - 507, 522, 593, 595, 612, 632, 639, 486, 388, 434, - 458, 586, 956, 957, 958, 959, 960, 961, 962, 963, - 303, 607, 640, 604, 652, 634, 443, 381, 0, 0, - 384, 284, 308, 323, 0, 624, 508, 229, 472, 293, - 253, 1031, 0, 213, 248, 232, 262, 277, 280, 327, - 395, 404, 433, 439, 299, 274, 246, 465, 243, 491, - 525, 526, 527, 529, 399, 269, 438, 400, 0, 379, - 582, 583, 319, 0, 0, 0, 534, 0, 784, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 420, 0, - 0, 0, 771, 0, 0, 0, 273, 776, 0, 0, - 0, 369, 270, 0, 0, 206, 511, 0, 435, 0, - 205, 0, 493, 255, 380, 377, 590, 285, 276, 272, - 252, 320, 389, 432, 524, 426, 783, 373, 0, 0, - 503, 405, 0, 0, 0, 0, 0, 0, 0, 0, - 778, 779, 0, 0, 0, 0, 0, 0, 0, 0, - 326, 250, 328, 204, 417, 504, 289, 0, 95, 0, - 0, 1032, 513, 966, 755, 932, 970, 1033, 984, 985, - 986, 971, 0, 240, 972, 973, 247, 974, 0, 931, - 814, 816, 815, 881, 882, 883, 884, 885, 886, 887, - 817, 818, 812, 979, 616, 987, 988, 0, 268, 324, - 275, 267, 587, 0, 0, 0, 0, 0, 0, 603, - 0, 0, 231, 0, 0, 0, 0, 0, 0, 0, - 751, 768, 0, 782, 0, 0, 0, 278, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 765, 766, 0, 0, 0, 0, - 926, 0, 767, 0, 0, 775, 989, 990, 991, 992, - 993, 994, 995, 996, 997, 998, 999, 1000, 1001, 1002, - 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012, - 1013, 1014, 1015, 1016, 1017, 1018, 1019, 1020, 1021, 1022, - 1023, 1024, 1025, 1026, 1027, 1028, 1029, 1030, 777, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 300, - 0, 406, 260, 0, 459, 925, 0, 0, 636, 0, - 0, 923, 0, 0, 0, 0, 368, 0, 333, 199, - 227, 0, 0, 416, 467, 479, 0, 0, 0, 976, - 0, 477, 430, 611, 235, 287, 464, 437, 475, 445, - 290, 4117, 0, 476, 375, 592, 455, 608, 637, 638, - 266, 410, 622, 528, 630, 655, 228, 263, 424, 512, - 614, 500, 401, 588, 589, 332, 499, 298, 203, 372, - 643, 226, 485, 374, 244, 233, 594, 619, 302, 254, - 292, 462, 650, 215, 523, 605, 241, 489, 0, 0, - 658, 249, 510, 617, 606, 217, 601, 509, 397, 329, - 330, 216, 0, 463, 271, 296, 0, 0, 261, 419, - 977, 978, 259, 659, 822, 629, 222, 0, 628, 412, - 591, 602, 398, 386, 221, 600, 396, 385, 337, 830, - 831, 283, 310, 907, 906, 905, 309, 311, 903, 904, - 902, 209, 615, 633, 0, 210, 0, 505, 618, 660, - 457, 214, 236, 237, 239, 0, 282, 286, 294, 297, - 306, 307, 316, 370, 423, 451, 447, 456, 0, 585, - 609, 623, 635, 641, 642, 644, 645, 646, 647, 648, - 651, 649, 411, 314, 501, 336, 376, 0, 0, 429, - 478, 242, 613, 502, 913, 935, 924, 788, 789, 914, - 915, 939, 916, 791, 792, 936, 937, 785, 786, 790, - 938, 940, 661, 662, 663, 664, 665, 666, 667, 668, - 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, - 656, 514, 520, 515, 516, 517, 518, 519, 0, 521, - 927, 774, 773, 0, 780, 781, 0, 810, 811, 813, - 819, 820, 821, 832, 879, 880, 888, 890, 891, 889, - 892, 893, 894, 897, 898, 899, 900, 895, 896, 901, - 793, 797, 794, 795, 796, 808, 798, 799, 800, 801, - 802, 803, 804, 805, 806, 807, 809, 950, 951, 952, - 953, 954, 955, 825, 829, 828, 826, 827, 823, 824, - 851, 850, 852, 853, 854, 855, 856, 857, 859, 858, - 860, 861, 862, 863, 864, 865, 833, 834, 837, 838, - 836, 835, 839, 848, 849, 840, 841, 842, 843, 844, - 845, 847, 846, 866, 867, 868, 869, 870, 872, 871, - 875, 876, 874, 873, 878, 877, 772, 198, 223, 371, - 0, 460, 291, 657, 625, 490, 620, 208, 225, 941, - 265, 942, 0, 0, 946, 0, 0, 0, 948, 947, - 0, 949, 911, 910, 0, 0, 943, 944, 0, 945, - 0, 0, 200, 202, 211, 224, 234, 238, 245, 264, - 279, 281, 288, 301, 313, 321, 322, 325, 331, 383, - 390, 391, 392, 393, 413, 414, 415, 418, 421, 422, - 425, 427, 428, 431, 436, 440, 441, 442, 444, 446, - 448, 461, 466, 480, 481, 482, 483, 484, 487, 488, - 494, 495, 496, 497, 498, 506, 507, 522, 593, 595, - 612, 632, 639, 486, 388, 434, 458, 586, 956, 957, - 958, 959, 960, 961, 962, 963, 303, 607, 640, 604, - 652, 634, 443, 381, 0, 0, 384, 284, 308, 323, - 0, 624, 508, 229, 472, 293, 253, 1031, 0, 213, - 248, 232, 262, 277, 280, 327, 395, 404, 433, 439, - 299, 274, 246, 465, 243, 491, 525, 526, 527, 529, - 399, 269, 438, 400, 0, 379, 582, 583, 319, 0, - 0, 0, 534, 0, 784, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 420, 0, 0, 0, 771, 0, - 0, 0, 273, 776, 0, 0, 0, 369, 270, 0, - 0, 206, 511, 0, 435, 0, 205, 0, 493, 255, - 380, 377, 590, 285, 276, 272, 252, 320, 389, 432, - 524, 426, 783, 373, 0, 0, 503, 405, 0, 0, - 0, 0, 0, 0, 0, 0, 778, 779, 0, 0, - 0, 0, 0, 0, 0, 0, 326, 250, 328, 204, - 417, 504, 289, 0, 95, 0, 1764, 1032, 513, 966, - 755, 932, 970, 1033, 984, 985, 986, 971, 0, 240, - 972, 973, 247, 974, 0, 931, 814, 816, 815, 881, - 882, 883, 884, 885, 886, 887, 817, 818, 812, 979, - 616, 987, 988, 0, 268, 324, 275, 267, 587, 0, - 0, 0, 0, 0, 0, 603, 0, 0, 231, 0, - 0, 0, 0, 0, 0, 0, 751, 768, 0, 782, - 0, 0, 0, 278, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 765, 766, 0, 0, 0, 0, 926, 0, 767, 0, - 0, 775, 989, 990, 991, 992, 993, 994, 995, 996, - 997, 998, 999, 1000, 1001, 1002, 1003, 1004, 1005, 1006, - 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016, - 1017, 1018, 1019, 1020, 1021, 1022, 1023, 1024, 1025, 1026, - 1027, 1028, 1029, 1030, 777, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 300, 0, 406, 260, 0, - 459, 925, 0, 0, 636, 0, 0, 923, 0, 0, - 0, 0, 368, 0, 333, 199, 227, 0, 0, 416, - 467, 479, 0, 0, 0, 976, 0, 477, 430, 611, - 235, 287, 464, 437, 475, 445, 290, 0, 0, 476, - 375, 592, 455, 608, 637, 638, 266, 410, 622, 528, - 630, 655, 228, 263, 424, 512, 614, 500, 401, 588, - 589, 332, 499, 298, 203, 372, 643, 226, 485, 374, - 244, 233, 594, 619, 302, 254, 292, 462, 650, 215, - 523, 605, 241, 489, 0, 0, 658, 249, 510, 617, - 606, 217, 601, 509, 397, 329, 330, 216, 0, 463, - 271, 296, 0, 0, 261, 419, 977, 978, 259, 659, - 822, 629, 222, 0, 628, 412, 591, 602, 398, 386, - 221, 600, 396, 385, 337, 830, 831, 283, 310, 907, - 906, 905, 309, 311, 903, 904, 902, 209, 615, 633, - 0, 210, 0, 505, 618, 660, 457, 214, 236, 237, - 239, 0, 282, 286, 294, 297, 306, 307, 316, 370, - 423, 451, 447, 456, 0, 585, 609, 623, 635, 641, - 642, 644, 645, 646, 647, 648, 651, 649, 411, 314, - 501, 336, 376, 0, 0, 429, 478, 242, 613, 502, - 913, 935, 924, 788, 789, 914, 915, 939, 916, 791, - 792, 936, 937, 785, 786, 790, 938, 940, 661, 662, - 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, - 673, 674, 675, 676, 677, 678, 656, 514, 520, 515, - 516, 517, 518, 519, 0, 521, 927, 774, 773, 0, - 780, 781, 0, 810, 811, 813, 819, 820, 821, 832, - 879, 880, 888, 890, 891, 889, 892, 893, 894, 897, - 898, 899, 900, 895, 896, 901, 793, 797, 794, 795, - 796, 808, 798, 799, 800, 801, 802, 803, 804, 805, - 806, 807, 809, 950, 951, 952, 953, 954, 955, 825, - 829, 828, 826, 827, 823, 824, 851, 850, 852, 853, - 854, 855, 856, 857, 859, 858, 860, 861, 862, 863, - 864, 865, 833, 834, 837, 838, 836, 835, 839, 848, - 849, 840, 841, 842, 843, 844, 845, 847, 846, 866, - 867, 868, 869, 870, 872, 871, 875, 876, 874, 873, - 878, 877, 772, 198, 223, 371, 0, 460, 291, 657, - 625, 490, 620, 208, 225, 941, 265, 942, 0, 0, - 946, 0, 0, 0, 948, 947, 0, 949, 911, 910, - 0, 0, 943, 944, 0, 945, 0, 0, 200, 202, - 211, 224, 234, 238, 245, 264, 279, 281, 288, 301, - 313, 321, 322, 325, 331, 383, 390, 391, 392, 393, - 413, 414, 415, 418, 421, 422, 425, 427, 428, 431, - 436, 440, 441, 442, 444, 446, 448, 461, 466, 480, - 481, 482, 483, 484, 487, 488, 494, 495, 496, 497, - 498, 506, 507, 522, 593, 595, 612, 632, 639, 486, - 388, 434, 458, 586, 956, 957, 958, 959, 960, 961, - 962, 963, 303, 607, 640, 604, 652, 634, 443, 381, - 0, 0, 384, 284, 308, 323, 0, 624, 508, 229, - 472, 293, 253, 1031, 0, 213, 248, 232, 262, 277, - 280, 327, 395, 404, 433, 439, 299, 274, 246, 465, - 243, 491, 525, 526, 527, 529, 399, 269, 438, 400, - 0, 379, 582, 583, 319, 0, 0, 0, 534, 0, - 784, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 420, 0, 0, 0, 771, 0, 0, 0, 273, 776, - 0, 0, 0, 369, 270, 0, 0, 206, 511, 0, - 435, 0, 205, 0, 493, 255, 380, 377, 590, 285, - 276, 272, 252, 320, 389, 432, 524, 426, 783, 373, - 0, 0, 503, 405, 0, 0, 0, 0, 0, 0, - 0, 0, 778, 779, 0, 0, 0, 0, 0, 0, - 0, 0, 326, 250, 328, 204, 417, 504, 289, 0, - 95, 0, 0, 1032, 513, 966, 755, 932, 970, 1033, - 984, 985, 986, 971, 0, 240, 972, 973, 247, 974, - 0, 931, 814, 816, 815, 881, 882, 883, 884, 885, - 886, 887, 817, 818, 812, 979, 616, 987, 988, 0, - 268, 324, 275, 267, 587, 0, 0, 0, 0, 0, - 0, 603, 0, 0, 231, 0, 0, 0, 0, 0, - 0, 0, 751, 768, 0, 782, 0, 0, 0, 278, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 765, 766, 1079, 0, - 0, 0, 926, 0, 767, 0, 0, 775, 989, 990, - 991, 992, 993, 994, 995, 996, 997, 998, 999, 1000, - 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, - 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018, 1019, 1020, - 1021, 1022, 1023, 1024, 1025, 1026, 1027, 1028, 1029, 1030, - 777, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 300, 0, 406, 260, 0, 459, 925, 0, 0, - 636, 0, 0, 923, 0, 0, 0, 0, 368, 0, - 333, 199, 227, 0, 0, 416, 467, 479, 0, 0, - 0, 976, 0, 477, 430, 611, 235, 287, 464, 437, - 475, 445, 290, 0, 0, 476, 375, 592, 455, 608, - 637, 638, 266, 410, 622, 528, 630, 655, 228, 263, - 424, 512, 614, 500, 401, 588, 589, 332, 499, 298, - 203, 372, 643, 226, 485, 374, 244, 233, 594, 619, - 302, 254, 292, 462, 650, 215, 523, 605, 241, 489, - 0, 0, 658, 249, 510, 617, 606, 217, 601, 509, - 397, 329, 330, 216, 0, 463, 271, 296, 0, 0, - 261, 419, 977, 978, 259, 659, 822, 629, 222, 0, - 628, 412, 591, 602, 398, 386, 221, 600, 396, 385, - 337, 830, 831, 283, 310, 907, 906, 905, 309, 311, - 903, 904, 902, 209, 615, 633, 0, 210, 0, 505, - 618, 660, 457, 214, 236, 237, 239, 0, 282, 286, - 294, 297, 306, 307, 316, 370, 423, 451, 447, 456, - 0, 585, 609, 623, 635, 641, 642, 644, 645, 646, - 647, 648, 651, 649, 411, 314, 501, 336, 376, 0, - 0, 429, 478, 242, 613, 502, 913, 935, 924, 788, - 789, 914, 915, 939, 916, 791, 792, 936, 937, 785, - 786, 790, 938, 940, 661, 662, 663, 664, 665, 666, - 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, - 677, 678, 656, 514, 520, 515, 516, 517, 518, 519, - 0, 521, 927, 774, 773, 0, 780, 781, 0, 810, - 811, 813, 819, 820, 821, 832, 879, 880, 888, 890, - 891, 889, 892, 893, 894, 897, 898, 899, 900, 895, - 896, 901, 793, 797, 794, 795, 796, 808, 798, 799, - 800, 801, 802, 803, 804, 805, 806, 807, 809, 950, - 951, 952, 953, 954, 955, 825, 829, 828, 826, 827, - 823, 824, 851, 850, 852, 853, 854, 855, 856, 857, - 859, 858, 860, 861, 862, 863, 864, 865, 833, 834, - 837, 838, 836, 835, 839, 848, 849, 840, 841, 842, - 843, 844, 845, 847, 846, 866, 867, 868, 869, 870, - 872, 871, 875, 876, 874, 873, 878, 877, 772, 198, - 223, 371, 0, 460, 291, 657, 625, 490, 620, 208, - 225, 941, 265, 942, 0, 0, 946, 0, 0, 0, - 948, 947, 0, 949, 911, 910, 0, 0, 943, 944, - 0, 945, 0, 0, 200, 202, 211, 224, 234, 238, - 245, 264, 279, 281, 288, 301, 313, 321, 322, 325, - 331, 383, 390, 391, 392, 393, 413, 414, 415, 418, - 421, 422, 425, 427, 428, 431, 436, 440, 441, 442, - 444, 446, 448, 461, 466, 480, 481, 482, 483, 484, - 487, 488, 494, 495, 496, 497, 498, 506, 507, 522, - 593, 595, 612, 632, 639, 486, 388, 434, 458, 586, - 956, 957, 958, 959, 960, 961, 962, 963, 303, 607, - 640, 604, 652, 634, 443, 381, 0, 0, 384, 284, - 308, 323, 0, 624, 508, 229, 472, 293, 253, 1031, - 0, 213, 248, 232, 262, 277, 280, 327, 395, 404, - 433, 439, 299, 274, 246, 465, 243, 491, 525, 526, - 527, 529, 399, 269, 438, 400, 0, 379, 582, 583, - 319, 0, 0, 0, 534, 0, 784, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 420, 0, 0, 0, - 771, 0, 0, 0, 273, 776, 0, 0, 0, 369, - 270, 0, 0, 206, 511, 0, 435, 0, 205, 0, - 493, 255, 380, 377, 590, 285, 276, 272, 252, 320, - 389, 432, 524, 426, 783, 373, 0, 0, 503, 405, - 0, 0, 0, 0, 0, 0, 0, 0, 778, 779, - 0, 0, 0, 0, 0, 0, 0, 0, 326, 250, - 328, 204, 417, 504, 289, 0, 95, 0, 0, 1032, - 513, 966, 755, 932, 970, 1033, 984, 985, 986, 971, - 0, 240, 972, 973, 247, 974, 0, 931, 814, 816, - 815, 881, 882, 883, 884, 885, 886, 887, 817, 818, - 812, 979, 616, 987, 988, 0, 268, 324, 275, 267, - 587, 0, 0, 0, 0, 0, 0, 603, 0, 0, - 231, 0, 0, 0, 0, 0, 0, 0, 751, 768, - 0, 782, 0, 0, 0, 278, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 765, 766, 0, 0, 0, 0, 926, 0, - 767, 0, 0, 775, 989, 990, 991, 992, 993, 994, - 995, 996, 997, 998, 999, 1000, 1001, 1002, 1003, 1004, - 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014, - 1015, 1016, 1017, 1018, 1019, 1020, 1021, 1022, 1023, 1024, - 1025, 1026, 1027, 1028, 1029, 1030, 777, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 300, 0, 406, - 260, 0, 459, 925, 0, 0, 636, 0, 0, 923, - 0, 0, 0, 0, 368, 0, 333, 199, 227, 0, - 0, 416, 467, 479, 0, 0, 0, 976, 0, 477, - 430, 611, 235, 287, 464, 437, 475, 445, 290, 0, - 0, 476, 375, 592, 455, 608, 637, 638, 266, 410, - 622, 528, 630, 655, 228, 263, 424, 512, 614, 500, - 401, 588, 589, 332, 499, 298, 203, 372, 643, 226, - 485, 374, 244, 233, 594, 619, 302, 254, 292, 462, - 650, 215, 523, 605, 241, 489, 0, 0, 658, 249, - 510, 617, 606, 217, 601, 509, 397, 329, 330, 216, - 0, 463, 271, 296, 0, 0, 261, 419, 977, 978, - 259, 659, 822, 629, 222, 0, 628, 412, 591, 602, - 398, 386, 221, 600, 396, 385, 337, 830, 831, 283, - 310, 907, 906, 905, 309, 311, 903, 904, 902, 209, - 615, 633, 0, 210, 0, 505, 618, 660, 457, 214, - 236, 237, 239, 0, 282, 286, 294, 297, 306, 307, - 316, 370, 423, 451, 447, 456, 0, 585, 609, 623, - 635, 641, 642, 644, 645, 646, 647, 648, 651, 649, - 411, 314, 501, 336, 376, 0, 0, 429, 478, 242, - 613, 502, 913, 935, 924, 788, 789, 914, 915, 939, - 916, 791, 792, 936, 937, 785, 786, 790, 938, 940, - 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, - 671, 672, 673, 674, 675, 676, 677, 678, 656, 514, - 520, 515, 516, 517, 518, 519, 0, 521, 927, 774, - 773, 0, 780, 781, 0, 810, 811, 813, 819, 820, - 821, 832, 879, 880, 888, 890, 891, 889, 892, 893, - 894, 897, 898, 899, 900, 895, 896, 901, 793, 797, - 794, 795, 796, 808, 798, 799, 800, 801, 802, 803, - 804, 805, 806, 807, 809, 950, 951, 952, 953, 954, - 955, 825, 829, 828, 826, 827, 823, 824, 851, 850, - 852, 853, 854, 855, 856, 857, 859, 858, 860, 861, - 862, 863, 864, 865, 833, 834, 837, 838, 836, 835, - 839, 848, 849, 840, 841, 842, 843, 844, 845, 847, - 846, 866, 867, 868, 869, 870, 872, 871, 875, 876, - 874, 873, 878, 877, 772, 198, 223, 371, 0, 460, - 291, 657, 625, 490, 620, 208, 225, 941, 265, 942, - 0, 0, 946, 0, 0, 0, 948, 947, 0, 949, - 911, 910, 0, 0, 943, 944, 0, 945, 0, 0, - 200, 202, 211, 224, 234, 238, 245, 264, 279, 281, - 288, 301, 313, 321, 322, 325, 331, 383, 390, 391, - 392, 393, 413, 414, 415, 418, 421, 422, 425, 427, - 428, 431, 436, 440, 441, 442, 444, 446, 448, 461, - 466, 480, 481, 482, 483, 484, 487, 488, 494, 495, - 496, 497, 498, 506, 507, 522, 593, 595, 612, 632, - 639, 486, 388, 434, 458, 586, 956, 957, 958, 959, - 960, 961, 962, 963, 303, 607, 640, 604, 652, 634, - 443, 381, 0, 0, 384, 284, 308, 323, 0, 624, - 508, 229, 472, 293, 253, 1031, 0, 213, 248, 232, - 262, 277, 280, 327, 395, 404, 433, 439, 299, 274, - 246, 465, 243, 491, 525, 526, 527, 529, 399, 269, - 438, 400, 0, 379, 582, 583, 319, 0, 0, 0, - 534, 0, 784, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 420, 0, 0, 0, 771, 0, 0, 0, - 273, 776, 0, 0, 0, 369, 270, 0, 0, 206, - 511, 0, 435, 0, 205, 0, 493, 255, 380, 377, - 590, 285, 276, 272, 252, 320, 389, 432, 524, 426, - 783, 373, 0, 0, 503, 405, 0, 0, 0, 0, - 0, 0, 0, 0, 778, 779, 0, 0, 0, 0, - 0, 0, 0, 0, 326, 250, 328, 204, 417, 504, - 289, 0, 95, 0, 0, 1032, 513, 966, 755, 932, - 970, 1033, 984, 985, 986, 971, 0, 240, 972, 973, - 247, 974, 0, 931, 814, 816, 815, 881, 882, 883, - 884, 885, 886, 887, 817, 818, 812, 979, 616, 987, - 988, 0, 268, 324, 275, 267, 587, 0, 0, 0, - 0, 0, 0, 603, 0, 0, 231, 0, 0, 0, - 0, 0, 0, 0, 751, 768, 0, 782, 0, 0, - 0, 278, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 765, 766, - 0, 0, 0, 0, 926, 0, 767, 0, 0, 775, - 989, 990, 991, 992, 993, 994, 995, 996, 997, 998, - 999, 1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, - 1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018, - 1019, 1020, 1021, 1022, 1023, 1024, 1025, 1026, 1027, 1028, - 1029, 1030, 3193, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 300, 0, 406, 260, 0, 459, 925, - 0, 0, 636, 0, 0, 923, 0, 0, 0, 0, - 368, 0, 333, 199, 227, 0, 0, 416, 467, 479, - 0, 0, 0, 976, 0, 477, 430, 611, 235, 287, - 464, 437, 475, 445, 290, 0, 0, 476, 375, 592, - 455, 608, 637, 638, 266, 410, 622, 528, 630, 655, - 228, 263, 424, 512, 614, 500, 401, 588, 589, 332, - 499, 298, 203, 372, 643, 226, 485, 374, 244, 233, - 594, 619, 302, 254, 292, 462, 650, 215, 523, 605, - 241, 489, 0, 0, 658, 249, 510, 617, 606, 217, - 601, 509, 397, 329, 330, 216, 0, 463, 271, 296, - 0, 0, 261, 419, 977, 978, 259, 659, 822, 629, - 222, 0, 628, 412, 591, 602, 398, 386, 221, 600, - 396, 385, 337, 830, 831, 283, 310, 907, 906, 905, - 309, 311, 903, 904, 902, 209, 615, 633, 0, 210, - 0, 505, 618, 660, 457, 214, 236, 237, 239, 0, - 282, 286, 294, 297, 306, 307, 316, 370, 423, 451, - 447, 456, 0, 585, 609, 623, 635, 641, 642, 644, - 645, 646, 647, 648, 651, 649, 411, 314, 501, 336, - 376, 0, 0, 429, 478, 242, 613, 502, 913, 935, - 924, 788, 789, 914, 915, 939, 916, 791, 792, 936, - 937, 785, 786, 790, 938, 940, 661, 662, 663, 664, - 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, - 675, 676, 677, 678, 656, 514, 520, 515, 516, 517, - 518, 519, 0, 521, 927, 774, 773, 0, 780, 781, - 0, 810, 811, 813, 819, 820, 821, 832, 879, 880, - 888, 890, 891, 889, 892, 893, 894, 897, 898, 899, - 900, 895, 896, 901, 793, 797, 794, 795, 796, 808, - 798, 799, 800, 801, 802, 803, 804, 805, 806, 807, - 809, 950, 951, 952, 953, 954, 955, 825, 829, 828, - 826, 827, 823, 824, 851, 850, 852, 853, 854, 855, - 856, 857, 859, 858, 860, 861, 862, 863, 864, 865, - 833, 834, 837, 838, 836, 835, 839, 848, 849, 840, - 841, 842, 843, 844, 845, 847, 846, 866, 867, 868, - 869, 870, 872, 871, 875, 876, 874, 873, 878, 877, - 772, 198, 223, 371, 0, 460, 291, 657, 625, 490, - 620, 208, 225, 941, 265, 942, 0, 0, 946, 0, - 0, 0, 948, 947, 0, 949, 911, 910, 0, 0, - 943, 944, 0, 945, 0, 0, 200, 202, 211, 224, - 234, 238, 245, 264, 279, 281, 288, 301, 313, 321, - 322, 325, 331, 383, 390, 391, 392, 393, 413, 414, - 415, 418, 421, 422, 425, 427, 428, 431, 436, 440, - 441, 442, 444, 446, 448, 461, 466, 480, 481, 482, - 483, 484, 487, 488, 494, 495, 496, 497, 498, 506, - 507, 522, 593, 595, 612, 632, 639, 486, 388, 434, - 458, 586, 956, 957, 958, 959, 960, 961, 962, 963, - 303, 607, 640, 604, 652, 634, 443, 381, 0, 0, - 384, 284, 308, 323, 0, 624, 508, 229, 472, 293, - 253, 1031, 0, 213, 248, 232, 262, 277, 280, 327, - 395, 404, 433, 439, 299, 274, 246, 465, 243, 491, - 525, 526, 527, 529, 399, 269, 438, 400, 0, 379, - 582, 583, 319, 0, 0, 0, 534, 0, 784, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 420, 0, - 0, 0, 771, 0, 0, 0, 273, 776, 0, 0, - 0, 369, 270, 0, 0, 206, 511, 0, 435, 0, - 205, 0, 493, 255, 380, 377, 590, 285, 276, 272, - 252, 320, 389, 432, 524, 426, 783, 373, 0, 0, - 503, 405, 0, 0, 0, 0, 0, 0, 0, 0, - 778, 779, 0, 0, 0, 0, 0, 0, 0, 0, - 326, 250, 328, 204, 417, 504, 289, 0, 95, 0, - 0, 1032, 513, 966, 755, 932, 970, 1033, 984, 985, - 986, 971, 0, 240, 972, 973, 247, 974, 0, 931, - 814, 816, 815, 881, 882, 883, 884, 885, 886, 887, - 817, 818, 812, 979, 616, 987, 988, 0, 268, 324, - 275, 267, 587, 0, 0, 0, 0, 0, 0, 603, - 0, 0, 231, 0, 0, 0, 0, 0, 0, 0, - 751, 768, 0, 782, 0, 0, 0, 278, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 765, 766, 0, 0, 0, 0, - 926, 0, 767, 0, 0, 775, 989, 990, 991, 992, - 993, 994, 995, 996, 997, 998, 999, 1000, 1001, 1002, - 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012, - 1013, 1014, 1015, 1016, 1017, 1018, 1019, 1020, 1021, 1022, - 1023, 1024, 1025, 1026, 1027, 1028, 1029, 1030, 3189, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 300, - 0, 406, 260, 0, 459, 925, 0, 0, 636, 0, - 0, 923, 0, 0, 0, 0, 368, 0, 333, 199, - 227, 0, 0, 416, 467, 479, 0, 0, 0, 976, - 0, 477, 430, 611, 235, 287, 464, 437, 475, 445, - 290, 0, 0, 476, 375, 592, 455, 608, 637, 638, - 266, 410, 622, 528, 630, 655, 228, 263, 424, 512, - 614, 500, 401, 588, 589, 332, 499, 298, 203, 372, - 643, 226, 485, 374, 244, 233, 594, 619, 302, 254, - 292, 462, 650, 215, 523, 605, 241, 489, 0, 0, - 658, 249, 510, 617, 606, 217, 601, 509, 397, 329, - 330, 216, 0, 463, 271, 296, 0, 0, 261, 419, - 977, 978, 259, 659, 822, 629, 222, 0, 628, 412, - 591, 602, 398, 386, 221, 600, 396, 385, 337, 830, - 831, 283, 310, 907, 906, 905, 309, 311, 903, 904, - 902, 209, 615, 633, 0, 210, 0, 505, 618, 660, - 457, 214, 236, 237, 239, 0, 282, 286, 294, 297, - 306, 307, 316, 370, 423, 451, 447, 456, 0, 585, - 609, 623, 635, 641, 642, 644, 645, 646, 647, 648, - 651, 649, 411, 314, 501, 336, 376, 0, 0, 429, - 478, 242, 613, 502, 913, 935, 924, 788, 789, 914, - 915, 939, 916, 791, 792, 936, 937, 785, 786, 790, - 938, 940, 661, 662, 663, 664, 665, 666, 667, 668, - 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, - 656, 514, 520, 515, 516, 517, 518, 519, 0, 521, - 927, 774, 773, 0, 780, 781, 0, 810, 811, 813, - 819, 820, 821, 832, 879, 880, 888, 890, 891, 889, - 892, 893, 894, 897, 898, 899, 900, 895, 896, 901, - 793, 797, 794, 795, 796, 808, 798, 799, 800, 801, - 802, 803, 804, 805, 806, 807, 809, 950, 951, 952, - 953, 954, 955, 825, 829, 828, 826, 827, 823, 824, - 851, 850, 852, 853, 854, 855, 856, 857, 859, 858, - 860, 861, 862, 863, 864, 865, 833, 834, 837, 838, - 836, 835, 839, 848, 849, 840, 841, 842, 843, 844, - 845, 847, 846, 866, 867, 868, 869, 870, 872, 871, - 875, 876, 874, 873, 878, 877, 772, 198, 223, 371, - 0, 460, 291, 657, 625, 490, 620, 208, 225, 941, - 265, 942, 0, 0, 946, 0, 0, 0, 948, 947, - 0, 949, 911, 910, 0, 0, 943, 944, 0, 945, - 0, 0, 200, 202, 211, 224, 234, 238, 245, 264, - 279, 281, 288, 301, 313, 321, 322, 325, 331, 383, - 390, 391, 392, 393, 413, 414, 415, 418, 421, 422, - 425, 427, 428, 431, 436, 440, 441, 442, 444, 446, - 448, 461, 466, 480, 481, 482, 483, 484, 487, 488, - 494, 495, 496, 497, 498, 506, 507, 522, 593, 595, - 612, 632, 639, 486, 388, 434, 458, 586, 956, 957, - 958, 959, 960, 961, 962, 963, 303, 607, 640, 604, - 652, 634, 443, 381, 0, 0, 384, 284, 308, 323, - 0, 624, 508, 229, 472, 293, 253, 1031, 0, 213, - 248, 232, 262, 277, 280, 327, 395, 404, 433, 439, - 299, 274, 246, 465, 243, 491, 525, 526, 527, 529, - 399, 269, 438, 400, 0, 379, 582, 583, 319, 0, - 0, 0, 534, 0, 784, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 420, 0, 0, 0, 771, 0, - 0, 0, 273, 776, 0, 0, 0, 369, 270, 0, - 0, 206, 511, 0, 435, 0, 205, 0, 493, 255, - 380, 377, 590, 285, 276, 272, 252, 320, 389, 432, - 524, 426, 783, 373, 0, 0, 503, 405, 0, 0, - 0, 0, 0, 0, 0, 0, 778, 779, 0, 0, - 0, 0, 0, 0, 0, 0, 326, 250, 328, 204, - 417, 504, 289, 0, 95, 0, 0, 1032, 513, 966, - 1100, 932, 970, 1033, 984, 985, 986, 971, 0, 240, - 972, 973, 247, 974, 0, 931, 814, 816, 815, 881, - 882, 883, 884, 885, 886, 887, 817, 818, 812, 979, - 616, 987, 988, 0, 268, 324, 275, 267, 587, 0, - 0, 0, 0, 0, 0, 603, 0, 0, 231, 0, - 0, 0, 0, 0, 0, 0, 0, 768, 0, 782, - 0, 0, 0, 278, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 765, 766, 0, 0, 0, 0, 926, 0, 767, 0, - 0, 775, 989, 990, 991, 992, 993, 994, 995, 996, - 997, 998, 999, 1000, 1001, 1002, 1003, 1004, 1005, 1006, - 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016, - 1017, 1018, 1019, 1020, 1021, 1022, 1023, 1024, 1025, 1026, - 1027, 1028, 1029, 1030, 777, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 300, 0, 406, 260, 0, - 459, 925, 0, 0, 636, 0, 0, 923, 0, 0, - 0, 0, 368, 0, 333, 199, 227, 0, 0, 416, - 467, 479, 0, 0, 0, 976, 0, 477, 430, 611, - 235, 287, 464, 437, 475, 445, 290, 0, 0, 476, - 375, 592, 455, 608, 637, 638, 266, 410, 622, 528, - 630, 655, 228, 263, 424, 512, 614, 500, 401, 588, - 589, 332, 499, 298, 203, 372, 643, 226, 485, 374, - 244, 233, 594, 619, 302, 254, 292, 462, 650, 215, - 523, 605, 241, 489, 0, 0, 658, 249, 510, 617, - 606, 217, 601, 509, 397, 329, 330, 216, 0, 463, - 271, 296, 0, 0, 261, 419, 977, 978, 259, 659, - 822, 629, 222, 0, 628, 412, 591, 602, 398, 386, - 221, 600, 396, 385, 337, 830, 831, 283, 310, 907, - 906, 905, 309, 311, 903, 904, 902, 209, 615, 633, - 0, 210, 0, 505, 618, 660, 457, 214, 236, 237, - 239, 0, 282, 286, 294, 297, 306, 307, 316, 370, - 423, 451, 447, 456, 0, 585, 609, 623, 635, 641, - 642, 644, 645, 646, 647, 648, 651, 649, 411, 314, - 501, 336, 376, 0, 0, 429, 478, 242, 613, 502, - 913, 935, 924, 788, 789, 914, 915, 939, 916, 791, - 792, 936, 937, 785, 786, 790, 938, 940, 661, 662, - 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, - 673, 674, 675, 676, 677, 678, 656, 514, 520, 515, - 516, 517, 518, 519, 0, 521, 927, 774, 773, 0, - 780, 781, 0, 810, 811, 813, 819, 820, 821, 832, - 879, 880, 888, 890, 891, 889, 892, 893, 894, 897, - 898, 899, 900, 895, 896, 901, 793, 797, 794, 795, - 796, 808, 798, 799, 800, 801, 802, 803, 804, 805, - 806, 807, 809, 950, 951, 952, 953, 954, 955, 825, - 829, 828, 826, 827, 823, 824, 851, 850, 852, 853, - 854, 855, 856, 857, 859, 858, 860, 861, 862, 863, - 864, 865, 833, 834, 837, 838, 836, 835, 839, 848, - 849, 840, 841, 842, 843, 844, 845, 847, 846, 866, - 867, 868, 869, 870, 872, 871, 875, 876, 874, 873, - 878, 877, 772, 198, 223, 371, 0, 460, 291, 657, - 625, 490, 620, 208, 225, 941, 265, 942, 0, 0, - 946, 0, 0, 0, 948, 947, 0, 949, 911, 910, - 0, 0, 943, 944, 0, 945, 0, 0, 200, 202, - 211, 224, 234, 238, 245, 264, 279, 281, 288, 301, - 313, 321, 322, 325, 331, 383, 390, 391, 392, 393, - 413, 414, 415, 418, 421, 422, 425, 427, 428, 431, - 436, 440, 441, 442, 444, 446, 448, 461, 466, 480, - 481, 482, 483, 484, 487, 488, 494, 495, 496, 497, - 498, 506, 507, 522, 593, 595, 612, 632, 639, 486, - 388, 434, 458, 586, 956, 957, 958, 959, 960, 961, - 962, 963, 303, 607, 640, 604, 652, 634, 443, 381, - 0, 0, 384, 284, 308, 323, 0, 624, 508, 229, - 472, 293, 253, 1031, 0, 213, 248, 232, 262, 277, - 280, 327, 395, 404, 433, 439, 299, 274, 246, 465, - 243, 491, 525, 526, 527, 529, 399, 269, 438, 400, - 0, 379, 582, 583, 319, 0, 0, 0, 534, 0, - 784, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 420, 0, 0, 0, 771, 0, 0, 0, 273, 776, - 0, 0, 0, 369, 270, 0, 0, 206, 511, 0, - 435, 0, 205, 0, 493, 255, 380, 377, 590, 285, - 276, 272, 252, 320, 389, 432, 524, 426, 783, 373, - 0, 0, 503, 405, 0, 0, 0, 0, 0, 0, - 0, 0, 778, 779, 0, 0, 0, 0, 0, 0, - 0, 0, 326, 250, 328, 204, 417, 504, 289, 0, - 95, 0, 0, 1032, 513, 966, 1100, 932, 970, 1033, - 984, 985, 986, 971, 0, 240, 972, 973, 247, 974, - 0, 931, 814, 816, 815, 881, 882, 883, 884, 885, - 886, 887, 817, 818, 812, 979, 616, 987, 988, 0, - 268, 324, 275, 267, 587, 0, 0, 0, 0, 0, - 0, 603, 0, 0, 231, 0, 0, 0, 0, 0, - 0, 0, 0, 768, 0, 782, 0, 0, 0, 278, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 765, 766, 0, 0, - 0, 0, 926, 0, 767, 0, 0, 775, 989, 990, - 991, 992, 993, 994, 995, 996, 997, 998, 999, 1000, - 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, - 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018, 1019, 1020, - 1021, 1022, 1023, 1024, 1025, 1026, 1027, 1028, 1029, 1030, - 2139, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 300, 0, 406, 260, 0, 459, 925, 0, 0, - 636, 0, 0, 923, 0, 0, 0, 0, 368, 0, - 333, 199, 227, 0, 0, 416, 467, 479, 0, 0, - 0, 976, 0, 477, 430, 611, 235, 287, 464, 437, - 475, 445, 290, 0, 0, 476, 375, 592, 455, 608, - 637, 638, 266, 410, 622, 528, 630, 655, 228, 263, - 424, 512, 614, 500, 401, 588, 589, 332, 499, 298, - 203, 372, 643, 226, 485, 374, 244, 233, 594, 619, - 302, 254, 292, 462, 650, 215, 523, 605, 241, 489, - 0, 0, 658, 249, 510, 617, 606, 217, 601, 509, - 397, 329, 330, 216, 0, 463, 271, 296, 0, 0, - 261, 419, 977, 978, 259, 659, 822, 629, 222, 0, - 628, 412, 591, 602, 398, 386, 221, 600, 396, 385, - 337, 830, 831, 283, 310, 907, 906, 905, 309, 311, - 903, 904, 902, 209, 615, 633, 0, 210, 0, 505, - 618, 660, 457, 214, 236, 237, 239, 0, 282, 286, - 294, 297, 306, 307, 316, 370, 423, 451, 447, 456, - 0, 585, 609, 623, 635, 641, 642, 644, 645, 646, - 647, 648, 651, 649, 411, 314, 501, 336, 376, 0, - 0, 429, 478, 242, 613, 502, 913, 935, 924, 788, - 789, 914, 915, 939, 916, 791, 792, 936, 937, 785, - 786, 790, 938, 940, 661, 662, 663, 664, 665, 666, - 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, - 677, 678, 656, 514, 520, 515, 516, 517, 518, 519, - 0, 521, 927, 774, 773, 0, 780, 781, 0, 810, - 811, 813, 819, 820, 821, 832, 879, 880, 888, 890, - 891, 889, 892, 893, 894, 897, 898, 899, 900, 895, - 896, 901, 793, 797, 794, 795, 796, 808, 798, 799, - 800, 801, 802, 803, 804, 805, 806, 807, 809, 950, - 951, 952, 953, 954, 955, 825, 829, 828, 826, 827, - 823, 824, 851, 850, 852, 853, 854, 855, 856, 857, - 859, 858, 860, 861, 862, 863, 864, 865, 833, 834, - 837, 838, 836, 835, 839, 848, 849, 840, 841, 842, - 843, 844, 845, 847, 846, 866, 867, 868, 869, 870, - 872, 871, 875, 876, 874, 873, 878, 877, 772, 198, - 223, 371, 0, 460, 291, 657, 625, 490, 620, 208, - 225, 941, 265, 942, 0, 0, 946, 0, 0, 0, - 948, 947, 0, 949, 911, 910, 0, 0, 943, 944, - 0, 945, 0, 0, 200, 202, 211, 224, 234, 238, - 245, 264, 279, 281, 288, 301, 313, 321, 322, 325, - 331, 383, 390, 391, 392, 393, 413, 414, 415, 418, - 421, 422, 425, 427, 428, 431, 436, 440, 441, 442, - 444, 446, 448, 461, 466, 480, 481, 482, 483, 484, - 487, 488, 494, 495, 496, 497, 498, 506, 507, 522, - 593, 595, 612, 632, 639, 486, 388, 434, 458, 586, - 956, 957, 958, 959, 960, 961, 962, 963, 303, 607, - 640, 604, 652, 634, 443, 381, 0, 0, 384, 284, - 308, 323, 0, 624, 508, 229, 472, 293, 253, 1031, - 0, 213, 248, 232, 262, 277, 280, 327, 395, 404, - 433, 439, 299, 274, 246, 465, 243, 491, 525, 526, - 527, 529, 399, 269, 438, 400, 0, 379, 582, 583, - 319, 0, 0, 0, 534, 0, 784, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 420, 0, 0, 0, - 771, 0, 0, 0, 273, 776, 0, 0, 0, 369, - 270, 0, 0, 206, 511, 0, 435, 0, 205, 0, - 493, 255, 380, 377, 590, 285, 276, 272, 252, 320, - 389, 432, 524, 426, 783, 373, 0, 0, 503, 405, - 0, 0, 0, 0, 0, 0, 0, 0, 778, 779, - 0, 0, 0, 0, 0, 0, 0, 0, 326, 250, - 328, 204, 417, 504, 289, 0, 95, 0, 0, 1032, - 513, 966, 1100, 932, 970, 1033, 984, 985, 986, 971, - 0, 240, 972, 973, 247, 974, 0, 931, 814, 816, - 815, 881, 882, 883, 884, 885, 886, 887, 817, 818, - 812, 979, 616, 987, 988, 0, 268, 324, 275, 267, - 587, 0, 0, 0, 0, 0, 0, 603, 0, 0, - 231, 0, 0, 0, 0, 0, 0, 0, 0, 768, - 0, 782, 0, 0, 0, 278, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 765, 766, 0, 0, 0, 0, 926, 0, - 767, 0, 0, 775, 989, 990, 991, 992, 993, 994, - 995, 996, 997, 998, 999, 1000, 1001, 1002, 1003, 1004, - 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014, - 1015, 1016, 1017, 1018, 1019, 1020, 1021, 1022, 1023, 1024, - 1025, 1026, 1027, 1028, 1029, 1030, 2137, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 300, 0, 406, - 260, 0, 459, 925, 0, 0, 636, 0, 0, 923, - 0, 0, 0, 0, 368, 0, 333, 199, 227, 0, - 0, 416, 467, 479, 0, 0, 0, 976, 0, 477, - 430, 611, 235, 287, 464, 437, 475, 445, 290, 0, - 0, 476, 375, 592, 455, 608, 637, 638, 266, 410, - 622, 528, 630, 655, 228, 263, 424, 512, 614, 500, - 401, 588, 589, 332, 499, 298, 203, 372, 643, 226, - 485, 374, 244, 233, 594, 619, 302, 254, 292, 462, - 650, 215, 523, 605, 241, 489, 0, 0, 658, 249, - 510, 617, 606, 217, 601, 509, 397, 329, 330, 216, - 0, 463, 271, 296, 0, 0, 261, 419, 977, 978, - 259, 659, 822, 629, 222, 0, 628, 412, 591, 602, - 398, 386, 221, 600, 396, 385, 337, 830, 831, 283, - 310, 907, 906, 905, 309, 311, 903, 904, 902, 209, - 615, 633, 0, 210, 0, 505, 618, 660, 457, 214, - 236, 237, 239, 0, 282, 286, 294, 297, 306, 307, - 316, 370, 423, 451, 447, 456, 0, 585, 609, 623, - 635, 641, 642, 644, 645, 646, 647, 648, 651, 649, - 411, 314, 501, 336, 376, 0, 0, 429, 478, 242, - 613, 502, 913, 935, 924, 788, 789, 914, 915, 939, - 916, 791, 792, 936, 937, 785, 786, 790, 938, 940, - 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, - 671, 672, 673, 674, 675, 676, 677, 678, 656, 514, - 520, 515, 516, 517, 518, 519, 0, 521, 927, 774, - 773, 0, 780, 781, 0, 810, 811, 813, 819, 820, - 821, 832, 879, 880, 888, 890, 891, 889, 892, 893, - 894, 897, 898, 899, 900, 895, 896, 901, 793, 797, - 794, 795, 796, 808, 798, 799, 800, 801, 802, 803, - 804, 805, 806, 807, 809, 950, 951, 952, 953, 954, - 955, 825, 829, 828, 826, 827, 823, 824, 851, 850, - 852, 853, 854, 855, 856, 857, 859, 858, 860, 861, - 862, 863, 864, 865, 833, 834, 837, 838, 836, 835, - 839, 848, 849, 840, 841, 842, 843, 844, 845, 847, - 846, 866, 867, 868, 869, 870, 872, 871, 875, 876, - 874, 873, 878, 877, 772, 198, 223, 371, 0, 460, - 291, 657, 625, 490, 620, 208, 225, 941, 265, 942, - 0, 0, 946, 0, 0, 0, 948, 947, 0, 949, - 911, 910, 0, 0, 943, 944, 0, 945, 0, 0, - 200, 202, 211, 224, 234, 238, 245, 264, 279, 281, - 288, 301, 313, 321, 322, 325, 331, 383, 390, 391, - 392, 393, 413, 414, 415, 418, 421, 422, 425, 427, - 428, 431, 436, 440, 441, 442, 444, 446, 448, 461, - 466, 480, 481, 482, 483, 484, 487, 488, 494, 495, - 496, 497, 498, 506, 507, 522, 593, 595, 612, 632, - 639, 486, 388, 434, 458, 586, 956, 957, 958, 959, - 960, 961, 962, 963, 303, 607, 640, 604, 652, 634, - 443, 381, 0, 0, 384, 284, 308, 323, 0, 624, - 508, 229, 472, 293, 253, 1031, 0, 213, 248, 232, - 262, 277, 280, 327, 395, 404, 433, 439, 299, 274, - 246, 465, 243, 491, 525, 526, 527, 529, 399, 269, - 438, 400, 0, 379, 582, 583, 319, 0, 0, 0, - 534, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 420, 0, 0, 0, 0, 0, 0, 0, - 273, 0, 0, 0, 0, 369, 270, 0, 0, 206, - 511, 0, 435, 0, 205, 0, 493, 255, 380, 377, - 590, 285, 276, 272, 252, 320, 389, 432, 524, 426, - 0, 373, 0, 0, 503, 405, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 326, 250, 328, 204, 417, 504, - 289, 0, 0, 0, 0, 0, 513, 731, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 240, 0, 0, - 247, 0, 0, 0, 354, 363, 362, 342, 343, 345, - 347, 353, 360, 366, 339, 348, 0, 0, 616, 0, - 0, 0, 268, 324, 275, 267, 587, 0, 0, 0, - 0, 0, 0, 603, 0, 0, 231, 0, 1151, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 278, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 300, 0, 406, 260, 0, 459, 0, - 0, 1150, 636, 0, 0, 0, 0, 0, 1147, 1148, - 368, 1108, 333, 199, 227, 1141, 1145, 416, 467, 479, - 0, 0, 0, 256, 0, 477, 430, 611, 235, 287, - 464, 437, 475, 445, 290, 0, 0, 476, 375, 592, - 455, 608, 637, 638, 266, 410, 622, 528, 630, 655, - 228, 263, 424, 512, 614, 500, 401, 588, 589, 332, - 499, 298, 203, 372, 643, 226, 485, 374, 244, 233, - 594, 619, 302, 254, 292, 462, 650, 215, 523, 605, - 241, 489, 0, 0, 658, 249, 510, 617, 606, 217, - 601, 509, 397, 329, 330, 216, 0, 463, 271, 296, - 0, 0, 261, 419, 596, 597, 259, 659, 230, 629, - 222, 0, 628, 412, 591, 602, 398, 386, 221, 600, - 396, 385, 337, 358, 359, 283, 310, 452, 378, 453, - 309, 311, 408, 407, 409, 209, 615, 633, 0, 210, - 0, 505, 618, 660, 457, 214, 236, 237, 239, 0, - 282, 286, 294, 297, 306, 307, 316, 370, 423, 451, - 447, 456, 0, 585, 609, 623, 635, 641, 642, 644, - 645, 646, 647, 648, 651, 649, 411, 314, 501, 336, - 376, 0, 0, 429, 478, 242, 613, 502, 201, 0, - 0, 0, 0, 257, 258, 0, 581, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 661, 662, 663, 664, - 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, - 675, 676, 677, 678, 656, 514, 520, 515, 516, 517, - 518, 519, 0, 521, 0, 0, 0, 0, 0, 402, - 0, 598, 599, 679, 387, 492, 610, 338, 352, 355, - 344, 364, 0, 365, 340, 341, 346, 349, 350, 351, - 356, 357, 361, 367, 251, 212, 394, 403, 584, 315, - 218, 219, 220, 530, 531, 532, 533, 626, 627, 631, - 207, 468, 469, 470, 471, 295, 621, 312, 474, 473, - 334, 335, 382, 454, 546, 548, 559, 563, 565, 567, - 573, 576, 547, 549, 560, 564, 566, 568, 574, 577, - 536, 538, 540, 542, 555, 554, 551, 579, 580, 557, - 562, 541, 553, 558, 571, 578, 575, 535, 539, 543, - 552, 570, 569, 550, 561, 572, 556, 544, 537, 545, - 0, 198, 223, 371, 0, 460, 291, 657, 625, 490, - 620, 208, 225, 0, 265, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 200, 202, 211, 224, - 234, 238, 245, 264, 279, 281, 288, 301, 313, 321, - 322, 325, 331, 383, 390, 391, 392, 393, 413, 414, - 415, 418, 421, 422, 425, 427, 428, 431, 436, 440, - 441, 442, 444, 446, 448, 461, 466, 480, 481, 482, - 483, 484, 487, 488, 494, 495, 496, 497, 498, 506, - 507, 522, 593, 595, 612, 632, 639, 486, 388, 434, - 458, 586, 304, 305, 449, 450, 317, 318, 653, 654, - 303, 607, 640, 604, 652, 634, 443, 381, 0, 0, - 384, 284, 308, 323, 0, 624, 508, 229, 472, 293, - 253, 0, 0, 213, 248, 232, 262, 277, 280, 327, - 395, 404, 433, 439, 299, 274, 246, 465, 243, 491, - 525, 526, 527, 529, 399, 269, 438, 400, 0, 379, - 582, 583, 319, 0, 0, 86, 534, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 420, 0, - 0, 0, 0, 0, 0, 0, 273, 0, 0, 0, - 0, 369, 270, 0, 0, 206, 511, 0, 435, 0, - 205, 0, 493, 255, 380, 377, 590, 285, 276, 272, - 252, 320, 389, 432, 524, 426, 97, 373, 0, 0, - 503, 405, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 326, 250, 328, 204, 417, 504, 289, 0, 95, 0, - 0, 0, 513, 196, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 240, 0, 0, 247, 0, 0, 0, - 354, 363, 362, 342, 343, 345, 347, 353, 360, 366, - 339, 348, 0, 0, 616, 0, 0, 0, 268, 324, - 275, 267, 587, 0, 0, 0, 0, 0, 0, 603, - 0, 0, 231, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 278, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 300, - 0, 406, 260, 0, 459, 0, 0, 0, 636, 0, - 0, 0, 0, 0, 0, 0, 368, 0, 333, 199, - 227, 0, 0, 416, 467, 479, 0, 0, 0, 256, - 0, 477, 430, 611, 235, 287, 464, 437, 475, 445, - 290, 0, 0, 476, 375, 592, 455, 608, 637, 638, - 266, 410, 622, 528, 630, 655, 228, 263, 424, 512, - 614, 500, 401, 588, 589, 332, 499, 298, 203, 372, - 643, 226, 485, 374, 244, 233, 594, 619, 302, 254, - 292, 462, 650, 215, 523, 605, 241, 489, 0, 0, - 658, 249, 510, 617, 606, 217, 601, 509, 397, 329, - 330, 216, 0, 463, 271, 296, 0, 0, 261, 419, - 596, 597, 259, 659, 230, 629, 222, 0, 628, 412, - 591, 602, 398, 386, 221, 600, 396, 385, 337, 358, - 359, 283, 310, 452, 378, 453, 309, 311, 408, 407, - 409, 209, 615, 633, 0, 210, 0, 505, 618, 660, - 457, 214, 236, 237, 239, 0, 282, 286, 294, 297, - 306, 307, 316, 370, 423, 451, 447, 456, 0, 585, - 609, 623, 635, 641, 642, 644, 645, 646, 647, 648, - 651, 649, 411, 314, 501, 336, 376, 0, 0, 429, - 478, 242, 613, 502, 201, 0, 0, 0, 0, 257, - 258, 0, 581, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 661, 662, 663, 664, 665, 666, 667, 668, - 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, - 656, 514, 520, 515, 516, 517, 518, 519, 0, 521, - 0, 0, 0, 0, 0, 402, 0, 598, 599, 679, - 387, 492, 610, 338, 352, 355, 344, 364, 0, 365, - 340, 341, 346, 349, 350, 351, 356, 357, 361, 367, - 251, 212, 394, 403, 584, 315, 218, 219, 220, 530, - 531, 532, 533, 626, 627, 631, 207, 468, 469, 470, - 471, 295, 621, 312, 474, 473, 334, 335, 382, 454, - 546, 548, 559, 563, 565, 567, 573, 576, 547, 549, - 560, 564, 566, 568, 574, 577, 536, 538, 540, 542, - 555, 554, 551, 579, 580, 557, 562, 541, 553, 558, - 571, 578, 575, 535, 539, 543, 552, 570, 569, 550, - 561, 572, 556, 544, 537, 545, 0, 198, 223, 371, - 94, 460, 291, 657, 625, 490, 620, 208, 225, 0, - 265, 0, 0, 0, 0, 0, 0, 2444, 0, 0, - 2443, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 200, 202, 211, 224, 234, 238, 245, 264, - 279, 281, 288, 301, 313, 321, 322, 325, 331, 383, - 390, 391, 392, 393, 413, 414, 415, 418, 421, 422, - 425, 427, 428, 431, 436, 440, 441, 442, 444, 446, - 448, 461, 466, 480, 481, 482, 483, 484, 487, 488, - 494, 495, 496, 497, 498, 506, 507, 522, 593, 595, - 612, 632, 639, 486, 388, 434, 458, 586, 304, 305, - 449, 450, 317, 318, 653, 654, 303, 607, 640, 604, - 652, 634, 443, 381, 0, 0, 384, 284, 308, 323, - 0, 624, 508, 229, 472, 293, 253, 0, 0, 213, - 248, 232, 262, 277, 280, 327, 395, 404, 433, 439, - 299, 274, 246, 465, 243, 491, 525, 526, 527, 529, - 399, 269, 438, 400, 0, 379, 582, 583, 319, 0, - 0, 86, 534, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 420, 0, 0, 0, 0, 0, - 0, 0, 273, 0, 0, 0, 0, 369, 270, 0, - 0, 206, 511, 0, 435, 0, 205, 0, 493, 255, - 380, 377, 590, 285, 276, 272, 252, 320, 389, 432, - 524, 426, 97, 373, 0, 0, 503, 405, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 326, 250, 328, 204, - 417, 504, 289, 0, 95, 0, 1764, 0, 513, 731, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 240, - 0, 0, 247, 0, 0, 0, 354, 363, 362, 342, - 343, 345, 347, 353, 360, 366, 339, 348, 0, 0, - 616, 0, 0, 0, 268, 324, 275, 267, 587, 0, - 0, 0, 0, 0, 0, 603, 0, 0, 231, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 278, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 300, 0, 406, 260, 0, - 459, 0, 0, 0, 636, 0, 0, 0, 0, 0, - 0, 0, 368, 0, 333, 199, 227, 0, 0, 416, - 467, 479, 0, 0, 0, 256, 0, 477, 430, 611, - 235, 287, 464, 437, 475, 445, 290, 0, 0, 476, - 375, 592, 455, 608, 637, 638, 266, 410, 622, 528, - 630, 655, 228, 263, 424, 512, 614, 500, 401, 588, - 589, 332, 499, 298, 203, 372, 643, 226, 485, 374, - 244, 233, 594, 619, 302, 254, 292, 462, 650, 215, - 523, 605, 241, 489, 0, 0, 658, 249, 510, 617, - 606, 217, 601, 509, 397, 329, 330, 216, 0, 463, - 271, 296, 0, 0, 261, 419, 596, 597, 259, 659, - 230, 629, 222, 0, 628, 412, 591, 602, 398, 386, - 221, 600, 396, 385, 337, 358, 359, 283, 310, 452, - 378, 453, 309, 311, 408, 407, 409, 209, 615, 633, - 0, 210, 0, 505, 618, 660, 457, 214, 236, 237, - 239, 0, 282, 286, 294, 297, 306, 307, 316, 370, - 423, 451, 447, 456, 0, 585, 609, 623, 635, 641, - 642, 644, 645, 646, 647, 648, 651, 649, 411, 314, - 501, 336, 376, 0, 0, 429, 478, 242, 613, 502, - 201, 0, 0, 0, 0, 257, 258, 0, 581, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 661, 662, - 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, - 673, 674, 675, 676, 677, 678, 656, 514, 520, 515, - 516, 517, 518, 519, 0, 521, 0, 0, 0, 0, - 0, 402, 0, 598, 599, 679, 387, 492, 610, 338, - 352, 355, 344, 364, 0, 365, 340, 341, 346, 349, - 350, 351, 356, 357, 361, 367, 251, 212, 394, 403, - 584, 315, 218, 219, 220, 530, 531, 532, 533, 626, - 627, 631, 207, 468, 469, 470, 471, 295, 621, 312, - 474, 473, 334, 335, 382, 454, 546, 548, 559, 563, - 565, 567, 573, 576, 547, 549, 560, 564, 566, 568, - 574, 577, 536, 538, 540, 542, 555, 554, 551, 579, - 580, 557, 562, 541, 553, 558, 571, 578, 575, 535, - 539, 543, 552, 570, 569, 550, 561, 572, 556, 544, - 537, 545, 0, 198, 223, 371, 94, 460, 291, 657, - 625, 490, 620, 208, 225, 0, 265, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 200, 202, - 211, 224, 234, 238, 245, 264, 279, 281, 288, 301, - 313, 321, 322, 325, 331, 383, 390, 391, 392, 393, - 413, 414, 415, 418, 421, 422, 425, 427, 428, 431, - 436, 440, 441, 442, 444, 446, 448, 461, 466, 480, - 481, 482, 483, 484, 487, 488, 494, 495, 496, 497, - 498, 506, 507, 522, 593, 595, 612, 632, 639, 486, - 388, 434, 458, 586, 304, 305, 449, 450, 317, 318, - 653, 654, 303, 607, 640, 604, 652, 634, 443, 381, - 0, 0, 384, 284, 308, 323, 0, 624, 508, 229, - 472, 293, 253, 0, 0, 213, 248, 232, 262, 277, - 280, 327, 395, 404, 433, 439, 299, 274, 246, 465, - 243, 491, 525, 526, 527, 529, 399, 269, 438, 1792, - 0, 379, 582, 583, 319, 0, 0, 0, 534, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 420, 0, 0, 1794, 0, 0, 0, 0, 273, 0, - 0, 0, 0, 369, 270, 0, 0, 206, 511, 0, - 435, 0, 205, 0, 493, 255, 380, 377, 590, 285, - 276, 272, 252, 320, 389, 432, 524, 426, 0, 373, - 0, 0, 503, 405, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 326, 250, 328, 204, 417, 504, 289, 0, - 0, 0, 0, 1796, 513, 731, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 240, 0, 0, 247, 0, - 0, 0, 354, 363, 362, 342, 343, 345, 347, 353, - 360, 366, 339, 348, 0, 0, 616, 0, 0, 0, - 268, 324, 275, 267, 587, 0, 0, 0, 0, 0, - 0, 603, 0, 0, 231, 0, 0, 0, 1489, 0, - 1490, 1491, 0, 0, 0, 0, 0, 0, 0, 278, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 300, 0, 406, 260, 0, 459, 0, 0, 0, - 636, 0, 0, 0, 0, 0, 0, 0, 368, 0, - 333, 199, 227, 0, 0, 416, 467, 479, 0, 0, - 0, 256, 0, 477, 430, 611, 235, 287, 464, 437, - 475, 445, 290, 0, 0, 476, 375, 592, 455, 608, - 637, 638, 266, 410, 622, 528, 630, 655, 228, 263, - 424, 512, 614, 500, 401, 588, 589, 332, 499, 298, - 203, 372, 643, 226, 485, 374, 244, 233, 594, 619, - 302, 254, 292, 462, 650, 215, 523, 605, 241, 489, - 0, 0, 658, 249, 510, 617, 606, 217, 601, 509, - 397, 329, 330, 216, 0, 463, 271, 296, 0, 0, - 261, 419, 596, 597, 259, 659, 230, 629, 222, 0, - 628, 412, 591, 602, 398, 386, 221, 600, 396, 385, - 337, 358, 359, 283, 310, 452, 378, 453, 309, 311, - 408, 407, 409, 209, 615, 633, 0, 210, 0, 505, - 618, 660, 457, 214, 236, 237, 239, 0, 282, 286, - 294, 297, 306, 307, 316, 370, 423, 451, 447, 456, - 0, 585, 609, 623, 635, 641, 642, 644, 645, 646, - 647, 648, 651, 649, 411, 314, 501, 336, 376, 0, - 0, 429, 478, 242, 613, 502, 201, 0, 0, 0, - 0, 257, 258, 0, 581, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 661, 662, 663, 664, 665, 666, - 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, - 677, 678, 656, 514, 520, 515, 516, 517, 518, 519, - 0, 521, 0, 0, 0, 0, 0, 402, 0, 598, - 599, 679, 387, 492, 610, 338, 352, 355, 344, 364, - 0, 365, 340, 341, 346, 349, 350, 351, 356, 357, - 361, 367, 251, 212, 394, 403, 584, 315, 218, 219, - 220, 530, 531, 532, 533, 626, 627, 631, 207, 468, - 469, 470, 471, 295, 621, 312, 474, 473, 334, 335, - 382, 454, 546, 548, 559, 563, 565, 567, 573, 576, - 547, 549, 560, 564, 566, 568, 574, 577, 536, 538, - 540, 542, 555, 554, 551, 579, 580, 557, 562, 541, - 553, 558, 571, 578, 575, 535, 539, 543, 552, 570, - 569, 550, 561, 572, 556, 544, 537, 545, 0, 198, - 223, 371, 0, 460, 291, 657, 625, 490, 620, 208, - 225, 0, 265, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 200, 202, 211, 224, 234, 238, - 245, 264, 279, 281, 288, 301, 313, 321, 322, 325, - 331, 383, 390, 391, 392, 393, 413, 414, 415, 418, - 421, 422, 425, 427, 428, 431, 436, 440, 441, 442, - 444, 446, 448, 461, 466, 480, 481, 482, 483, 484, - 487, 488, 494, 495, 496, 497, 498, 506, 507, 522, - 593, 595, 612, 632, 639, 486, 388, 434, 458, 586, - 304, 305, 449, 450, 317, 318, 653, 654, 303, 607, - 640, 604, 652, 634, 443, 381, 0, 0, 384, 284, - 308, 323, 0, 624, 508, 229, 472, 293, 253, 0, - 0, 213, 248, 232, 262, 277, 280, 327, 395, 404, - 433, 439, 299, 274, 246, 465, 243, 491, 525, 526, - 527, 529, 399, 269, 438, 400, 0, 379, 582, 583, - 319, 0, 0, 0, 534, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 420, 0, 0, 0, - 0, 0, 0, 0, 273, 0, 0, 0, 0, 369, - 270, 0, 0, 206, 511, 0, 435, 0, 205, 0, - 493, 255, 380, 377, 590, 285, 276, 272, 252, 320, - 389, 432, 524, 426, 0, 373, 0, 0, 503, 405, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 326, 250, - 328, 204, 417, 504, 289, 0, 95, 0, 0, 0, - 513, 196, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 240, 0, 0, 247, 0, 0, 0, 354, 363, - 362, 342, 343, 345, 347, 353, 360, 366, 339, 348, - 0, 0, 616, 0, 0, 0, 268, 324, 275, 267, - 587, 0, 0, 0, 0, 0, 0, 603, 0, 0, - 231, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 278, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 300, 0, 406, - 260, 0, 459, 0, 0, 0, 636, 0, 0, 0, - 0, 0, 0, 0, 368, 0, 333, 199, 227, 0, - 0, 416, 467, 479, 0, 0, 0, 256, 0, 477, - 430, 611, 235, 287, 464, 437, 475, 445, 290, 0, - 0, 476, 375, 592, 455, 608, 637, 638, 266, 410, - 622, 528, 630, 655, 228, 263, 424, 512, 614, 500, - 401, 588, 589, 332, 499, 298, 203, 372, 643, 226, - 485, 374, 244, 233, 594, 619, 302, 254, 292, 462, - 650, 215, 523, 605, 241, 489, 0, 0, 658, 249, - 510, 617, 606, 217, 601, 509, 397, 329, 330, 216, - 0, 463, 271, 296, 0, 0, 261, 419, 596, 597, - 259, 659, 230, 629, 222, 0, 628, 412, 591, 602, - 398, 386, 221, 600, 396, 385, 337, 358, 359, 283, - 310, 452, 378, 453, 309, 311, 408, 407, 409, 209, - 615, 633, 0, 210, 0, 505, 618, 660, 457, 214, - 236, 237, 239, 0, 282, 286, 294, 297, 306, 307, - 316, 370, 423, 451, 447, 456, 0, 585, 609, 623, - 635, 641, 642, 644, 645, 646, 647, 648, 651, 649, - 411, 314, 501, 336, 376, 0, 0, 429, 478, 242, - 613, 502, 201, 0, 0, 0, 0, 257, 258, 0, - 581, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, - 671, 672, 673, 674, 675, 676, 677, 678, 656, 514, - 520, 515, 516, 517, 518, 519, 0, 521, 0, 0, - 0, 0, 0, 402, 0, 598, 599, 679, 387, 492, - 610, 338, 352, 355, 344, 364, 0, 365, 340, 341, - 346, 349, 350, 351, 356, 357, 361, 367, 251, 212, - 394, 403, 584, 315, 218, 219, 220, 530, 531, 532, - 533, 626, 627, 631, 207, 468, 469, 470, 471, 295, - 621, 312, 474, 473, 334, 335, 382, 454, 546, 548, - 559, 563, 565, 567, 573, 576, 547, 549, 560, 564, - 566, 568, 574, 577, 536, 538, 540, 542, 555, 554, - 551, 579, 580, 557, 562, 541, 553, 558, 571, 578, - 575, 535, 539, 543, 552, 570, 569, 550, 561, 572, - 556, 544, 537, 545, 0, 198, 223, 371, 0, 460, - 291, 657, 625, 490, 620, 208, 225, 0, 265, 0, - 0, 0, 0, 0, 0, 2444, 0, 0, 2443, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 200, 202, 211, 224, 234, 238, 245, 264, 279, 281, - 288, 301, 313, 321, 322, 325, 331, 383, 390, 391, - 392, 393, 413, 414, 415, 418, 421, 422, 425, 427, - 428, 431, 436, 440, 441, 442, 444, 446, 448, 461, - 466, 480, 481, 482, 483, 484, 487, 488, 494, 495, - 496, 497, 498, 506, 507, 522, 593, 595, 612, 632, - 639, 486, 388, 434, 458, 586, 304, 305, 449, 450, - 317, 318, 653, 654, 303, 607, 640, 604, 652, 634, - 443, 381, 0, 0, 384, 284, 308, 323, 0, 624, - 508, 229, 472, 293, 253, 0, 0, 213, 248, 232, - 262, 277, 280, 327, 395, 404, 433, 439, 299, 274, - 246, 465, 243, 491, 525, 526, 527, 529, 399, 269, - 438, 400, 0, 379, 582, 583, 319, 0, 0, 0, - 534, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 420, 0, 0, 2389, 0, 0, 0, 0, - 273, 0, 0, 0, 0, 369, 270, 0, 0, 206, - 511, 0, 435, 0, 205, 0, 493, 255, 380, 377, - 590, 285, 276, 272, 252, 320, 389, 432, 524, 426, - 0, 373, 0, 0, 503, 405, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 326, 250, 328, 204, 417, 504, - 289, 0, 0, 0, 0, 1977, 513, 196, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 240, 0, 0, - 247, 0, 0, 0, 354, 363, 362, 342, 343, 345, - 347, 353, 360, 366, 339, 348, 0, 0, 616, 0, - 0, 0, 268, 324, 275, 267, 587, 0, 0, 0, - 0, 0, 0, 603, 0, 0, 231, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 278, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 300, 0, 406, 260, 0, 459, 0, - 0, 0, 636, 0, 0, 0, 0, 0, 0, 0, - 368, 0, 333, 199, 227, 0, 0, 416, 467, 479, - 0, 0, 0, 256, 0, 477, 430, 611, 235, 287, - 464, 437, 475, 445, 290, 0, 2387, 476, 375, 592, - 455, 608, 637, 638, 266, 410, 622, 528, 630, 655, - 228, 263, 424, 512, 614, 500, 401, 588, 589, 332, - 499, 298, 203, 372, 643, 226, 485, 374, 244, 233, - 594, 619, 302, 254, 292, 462, 650, 215, 523, 605, - 241, 489, 0, 0, 658, 249, 510, 617, 606, 217, - 601, 509, 397, 329, 330, 216, 0, 463, 271, 296, - 0, 0, 261, 419, 596, 597, 259, 659, 230, 629, - 222, 0, 628, 412, 591, 602, 398, 386, 221, 600, - 396, 385, 337, 358, 359, 283, 310, 452, 378, 453, - 309, 311, 408, 407, 409, 209, 615, 633, 0, 210, - 0, 505, 618, 660, 457, 214, 236, 237, 239, 0, - 282, 286, 294, 297, 306, 307, 316, 370, 423, 451, - 447, 456, 0, 585, 609, 623, 635, 641, 642, 644, - 645, 646, 647, 648, 651, 649, 411, 314, 501, 336, - 376, 0, 0, 429, 478, 242, 613, 502, 201, 0, - 0, 0, 0, 257, 258, 0, 581, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 661, 662, 663, 664, - 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, - 675, 676, 677, 678, 656, 514, 520, 515, 516, 517, - 518, 519, 0, 521, 0, 0, 0, 0, 0, 402, - 0, 598, 599, 679, 387, 492, 610, 338, 352, 355, - 344, 364, 0, 365, 340, 341, 346, 349, 350, 351, - 356, 357, 361, 367, 251, 212, 394, 403, 584, 315, - 218, 219, 220, 530, 531, 532, 533, 626, 627, 631, - 207, 468, 469, 470, 471, 295, 621, 312, 474, 473, - 334, 335, 382, 454, 546, 548, 559, 563, 565, 567, - 573, 576, 547, 549, 560, 564, 566, 568, 574, 577, - 536, 538, 540, 542, 555, 554, 551, 579, 580, 557, - 562, 541, 553, 558, 571, 578, 575, 535, 539, 543, - 552, 570, 569, 550, 561, 572, 556, 544, 537, 545, - 0, 198, 223, 371, 0, 460, 291, 657, 625, 490, - 620, 208, 225, 0, 265, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 200, 202, 211, 224, - 234, 238, 245, 264, 279, 281, 288, 301, 313, 321, - 322, 325, 331, 383, 390, 391, 392, 393, 413, 414, - 415, 418, 421, 422, 425, 427, 428, 431, 436, 440, - 441, 442, 444, 446, 448, 461, 466, 480, 481, 482, - 483, 484, 487, 488, 494, 495, 496, 497, 498, 506, - 507, 522, 593, 595, 612, 632, 639, 486, 388, 434, - 458, 586, 304, 305, 449, 450, 317, 318, 653, 654, - 303, 607, 640, 604, 652, 634, 443, 381, 0, 0, - 384, 284, 308, 323, 0, 624, 508, 229, 472, 293, - 253, 0, 0, 213, 248, 232, 262, 277, 280, 327, - 395, 404, 433, 439, 299, 274, 246, 465, 243, 491, - 525, 526, 527, 529, 399, 269, 438, 400, 0, 379, - 582, 583, 319, 0, 0, 0, 534, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 420, 0, - 0, 0, 0, 0, 0, 0, 273, 0, 0, 0, - 0, 369, 270, 0, 0, 206, 511, 0, 435, 0, - 205, 0, 493, 255, 380, 377, 590, 285, 276, 272, - 252, 320, 389, 432, 524, 426, 0, 373, 0, 0, - 503, 405, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 326, 250, 328, 204, 417, 504, 289, 0, 0, 0, - 0, 0, 513, 731, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 240, 0, 0, 247, 0, 0, 0, - 354, 363, 362, 342, 343, 345, 347, 353, 360, 366, - 339, 348, 0, 0, 616, 0, 0, 0, 268, 324, - 275, 267, 587, 0, 0, 0, 0, 0, 0, 603, - 0, 0, 231, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 278, 0, 0, - 0, 0, 0, 0, 0, 0, 1102, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 300, - 0, 406, 260, 0, 459, 0, 0, 0, 636, 0, - 0, 0, 0, 0, 0, 0, 368, 1108, 333, 199, - 227, 1106, 0, 416, 467, 479, 0, 0, 0, 256, - 0, 477, 430, 611, 235, 287, 464, 437, 475, 445, - 290, 0, 0, 476, 375, 592, 455, 608, 637, 638, - 266, 410, 622, 528, 630, 655, 228, 263, 424, 512, - 614, 500, 401, 588, 589, 332, 499, 298, 203, 372, - 643, 226, 485, 374, 244, 233, 594, 619, 302, 254, - 292, 462, 650, 215, 523, 605, 241, 489, 0, 0, - 658, 249, 510, 617, 606, 217, 601, 509, 397, 329, - 330, 216, 0, 463, 271, 296, 0, 0, 261, 419, - 596, 597, 259, 659, 230, 629, 222, 0, 628, 412, - 591, 602, 398, 386, 221, 600, 396, 385, 337, 358, - 359, 283, 310, 452, 378, 453, 309, 311, 408, 407, - 409, 209, 615, 633, 0, 210, 0, 505, 618, 660, - 457, 214, 236, 237, 239, 0, 282, 286, 294, 297, - 306, 307, 316, 370, 423, 451, 447, 456, 0, 585, - 609, 623, 635, 641, 642, 644, 645, 646, 647, 648, - 651, 649, 411, 314, 501, 336, 376, 0, 0, 429, - 478, 242, 613, 502, 201, 0, 0, 0, 0, 257, - 258, 0, 581, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 661, 662, 663, 664, 665, 666, 667, 668, - 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, - 656, 514, 520, 515, 516, 517, 518, 519, 0, 521, - 0, 0, 0, 0, 0, 402, 0, 598, 599, 679, - 387, 492, 610, 338, 352, 355, 344, 364, 0, 365, - 340, 341, 346, 349, 350, 351, 356, 357, 361, 367, - 251, 212, 394, 403, 584, 315, 218, 219, 220, 530, - 531, 532, 533, 626, 627, 631, 207, 468, 469, 470, - 471, 295, 621, 312, 474, 473, 334, 335, 382, 454, - 546, 548, 559, 563, 565, 567, 573, 576, 547, 549, - 560, 564, 566, 568, 574, 577, 536, 538, 540, 542, - 555, 554, 551, 579, 580, 557, 562, 541, 553, 558, - 571, 578, 575, 535, 539, 543, 552, 570, 569, 550, - 561, 572, 556, 544, 537, 545, 0, 198, 223, 371, - 0, 460, 291, 657, 625, 490, 620, 208, 225, 0, - 265, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 200, 202, 211, 224, 234, 238, 245, 264, - 279, 281, 288, 301, 313, 321, 322, 325, 331, 383, - 390, 391, 392, 393, 413, 414, 415, 418, 421, 422, - 425, 427, 428, 431, 436, 440, 441, 442, 444, 446, - 448, 461, 466, 480, 481, 482, 483, 484, 487, 488, - 494, 495, 496, 497, 498, 506, 507, 522, 593, 595, - 612, 632, 639, 486, 388, 434, 458, 586, 304, 305, - 449, 450, 317, 318, 653, 654, 303, 607, 640, 604, - 652, 634, 443, 381, 0, 0, 384, 284, 308, 323, - 0, 624, 508, 229, 472, 293, 253, 0, 0, 213, - 248, 232, 262, 277, 280, 327, 395, 404, 433, 439, - 299, 274, 246, 465, 243, 491, 525, 526, 527, 529, - 399, 269, 438, 400, 0, 379, 582, 583, 319, 0, - 0, 0, 534, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 420, 0, 0, 2389, 0, 0, - 0, 0, 273, 0, 0, 0, 0, 369, 270, 0, - 0, 206, 511, 0, 435, 0, 205, 0, 493, 255, - 380, 377, 590, 285, 276, 272, 252, 320, 389, 432, - 524, 426, 0, 373, 0, 0, 503, 405, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 326, 250, 328, 204, - 417, 504, 289, 0, 0, 0, 0, 1977, 513, 196, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 240, - 0, 0, 247, 0, 0, 0, 354, 363, 362, 342, - 343, 345, 347, 353, 360, 366, 339, 348, 0, 0, - 616, 0, 0, 0, 268, 324, 275, 267, 587, 0, - 0, 0, 0, 0, 0, 603, 0, 0, 231, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 278, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 300, 0, 406, 260, 0, - 459, 0, 0, 0, 636, 0, 0, 0, 0, 0, - 0, 0, 368, 0, 333, 199, 227, 0, 0, 416, - 467, 479, 0, 0, 0, 256, 0, 477, 430, 611, - 235, 287, 464, 437, 475, 445, 290, 0, 0, 476, - 375, 592, 455, 608, 637, 638, 266, 410, 622, 528, - 630, 655, 228, 263, 424, 512, 614, 500, 401, 588, - 589, 332, 499, 298, 203, 372, 643, 226, 485, 374, - 244, 233, 594, 619, 302, 254, 292, 462, 650, 215, - 523, 605, 241, 489, 0, 0, 658, 249, 510, 617, - 606, 217, 601, 509, 397, 329, 330, 216, 0, 463, - 271, 296, 0, 0, 261, 419, 596, 597, 259, 659, - 230, 629, 222, 0, 628, 412, 591, 602, 398, 386, - 221, 600, 396, 385, 337, 358, 359, 283, 310, 452, - 378, 453, 309, 311, 408, 407, 409, 209, 615, 633, - 0, 210, 0, 505, 618, 660, 457, 214, 236, 237, - 239, 0, 282, 286, 294, 297, 306, 307, 316, 370, - 423, 451, 447, 456, 0, 585, 609, 623, 635, 641, - 642, 644, 645, 646, 647, 648, 651, 649, 411, 314, - 501, 336, 376, 0, 0, 429, 478, 242, 613, 502, - 201, 0, 0, 0, 0, 257, 258, 0, 581, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 661, 662, - 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, - 673, 674, 675, 676, 677, 678, 656, 514, 520, 515, - 516, 517, 518, 519, 0, 521, 0, 0, 0, 0, - 0, 402, 0, 598, 599, 679, 387, 492, 610, 338, - 352, 355, 344, 364, 0, 365, 340, 341, 346, 349, - 350, 351, 356, 357, 361, 367, 251, 212, 394, 403, - 584, 315, 218, 219, 220, 530, 531, 532, 533, 626, - 627, 631, 207, 468, 469, 470, 471, 295, 621, 312, - 474, 473, 334, 335, 382, 454, 546, 548, 559, 563, - 565, 567, 573, 576, 547, 549, 560, 564, 566, 568, - 574, 577, 536, 538, 540, 542, 555, 554, 551, 579, - 580, 557, 562, 541, 553, 558, 571, 578, 575, 535, - 539, 543, 552, 570, 569, 550, 561, 572, 556, 544, - 537, 545, 0, 198, 223, 371, 0, 460, 291, 657, - 625, 490, 620, 208, 225, 0, 265, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 200, 202, - 211, 224, 234, 238, 245, 264, 279, 281, 288, 301, - 313, 321, 322, 325, 331, 383, 390, 391, 392, 393, - 413, 414, 415, 418, 421, 422, 425, 427, 428, 431, - 436, 440, 441, 442, 444, 446, 448, 461, 466, 480, - 481, 482, 483, 484, 487, 488, 494, 495, 496, 497, - 498, 506, 507, 522, 593, 595, 612, 632, 639, 486, - 388, 434, 458, 586, 304, 305, 449, 450, 317, 318, - 653, 654, 303, 607, 640, 604, 652, 634, 443, 381, - 0, 0, 384, 284, 308, 323, 0, 624, 508, 229, - 472, 293, 253, 0, 0, 213, 248, 232, 262, 277, - 280, 327, 395, 404, 433, 439, 299, 274, 246, 465, - 243, 491, 525, 526, 527, 529, 399, 269, 438, 400, - 0, 379, 582, 583, 319, 0, 0, 0, 534, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 420, 0, 0, 0, 0, 0, 0, 0, 273, 0, - 0, 0, 0, 369, 270, 0, 0, 206, 511, 0, - 435, 0, 205, 0, 493, 255, 380, 377, 590, 285, - 276, 272, 252, 320, 389, 432, 524, 426, 0, 373, - 0, 0, 503, 405, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 326, 250, 328, 204, 417, 504, 289, 0, - 0, 0, 1764, 0, 513, 731, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 240, 0, 0, 247, 0, - 0, 0, 354, 363, 362, 342, 343, 345, 347, 353, - 360, 366, 339, 348, 0, 0, 616, 0, 0, 0, - 268, 324, 275, 267, 587, 0, 0, 0, 0, 0, - 0, 603, 0, 0, 231, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 278, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 300, 0, 406, 260, 0, 459, 0, 0, 0, - 636, 0, 0, 0, 3748, 0, 0, 0, 368, 0, - 333, 199, 227, 0, 0, 416, 467, 479, 0, 0, - 0, 256, 0, 477, 430, 611, 235, 287, 464, 437, - 475, 445, 290, 0, 0, 476, 375, 592, 455, 608, - 637, 638, 266, 410, 622, 528, 630, 655, 228, 263, - 424, 512, 614, 500, 401, 588, 589, 332, 499, 298, - 203, 372, 643, 226, 485, 374, 244, 233, 594, 619, - 302, 254, 292, 462, 650, 215, 523, 605, 241, 489, - 0, 0, 658, 249, 510, 617, 606, 217, 601, 509, - 397, 329, 330, 216, 0, 463, 271, 296, 0, 0, - 261, 419, 596, 597, 259, 659, 230, 629, 222, 0, - 628, 412, 591, 602, 398, 386, 221, 600, 396, 385, - 337, 358, 359, 283, 310, 452, 378, 453, 309, 311, - 408, 407, 409, 209, 615, 633, 0, 210, 0, 505, - 618, 660, 457, 214, 236, 237, 239, 0, 282, 286, - 294, 297, 306, 307, 316, 370, 423, 451, 447, 456, - 0, 585, 609, 623, 635, 641, 642, 644, 645, 646, - 647, 648, 651, 649, 411, 314, 501, 336, 376, 0, - 0, 429, 478, 242, 613, 502, 201, 0, 0, 0, - 0, 257, 258, 0, 581, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 661, 662, 663, 664, 665, 666, - 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, - 677, 678, 656, 514, 520, 515, 516, 517, 518, 519, - 0, 521, 0, 0, 0, 0, 0, 402, 0, 598, - 599, 679, 387, 492, 610, 338, 352, 355, 344, 364, - 0, 365, 340, 341, 346, 349, 350, 351, 356, 357, - 361, 367, 251, 212, 394, 403, 584, 315, 218, 219, - 220, 530, 531, 532, 533, 626, 627, 631, 207, 468, - 469, 470, 471, 295, 621, 312, 474, 473, 334, 335, - 382, 454, 546, 548, 559, 563, 565, 567, 573, 576, - 547, 549, 560, 564, 566, 568, 574, 577, 536, 538, - 540, 542, 555, 554, 551, 579, 580, 557, 562, 541, - 553, 558, 571, 578, 575, 535, 539, 543, 552, 570, - 569, 550, 561, 572, 556, 544, 537, 545, 0, 198, - 223, 371, 0, 460, 291, 657, 625, 490, 620, 208, - 225, 0, 265, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 200, 202, 211, 224, 234, 238, - 245, 264, 279, 281, 288, 301, 313, 321, 322, 325, - 331, 383, 390, 391, 392, 393, 413, 414, 415, 418, - 421, 422, 425, 427, 428, 431, 436, 440, 441, 442, - 444, 446, 448, 461, 466, 480, 481, 482, 483, 484, - 487, 488, 494, 495, 496, 497, 498, 506, 507, 522, - 593, 595, 612, 632, 639, 486, 388, 434, 458, 586, - 304, 305, 449, 450, 317, 318, 653, 654, 303, 607, - 640, 604, 652, 634, 443, 381, 0, 0, 384, 284, - 308, 323, 0, 624, 508, 229, 472, 293, 253, 0, - 0, 213, 248, 232, 262, 277, 280, 327, 395, 404, - 433, 439, 299, 274, 246, 465, 243, 491, 525, 526, - 527, 529, 399, 269, 438, 400, 0, 379, 582, 583, - 319, 0, 0, 0, 534, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 420, 0, 0, 0, - 0, 0, 0, 0, 273, 0, 0, 0, 0, 369, - 270, 0, 0, 206, 511, 0, 435, 0, 205, 0, - 493, 255, 380, 377, 590, 285, 276, 272, 252, 320, - 389, 432, 524, 426, 0, 373, 0, 0, 503, 405, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 326, 250, - 328, 204, 417, 504, 289, 0, 0, 0, 0, 2148, - 513, 731, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 240, 0, 0, 247, 0, 0, 0, 354, 363, - 362, 342, 343, 345, 347, 353, 360, 366, 339, 348, - 0, 0, 616, 0, 0, 0, 268, 324, 275, 267, - 587, 0, 0, 0, 0, 0, 0, 603, 0, 0, - 231, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 278, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 2149, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 300, 0, 406, - 260, 0, 459, 0, 0, 0, 636, 0, 0, 0, - 0, 0, 0, 0, 368, 0, 333, 199, 227, 0, - 0, 416, 467, 479, 0, 0, 0, 256, 0, 477, - 430, 611, 235, 287, 464, 437, 475, 445, 290, 0, - 0, 476, 375, 592, 455, 608, 637, 638, 266, 410, - 622, 528, 630, 655, 228, 263, 424, 512, 614, 500, - 401, 588, 589, 332, 499, 298, 203, 372, 643, 226, - 485, 374, 244, 233, 594, 619, 302, 254, 292, 462, - 650, 215, 523, 605, 241, 489, 0, 0, 658, 249, - 510, 617, 606, 217, 601, 509, 397, 329, 330, 216, - 0, 463, 271, 296, 0, 0, 261, 419, 596, 597, - 259, 659, 230, 629, 222, 0, 628, 412, 591, 602, - 398, 386, 221, 600, 396, 385, 337, 358, 359, 283, - 310, 452, 378, 453, 309, 311, 408, 407, 409, 209, - 615, 633, 0, 210, 0, 505, 618, 660, 457, 214, - 236, 237, 239, 0, 282, 286, 294, 297, 306, 307, - 316, 370, 423, 451, 447, 456, 0, 585, 609, 623, - 635, 641, 642, 644, 645, 646, 647, 648, 651, 649, - 411, 314, 501, 336, 376, 0, 0, 429, 478, 242, - 613, 502, 201, 0, 0, 0, 0, 257, 258, 0, - 581, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, - 671, 672, 673, 674, 675, 676, 677, 678, 656, 514, - 520, 515, 516, 517, 518, 519, 0, 521, 0, 0, - 0, 0, 0, 402, 0, 598, 599, 679, 387, 492, - 610, 338, 352, 355, 344, 364, 0, 365, 340, 341, - 346, 349, 350, 351, 356, 357, 361, 367, 251, 212, - 394, 403, 584, 315, 218, 219, 220, 530, 531, 532, - 533, 626, 627, 631, 207, 468, 469, 470, 471, 295, - 621, 312, 474, 473, 334, 335, 382, 454, 546, 548, - 559, 563, 565, 567, 573, 576, 547, 549, 560, 564, - 566, 568, 574, 577, 536, 538, 540, 542, 555, 554, - 551, 579, 580, 557, 562, 541, 553, 558, 571, 578, - 575, 535, 539, 543, 552, 570, 569, 550, 561, 572, - 556, 544, 537, 545, 0, 198, 223, 371, 0, 460, - 291, 657, 625, 490, 620, 208, 225, 0, 265, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 200, 202, 211, 224, 234, 238, 245, 264, 279, 281, - 288, 301, 313, 321, 322, 325, 331, 383, 390, 391, - 392, 393, 413, 414, 415, 418, 421, 422, 425, 427, - 428, 431, 436, 440, 441, 442, 444, 446, 448, 461, - 466, 480, 481, 482, 483, 484, 487, 488, 494, 495, - 496, 497, 498, 506, 507, 522, 593, 595, 612, 632, - 639, 486, 388, 434, 458, 586, 304, 305, 449, 450, - 317, 318, 653, 654, 303, 607, 640, 604, 652, 634, - 443, 381, 0, 0, 384, 284, 308, 323, 0, 624, - 508, 229, 472, 293, 253, 0, 0, 213, 248, 232, - 262, 277, 280, 327, 395, 404, 433, 439, 299, 274, - 246, 465, 243, 491, 525, 526, 527, 529, 399, 269, - 438, 400, 0, 379, 582, 583, 319, 0, 0, 0, - 534, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 420, 0, 0, 0, 0, 0, 0, 0, - 273, 0, 0, 0, 0, 369, 270, 0, 0, 206, - 511, 0, 435, 0, 205, 0, 493, 255, 380, 377, - 590, 285, 276, 272, 252, 320, 389, 432, 524, 426, - 0, 373, 0, 0, 503, 405, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 326, 250, 328, 204, 417, 504, - 289, 0, 0, 0, 0, 2900, 513, 731, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 240, 0, 0, - 247, 0, 0, 0, 354, 363, 362, 342, 343, 345, - 347, 353, 360, 366, 339, 348, 0, 0, 616, 0, - 0, 0, 268, 324, 275, 267, 587, 0, 0, 0, - 0, 0, 0, 603, 0, 0, 231, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 278, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 2901, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 300, 0, 406, 260, 0, 459, 0, - 0, 0, 636, 0, 0, 0, 0, 0, 0, 0, - 368, 0, 333, 199, 227, 0, 0, 416, 467, 479, - 0, 0, 0, 256, 0, 477, 430, 611, 235, 287, - 464, 437, 475, 445, 290, 0, 0, 476, 375, 592, - 455, 608, 637, 638, 266, 410, 622, 528, 630, 655, - 228, 263, 424, 512, 614, 500, 401, 588, 589, 332, - 499, 298, 203, 372, 643, 226, 485, 374, 244, 233, - 594, 619, 302, 254, 292, 462, 650, 215, 523, 605, - 241, 489, 0, 0, 658, 249, 510, 617, 606, 217, - 601, 509, 397, 329, 330, 216, 0, 463, 271, 296, - 0, 0, 261, 419, 596, 597, 259, 659, 230, 629, - 222, 0, 628, 412, 591, 602, 398, 386, 221, 600, - 396, 385, 337, 358, 359, 283, 310, 452, 378, 453, - 309, 311, 408, 407, 409, 209, 615, 633, 0, 210, - 0, 505, 618, 660, 457, 214, 236, 237, 239, 0, - 282, 286, 294, 297, 306, 307, 316, 370, 423, 451, - 447, 456, 0, 585, 609, 623, 635, 641, 642, 644, - 645, 646, 647, 648, 651, 649, 411, 314, 501, 336, - 376, 0, 0, 429, 478, 242, 613, 502, 201, 0, - 0, 0, 0, 257, 258, 0, 581, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 661, 662, 663, 664, - 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, - 675, 676, 677, 678, 656, 514, 520, 515, 516, 517, - 518, 519, 0, 521, 0, 0, 0, 0, 0, 402, - 0, 598, 599, 679, 387, 492, 610, 338, 352, 355, - 344, 364, 0, 365, 340, 341, 346, 349, 350, 351, - 356, 357, 361, 367, 251, 212, 394, 403, 584, 315, - 218, 219, 220, 530, 531, 532, 533, 626, 627, 631, - 207, 468, 469, 470, 471, 295, 621, 312, 474, 473, - 334, 335, 382, 454, 546, 548, 559, 563, 565, 567, - 573, 576, 547, 549, 560, 564, 566, 568, 574, 577, - 536, 538, 540, 542, 555, 554, 551, 579, 580, 557, - 562, 541, 553, 558, 571, 578, 575, 535, 539, 543, - 552, 570, 569, 550, 561, 572, 556, 544, 537, 545, - 0, 198, 223, 371, 0, 460, 291, 657, 625, 490, - 620, 208, 225, 0, 265, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 200, 202, 211, 224, - 234, 238, 245, 264, 279, 281, 288, 301, 313, 321, - 322, 325, 331, 383, 390, 391, 392, 393, 413, 414, - 415, 418, 421, 422, 425, 427, 428, 431, 436, 440, - 441, 442, 444, 446, 448, 461, 466, 480, 481, 482, - 483, 484, 487, 488, 494, 495, 496, 497, 498, 506, - 507, 522, 593, 595, 612, 632, 639, 486, 388, 434, - 458, 586, 304, 305, 449, 450, 317, 318, 653, 654, - 303, 607, 640, 604, 652, 634, 443, 381, 0, 0, - 384, 284, 308, 323, 0, 624, 508, 229, 472, 293, - 253, 0, 0, 213, 248, 232, 262, 277, 280, 327, - 395, 404, 433, 439, 299, 274, 246, 465, 243, 491, - 525, 526, 527, 529, 399, 269, 438, 400, 0, 379, - 582, 583, 319, 0, 0, 0, 534, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 420, 0, - 0, 0, 0, 0, 0, 0, 273, 0, 0, 0, - 0, 369, 270, 0, 0, 206, 511, 0, 435, 0, - 205, 0, 493, 255, 380, 377, 590, 285, 276, 272, - 252, 320, 389, 432, 524, 426, 0, 373, 0, 0, - 503, 405, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 326, 250, 328, 204, 417, 504, 289, 0, 0, 0, - 0, 0, 513, 731, 0, 0, 0, 0, 2883, 0, - 0, 0, 0, 240, 0, 0, 247, 2884, 0, 0, - 354, 363, 362, 342, 343, 345, 347, 353, 360, 366, - 339, 348, 0, 0, 616, 0, 0, 0, 268, 324, - 275, 267, 587, 0, 0, 0, 0, 0, 0, 603, - 0, 0, 231, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 278, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 300, - 0, 406, 260, 0, 459, 0, 0, 0, 636, 0, - 0, 0, 0, 0, 0, 0, 368, 0, 333, 199, - 227, 0, 0, 416, 467, 479, 0, 0, 0, 256, - 0, 477, 430, 611, 235, 287, 464, 437, 475, 445, - 290, 0, 0, 476, 375, 592, 455, 608, 637, 638, - 266, 410, 622, 528, 630, 655, 228, 263, 424, 512, - 614, 500, 401, 588, 589, 332, 499, 298, 203, 372, - 643, 226, 485, 374, 244, 233, 594, 619, 302, 254, - 292, 462, 650, 215, 523, 605, 241, 489, 0, 0, - 658, 249, 510, 617, 606, 217, 601, 509, 397, 329, - 330, 216, 0, 463, 271, 296, 0, 0, 261, 419, - 596, 597, 259, 659, 230, 629, 222, 0, 628, 412, - 591, 602, 398, 386, 221, 600, 396, 385, 337, 358, - 359, 283, 310, 452, 378, 453, 309, 311, 408, 407, - 409, 209, 615, 633, 0, 210, 0, 505, 618, 660, - 457, 214, 236, 237, 239, 0, 282, 286, 294, 297, - 306, 307, 316, 370, 423, 451, 447, 456, 0, 585, - 609, 623, 635, 641, 642, 644, 645, 646, 647, 648, - 651, 649, 411, 314, 501, 336, 376, 0, 0, 429, - 478, 242, 613, 502, 201, 0, 0, 0, 0, 257, - 258, 0, 581, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 661, 662, 663, 664, 665, 666, 667, 668, - 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, - 656, 514, 520, 515, 516, 517, 518, 519, 0, 521, - 0, 0, 0, 0, 0, 402, 0, 598, 599, 679, - 387, 492, 610, 338, 352, 355, 344, 364, 0, 365, - 340, 341, 346, 349, 350, 351, 356, 357, 361, 367, - 251, 212, 394, 403, 584, 315, 218, 219, 220, 530, - 531, 532, 533, 626, 627, 631, 207, 468, 469, 470, - 471, 295, 621, 312, 474, 473, 334, 335, 382, 454, - 546, 548, 559, 563, 565, 567, 573, 576, 547, 549, - 560, 564, 566, 568, 574, 577, 536, 538, 540, 542, - 555, 554, 551, 579, 580, 557, 562, 541, 553, 558, - 571, 578, 575, 535, 539, 543, 552, 570, 569, 550, - 561, 572, 556, 544, 537, 545, 0, 198, 223, 371, - 0, 460, 291, 657, 625, 490, 620, 208, 225, 0, - 265, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 200, 202, 211, 224, 234, 238, 245, 264, - 279, 281, 288, 301, 313, 321, 322, 325, 331, 383, - 390, 391, 392, 393, 413, 414, 415, 418, 421, 422, - 425, 427, 428, 431, 436, 440, 441, 442, 444, 446, - 448, 461, 466, 480, 481, 482, 483, 484, 487, 488, - 494, 495, 496, 497, 498, 506, 507, 522, 593, 595, - 612, 632, 639, 486, 388, 434, 458, 586, 304, 305, - 449, 450, 317, 318, 653, 654, 303, 607, 640, 604, - 652, 634, 443, 381, 0, 0, 384, 284, 308, 323, - 0, 624, 508, 229, 472, 293, 253, 0, 0, 213, - 248, 232, 262, 277, 280, 327, 395, 404, 433, 439, - 299, 274, 246, 465, 243, 491, 525, 526, 527, 529, - 399, 269, 438, 400, 0, 379, 582, 583, 319, 0, - 0, 0, 534, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 420, 0, 0, 0, 0, 0, - 0, 0, 273, 1815, 0, 0, 0, 369, 270, 0, - 0, 206, 511, 0, 435, 0, 205, 0, 493, 255, - 380, 377, 590, 285, 276, 272, 252, 320, 389, 432, - 524, 426, 0, 373, 0, 0, 503, 405, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 326, 250, 328, 204, - 417, 504, 289, 0, 0, 0, 0, 1814, 513, 731, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 240, - 0, 0, 247, 0, 0, 0, 354, 363, 362, 342, - 343, 345, 347, 353, 360, 366, 339, 348, 0, 0, - 616, 0, 0, 0, 268, 324, 275, 267, 587, 0, - 0, 0, 0, 0, 0, 603, 0, 0, 231, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 278, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 300, 0, 406, 260, 0, - 459, 0, 0, 0, 636, 0, 0, 0, 0, 0, - 0, 0, 368, 0, 333, 199, 227, 0, 0, 416, - 467, 479, 0, 0, 0, 256, 0, 477, 430, 611, - 235, 287, 464, 437, 475, 445, 290, 0, 0, 476, - 375, 592, 455, 608, 637, 638, 266, 410, 622, 528, - 630, 655, 228, 263, 424, 512, 614, 500, 401, 588, - 589, 332, 499, 298, 203, 372, 643, 226, 485, 374, - 244, 233, 594, 619, 302, 254, 292, 462, 650, 215, - 523, 605, 241, 489, 0, 0, 658, 249, 510, 617, - 606, 217, 601, 509, 397, 329, 330, 216, 0, 463, - 271, 296, 0, 0, 261, 419, 596, 597, 259, 659, - 230, 629, 222, 0, 628, 412, 591, 602, 398, 386, - 221, 600, 396, 385, 337, 358, 359, 283, 310, 452, - 378, 453, 309, 311, 408, 407, 409, 209, 615, 633, - 0, 210, 0, 505, 618, 660, 457, 214, 236, 237, - 239, 0, 282, 286, 294, 297, 306, 307, 316, 370, - 423, 451, 447, 456, 0, 585, 609, 623, 635, 641, - 642, 644, 645, 646, 647, 648, 651, 649, 411, 314, - 501, 336, 376, 0, 0, 429, 478, 242, 613, 502, - 201, 0, 0, 0, 0, 257, 258, 0, 581, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 661, 662, - 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, - 673, 674, 675, 676, 677, 678, 656, 514, 520, 515, - 516, 517, 518, 519, 0, 521, 0, 0, 0, 0, - 0, 402, 0, 598, 599, 679, 387, 492, 610, 338, - 352, 355, 344, 364, 0, 365, 340, 341, 346, 349, - 350, 351, 356, 357, 361, 367, 251, 212, 394, 403, - 584, 315, 218, 219, 220, 530, 531, 532, 533, 626, - 627, 631, 207, 468, 469, 470, 471, 295, 621, 312, - 474, 473, 334, 335, 382, 454, 546, 548, 559, 563, - 565, 567, 573, 576, 547, 549, 560, 564, 566, 568, - 574, 577, 536, 538, 540, 542, 555, 554, 551, 579, - 580, 557, 562, 541, 553, 558, 571, 578, 575, 535, - 539, 543, 552, 570, 569, 550, 561, 572, 556, 544, - 537, 545, 0, 198, 223, 371, 0, 460, 291, 657, - 625, 490, 620, 208, 225, 0, 265, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 200, 202, - 211, 224, 234, 238, 245, 264, 279, 281, 288, 301, - 313, 321, 322, 325, 331, 383, 390, 391, 392, 393, - 413, 414, 415, 418, 421, 422, 425, 427, 428, 431, - 436, 440, 441, 442, 444, 446, 448, 461, 466, 480, - 481, 482, 483, 484, 487, 488, 494, 495, 496, 497, - 498, 506, 507, 522, 593, 595, 612, 632, 639, 486, - 388, 434, 458, 586, 304, 305, 449, 450, 317, 318, - 653, 654, 303, 607, 640, 604, 652, 634, 443, 381, - 0, 0, 384, 284, 308, 323, 0, 624, 508, 229, - 472, 293, 253, 0, 0, 213, 248, 232, 262, 277, - 280, 327, 395, 404, 433, 439, 299, 274, 246, 465, - 243, 491, 525, 526, 527, 529, 399, 269, 438, 400, - 0, 379, 582, 583, 319, 0, 0, 0, 534, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 420, 0, 0, 0, 0, 0, 0, 0, 273, 0, - 0, 0, 0, 369, 270, 0, 0, 206, 511, 0, - 435, 0, 205, 0, 493, 255, 380, 377, 590, 285, - 276, 272, 252, 320, 389, 432, 524, 426, 0, 373, - 0, 0, 503, 405, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 326, 250, 328, 204, 417, 504, 289, 0, - 0, 0, 0, 0, 513, 733, 734, 735, 0, 0, - 0, 0, 0, 0, 0, 240, 0, 0, 247, 0, - 0, 0, 354, 363, 362, 342, 343, 345, 347, 353, - 360, 366, 339, 348, 0, 0, 616, 0, 0, 0, - 268, 324, 275, 267, 587, 0, 0, 0, 0, 0, - 0, 603, 0, 0, 231, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 278, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 300, 0, 406, 260, 0, 459, 0, 0, 0, - 636, 0, 0, 0, 0, 0, 0, 0, 368, 0, - 333, 199, 227, 0, 0, 416, 467, 479, 0, 0, - 0, 256, 0, 477, 430, 611, 235, 287, 464, 437, - 475, 445, 290, 0, 0, 476, 375, 592, 455, 608, - 637, 638, 266, 410, 622, 528, 630, 655, 228, 263, - 424, 512, 614, 500, 401, 588, 589, 332, 499, 298, - 203, 372, 643, 226, 485, 374, 244, 233, 594, 619, - 302, 254, 292, 462, 650, 215, 523, 605, 241, 489, - 0, 0, 658, 249, 510, 617, 606, 217, 601, 509, - 397, 329, 330, 216, 0, 463, 271, 296, 0, 0, - 261, 419, 596, 597, 259, 659, 230, 629, 222, 0, - 628, 412, 591, 602, 398, 386, 221, 600, 396, 385, - 337, 358, 359, 283, 310, 452, 378, 453, 309, 311, - 408, 407, 409, 209, 615, 633, 0, 210, 0, 505, - 618, 660, 457, 214, 236, 237, 239, 0, 282, 286, - 294, 297, 306, 307, 316, 370, 423, 451, 447, 456, - 0, 585, 609, 623, 635, 641, 642, 644, 645, 646, - 647, 648, 651, 649, 411, 314, 501, 336, 376, 0, - 0, 429, 478, 242, 613, 502, 201, 0, 0, 0, - 0, 257, 258, 0, 581, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 661, 662, 663, 664, 665, 666, - 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, - 677, 678, 656, 514, 520, 515, 516, 517, 518, 519, - 0, 521, 0, 0, 0, 0, 0, 402, 0, 598, - 599, 679, 387, 492, 610, 338, 352, 355, 344, 364, - 0, 365, 340, 341, 346, 349, 350, 351, 356, 357, - 361, 367, 251, 212, 394, 403, 584, 315, 218, 219, - 220, 530, 531, 532, 533, 626, 627, 631, 207, 468, - 469, 470, 471, 295, 621, 312, 474, 473, 334, 335, - 382, 454, 546, 548, 559, 563, 565, 567, 573, 576, - 547, 549, 560, 564, 566, 568, 574, 577, 536, 538, - 540, 542, 555, 554, 551, 579, 580, 557, 562, 541, - 553, 558, 571, 578, 575, 535, 539, 543, 552, 570, - 569, 550, 561, 572, 556, 544, 537, 545, 0, 198, - 223, 371, 0, 460, 291, 657, 625, 490, 620, 208, - 225, 0, 265, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 200, 202, 211, 224, 234, 238, - 245, 264, 279, 281, 288, 301, 313, 321, 322, 325, - 331, 383, 390, 391, 392, 393, 413, 414, 415, 418, - 421, 422, 425, 427, 428, 431, 436, 440, 441, 442, - 444, 446, 448, 461, 466, 480, 481, 482, 483, 484, - 487, 488, 494, 495, 496, 497, 498, 506, 507, 522, - 593, 595, 612, 632, 639, 486, 388, 434, 458, 586, - 304, 305, 449, 450, 317, 318, 653, 654, 303, 607, - 640, 604, 652, 634, 443, 381, 0, 0, 384, 284, - 308, 323, 0, 624, 508, 229, 472, 293, 253, 0, - 0, 213, 248, 232, 262, 277, 280, 327, 395, 404, - 433, 439, 299, 274, 246, 465, 243, 491, 525, 526, - 527, 529, 399, 269, 438, 400, 0, 379, 582, 583, - 319, 0, 0, 0, 534, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 420, 0, 0, 0, - 0, 0, 0, 0, 273, 0, 0, 0, 0, 369, - 270, 0, 0, 206, 511, 0, 435, 0, 205, 0, - 493, 255, 380, 377, 590, 285, 276, 272, 252, 320, - 389, 432, 524, 426, 0, 373, 0, 0, 503, 405, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 326, 250, - 328, 204, 417, 504, 289, 0, 0, 0, 0, 0, - 513, 731, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 240, 0, 0, 247, 0, 0, 0, 354, 363, - 362, 342, 343, 345, 347, 353, 360, 366, 339, 348, - 0, 0, 616, 0, 0, 0, 268, 324, 275, 267, - 587, 0, 0, 0, 0, 0, 0, 603, 0, 0, - 231, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 278, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 300, 0, 406, - 260, 0, 459, 0, 0, 0, 636, 0, 0, 0, - 4092, 0, 0, 0, 368, 0, 333, 199, 227, 0, - 0, 416, 467, 479, 0, 0, 0, 256, 0, 477, - 430, 611, 235, 287, 464, 437, 475, 445, 290, 0, - 0, 476, 375, 592, 455, 608, 637, 638, 266, 410, - 622, 528, 630, 655, 228, 263, 424, 512, 614, 500, - 401, 588, 589, 332, 499, 298, 203, 372, 643, 226, - 485, 374, 244, 233, 594, 619, 302, 254, 292, 462, - 650, 215, 523, 605, 241, 489, 0, 0, 658, 249, - 510, 617, 606, 217, 601, 509, 397, 329, 330, 216, - 0, 463, 271, 296, 0, 0, 261, 419, 596, 597, - 259, 659, 230, 629, 222, 0, 628, 412, 591, 602, - 398, 386, 221, 600, 396, 385, 337, 358, 359, 283, - 310, 452, 378, 453, 309, 311, 408, 407, 409, 209, - 615, 633, 0, 210, 0, 505, 618, 660, 457, 214, - 236, 237, 239, 0, 282, 286, 294, 297, 306, 307, - 316, 370, 423, 451, 447, 456, 0, 585, 609, 623, - 635, 641, 642, 644, 645, 646, 647, 648, 651, 649, - 411, 314, 501, 336, 376, 0, 0, 429, 478, 242, - 613, 502, 201, 0, 0, 0, 0, 257, 258, 0, - 581, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, - 671, 672, 673, 674, 675, 676, 677, 678, 656, 514, - 520, 515, 516, 517, 518, 519, 0, 521, 0, 0, - 0, 0, 0, 402, 0, 598, 599, 679, 387, 492, - 610, 338, 352, 355, 344, 364, 0, 365, 340, 341, - 346, 349, 350, 351, 356, 357, 361, 367, 251, 212, - 394, 403, 584, 315, 218, 219, 220, 530, 531, 532, - 533, 626, 627, 631, 207, 468, 469, 470, 471, 295, - 621, 312, 474, 473, 334, 335, 382, 454, 546, 548, - 559, 563, 565, 567, 573, 576, 547, 549, 560, 564, - 566, 568, 574, 577, 536, 538, 540, 542, 555, 554, - 551, 579, 580, 557, 562, 541, 553, 558, 571, 578, - 575, 535, 539, 543, 552, 570, 569, 550, 561, 572, - 556, 544, 537, 545, 0, 198, 223, 371, 0, 460, - 291, 657, 625, 490, 620, 208, 225, 0, 265, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 200, 202, 211, 224, 234, 238, 245, 264, 279, 281, - 288, 301, 313, 321, 322, 325, 331, 383, 390, 391, - 392, 393, 413, 414, 415, 418, 421, 422, 425, 427, - 428, 431, 436, 440, 441, 442, 444, 446, 448, 461, - 466, 480, 481, 482, 483, 484, 487, 488, 494, 495, - 496, 497, 498, 506, 507, 522, 593, 595, 612, 632, - 639, 486, 388, 434, 458, 586, 304, 305, 449, 450, - 317, 318, 653, 654, 303, 607, 640, 604, 652, 634, - 443, 381, 0, 0, 384, 284, 308, 323, 0, 624, - 508, 229, 472, 293, 253, 0, 0, 213, 248, 232, - 262, 277, 280, 327, 395, 404, 433, 439, 299, 274, - 246, 465, 243, 491, 525, 526, 527, 529, 399, 269, - 438, 400, 0, 379, 582, 583, 319, 0, 0, 0, - 534, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 420, 0, 0, 0, 0, 0, 0, 0, - 273, 0, 0, 0, 0, 369, 270, 0, 0, 206, - 511, 0, 435, 0, 205, 0, 493, 255, 380, 377, - 590, 285, 276, 272, 252, 320, 389, 432, 524, 426, - 0, 373, 0, 0, 503, 405, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 326, 250, 328, 204, 417, 504, - 289, 0, 0, 0, 0, 1977, 513, 196, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 240, 0, 0, - 247, 0, 0, 0, 354, 363, 362, 342, 343, 345, - 347, 353, 360, 366, 339, 348, 0, 0, 616, 0, - 0, 0, 268, 324, 275, 267, 587, 0, 0, 0, - 0, 0, 0, 603, 0, 0, 231, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 278, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 300, 0, 406, 260, 0, 459, 0, - 0, 0, 636, 0, 0, 0, 0, 0, 0, 0, - 368, 0, 333, 199, 227, 0, 0, 416, 467, 479, - 0, 0, 0, 256, 0, 477, 430, 611, 235, 287, - 464, 437, 475, 445, 290, 0, 0, 476, 375, 592, - 455, 608, 637, 638, 266, 410, 622, 528, 630, 655, - 228, 263, 424, 512, 614, 500, 401, 588, 589, 332, - 499, 298, 203, 372, 643, 226, 485, 374, 244, 233, - 594, 619, 302, 254, 292, 462, 650, 215, 523, 605, - 241, 489, 0, 0, 658, 249, 510, 617, 606, 217, - 601, 509, 397, 329, 330, 216, 0, 463, 271, 296, - 0, 0, 261, 419, 596, 597, 259, 659, 230, 629, - 222, 0, 628, 412, 591, 602, 398, 386, 221, 600, - 396, 385, 337, 358, 359, 283, 310, 452, 378, 453, - 309, 311, 408, 407, 409, 209, 615, 633, 0, 210, - 0, 505, 618, 660, 457, 214, 236, 237, 239, 0, - 282, 286, 294, 297, 306, 307, 316, 370, 423, 451, - 447, 456, 0, 585, 609, 623, 635, 641, 642, 644, - 645, 646, 647, 648, 651, 649, 411, 314, 501, 336, - 376, 0, 0, 429, 478, 242, 613, 502, 201, 0, - 0, 0, 0, 257, 258, 0, 581, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 661, 662, 663, 664, - 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, - 675, 676, 677, 678, 656, 514, 520, 515, 516, 517, - 518, 519, 0, 521, 0, 0, 0, 0, 0, 402, - 0, 598, 599, 679, 387, 492, 610, 338, 352, 355, - 344, 364, 0, 365, 340, 341, 346, 349, 350, 351, - 356, 357, 361, 367, 251, 212, 394, 403, 584, 315, - 218, 219, 220, 530, 531, 532, 533, 626, 627, 631, - 207, 468, 469, 470, 471, 295, 621, 312, 474, 473, - 334, 335, 382, 454, 546, 548, 559, 563, 565, 567, - 573, 576, 547, 549, 560, 564, 566, 568, 574, 577, - 536, 538, 540, 542, 555, 554, 551, 579, 580, 557, - 562, 541, 553, 558, 571, 578, 575, 535, 539, 543, - 552, 570, 569, 550, 561, 572, 556, 544, 537, 545, - 0, 198, 223, 371, 0, 460, 291, 657, 625, 490, - 620, 208, 225, 0, 265, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 200, 202, 211, 224, - 234, 238, 245, 264, 279, 281, 288, 301, 313, 321, - 322, 325, 331, 383, 390, 391, 392, 393, 413, 414, - 415, 418, 421, 422, 425, 427, 428, 431, 436, 440, - 441, 442, 444, 446, 448, 461, 466, 480, 481, 482, - 483, 484, 487, 488, 494, 495, 496, 497, 498, 506, - 507, 522, 593, 595, 612, 632, 639, 486, 388, 434, - 458, 586, 304, 305, 449, 450, 317, 318, 653, 654, - 303, 607, 640, 604, 652, 634, 443, 381, 0, 0, - 384, 284, 308, 323, 0, 624, 508, 229, 472, 293, - 253, 0, 0, 213, 248, 232, 262, 277, 280, 327, - 395, 404, 433, 439, 299, 274, 246, 465, 243, 491, - 525, 526, 527, 529, 399, 269, 438, 400, 0, 379, - 582, 583, 319, 0, 0, 0, 534, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 420, 0, - 0, 0, 0, 0, 0, 0, 273, 0, 0, 0, - 0, 369, 270, 0, 0, 206, 511, 0, 435, 0, - 205, 0, 493, 255, 380, 377, 590, 285, 276, 272, - 252, 320, 389, 432, 524, 426, 0, 373, 0, 0, - 503, 405, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 326, 250, 328, 204, 417, 504, 289, 0, 0, 0, - 0, 0, 513, 731, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 240, 0, 0, 247, 0, 0, 0, - 354, 363, 362, 342, 343, 345, 347, 353, 360, 366, - 339, 348, 0, 0, 616, 0, 0, 0, 268, 324, - 275, 267, 587, 0, 0, 0, 0, 0, 0, 603, - 0, 0, 231, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 278, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 300, - 0, 406, 260, 0, 459, 0, 0, 0, 636, 0, - 0, 0, 3748, 0, 0, 0, 368, 0, 333, 199, - 227, 0, 0, 416, 467, 479, 0, 0, 0, 256, - 0, 477, 430, 611, 235, 287, 464, 437, 475, 445, - 290, 0, 0, 476, 375, 592, 455, 608, 637, 638, - 266, 410, 622, 528, 630, 655, 228, 263, 424, 512, - 614, 500, 401, 588, 589, 332, 499, 298, 203, 372, - 643, 226, 485, 374, 244, 233, 594, 619, 302, 254, - 292, 462, 650, 215, 523, 605, 241, 489, 0, 0, - 658, 249, 510, 617, 606, 217, 601, 509, 397, 329, - 330, 216, 0, 463, 271, 296, 0, 0, 261, 419, - 596, 597, 259, 659, 230, 629, 222, 0, 628, 412, - 591, 602, 398, 386, 221, 600, 396, 385, 337, 358, - 359, 283, 310, 452, 378, 453, 309, 311, 408, 407, - 409, 209, 615, 633, 0, 210, 0, 505, 618, 660, - 457, 214, 236, 237, 239, 0, 282, 286, 294, 297, - 306, 307, 316, 370, 423, 451, 447, 456, 0, 585, - 609, 623, 635, 641, 642, 644, 645, 646, 647, 648, - 651, 649, 411, 314, 501, 336, 376, 0, 0, 429, - 478, 242, 613, 502, 201, 0, 0, 0, 0, 257, - 258, 0, 581, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 661, 662, 663, 664, 665, 666, 667, 668, - 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, - 656, 514, 520, 515, 516, 517, 518, 519, 0, 521, - 0, 0, 0, 0, 0, 402, 0, 598, 599, 679, - 387, 492, 610, 338, 352, 355, 344, 364, 0, 365, - 340, 341, 346, 349, 350, 351, 356, 357, 361, 367, - 251, 212, 394, 403, 584, 315, 218, 219, 220, 530, - 531, 532, 533, 626, 627, 631, 207, 468, 469, 470, - 471, 295, 621, 312, 474, 473, 334, 335, 382, 454, - 546, 548, 559, 563, 565, 567, 573, 576, 547, 549, - 560, 564, 566, 568, 574, 577, 536, 538, 540, 542, - 555, 554, 551, 579, 580, 557, 562, 541, 553, 558, - 571, 578, 575, 535, 539, 543, 552, 570, 569, 550, - 561, 572, 556, 544, 537, 545, 0, 198, 223, 371, - 0, 460, 291, 657, 625, 490, 620, 208, 225, 0, - 265, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 200, 202, 211, 224, 234, 238, 245, 264, - 279, 281, 288, 301, 313, 321, 322, 325, 331, 383, - 390, 391, 392, 393, 413, 414, 415, 418, 421, 422, - 425, 427, 428, 431, 436, 440, 441, 442, 444, 446, - 448, 461, 466, 480, 481, 482, 483, 484, 487, 488, - 494, 495, 496, 497, 498, 506, 507, 522, 593, 595, - 612, 632, 639, 486, 388, 434, 458, 586, 304, 305, - 449, 450, 317, 318, 653, 654, 303, 607, 640, 604, - 652, 634, 443, 381, 0, 0, 384, 284, 308, 323, - 0, 624, 508, 229, 472, 293, 253, 0, 0, 213, - 248, 232, 262, 277, 280, 327, 395, 404, 433, 439, - 299, 274, 246, 465, 243, 491, 525, 526, 527, 529, - 399, 269, 438, 400, 0, 379, 582, 583, 319, 0, - 0, 0, 534, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 420, 0, 0, 0, 0, 0, - 0, 0, 273, 0, 0, 0, 0, 369, 270, 0, - 0, 206, 511, 0, 435, 0, 205, 0, 493, 255, - 380, 377, 590, 285, 276, 272, 252, 320, 389, 432, - 524, 426, 0, 373, 0, 0, 503, 405, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 326, 250, 328, 204, - 417, 504, 289, 0, 95, 0, 0, 0, 513, 731, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 240, - 0, 0, 247, 0, 0, 0, 354, 363, 362, 342, - 343, 345, 347, 353, 360, 366, 339, 348, 0, 0, - 616, 0, 0, 0, 268, 324, 275, 267, 587, 0, - 0, 0, 0, 0, 0, 603, 0, 0, 231, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 278, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 300, 0, 406, 260, 0, - 459, 0, 0, 0, 636, 0, 0, 0, 0, 0, - 0, 0, 368, 0, 333, 199, 227, 0, 0, 416, - 467, 479, 0, 0, 0, 256, 0, 477, 430, 611, - 235, 287, 464, 437, 475, 445, 290, 0, 0, 476, - 375, 592, 455, 608, 637, 638, 266, 410, 622, 528, - 630, 655, 228, 263, 424, 512, 614, 500, 401, 588, - 589, 332, 499, 298, 203, 372, 643, 226, 485, 374, - 244, 233, 594, 619, 302, 254, 292, 462, 650, 215, - 523, 605, 241, 489, 0, 0, 658, 249, 510, 617, - 606, 217, 601, 509, 397, 329, 330, 216, 0, 463, - 271, 296, 0, 0, 261, 419, 596, 597, 259, 659, - 230, 629, 222, 0, 628, 412, 591, 602, 398, 386, - 221, 600, 396, 385, 337, 358, 359, 283, 310, 452, - 378, 453, 309, 311, 408, 407, 409, 209, 615, 633, - 0, 210, 0, 505, 618, 660, 457, 214, 236, 237, - 239, 0, 282, 286, 294, 297, 306, 307, 316, 370, - 423, 451, 447, 456, 0, 585, 609, 623, 635, 641, - 642, 644, 645, 646, 647, 648, 651, 649, 411, 314, - 501, 336, 376, 0, 0, 429, 478, 242, 613, 502, - 201, 0, 0, 0, 0, 257, 258, 0, 581, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 661, 662, - 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, - 673, 674, 675, 676, 677, 678, 656, 514, 520, 515, - 516, 517, 518, 519, 0, 521, 0, 0, 0, 0, - 0, 402, 0, 598, 599, 679, 387, 492, 610, 338, - 352, 355, 344, 364, 0, 365, 340, 341, 346, 349, - 350, 351, 356, 357, 361, 367, 251, 212, 394, 403, - 584, 315, 218, 219, 220, 530, 531, 532, 533, 626, - 627, 631, 207, 468, 469, 470, 471, 295, 621, 312, - 474, 473, 334, 335, 382, 454, 546, 548, 559, 563, - 565, 567, 573, 576, 547, 549, 560, 564, 566, 568, - 574, 577, 536, 538, 540, 542, 555, 554, 551, 579, - 580, 557, 562, 541, 553, 558, 571, 578, 575, 535, - 539, 543, 552, 570, 569, 550, 561, 572, 556, 544, - 537, 545, 0, 198, 223, 371, 0, 460, 291, 657, - 625, 490, 620, 208, 225, 0, 265, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 200, 202, - 211, 224, 234, 238, 245, 264, 279, 281, 288, 301, - 313, 321, 322, 325, 331, 383, 390, 391, 392, 393, - 413, 414, 415, 418, 421, 422, 425, 427, 428, 431, - 436, 440, 441, 442, 444, 446, 448, 461, 466, 480, - 481, 482, 483, 484, 487, 488, 494, 495, 496, 497, - 498, 506, 507, 522, 593, 595, 612, 632, 639, 486, - 388, 434, 458, 586, 304, 305, 449, 450, 317, 318, - 653, 654, 303, 607, 640, 604, 652, 634, 443, 381, - 0, 0, 384, 284, 308, 323, 0, 624, 508, 229, - 472, 293, 253, 0, 0, 213, 248, 232, 262, 277, - 280, 327, 395, 404, 433, 439, 299, 274, 246, 465, - 243, 491, 525, 526, 527, 529, 399, 269, 438, 400, - 0, 379, 582, 583, 319, 0, 0, 0, 534, 0, - 0, 0, 0, 2445, 0, 0, 0, 0, 0, 0, - 420, 0, 0, 0, 0, 0, 0, 0, 273, 0, - 0, 0, 0, 369, 270, 0, 0, 206, 511, 0, - 435, 0, 205, 0, 493, 255, 380, 377, 590, 285, - 276, 272, 252, 320, 389, 432, 524, 426, 0, 373, - 0, 0, 503, 405, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 326, 250, 328, 204, 417, 504, 289, 0, - 0, 0, 0, 0, 513, 196, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 240, 0, 0, 247, 0, - 0, 0, 354, 363, 362, 342, 343, 345, 347, 353, - 360, 366, 339, 348, 0, 0, 616, 0, 0, 0, - 268, 324, 275, 267, 587, 0, 0, 0, 0, 0, - 0, 603, 0, 0, 231, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 278, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 300, 0, 406, 260, 0, 459, 0, 0, 0, - 636, 0, 0, 0, 0, 0, 0, 0, 368, 0, - 333, 199, 227, 0, 0, 416, 467, 479, 0, 0, - 0, 256, 0, 477, 430, 611, 235, 287, 464, 437, - 475, 445, 290, 0, 0, 476, 375, 592, 455, 608, - 637, 638, 266, 410, 622, 528, 630, 655, 228, 263, - 424, 512, 614, 500, 401, 588, 589, 332, 499, 298, - 203, 372, 643, 226, 485, 374, 244, 233, 594, 619, - 302, 254, 292, 462, 650, 215, 523, 605, 241, 489, - 0, 0, 658, 249, 510, 617, 606, 217, 601, 509, - 397, 329, 330, 216, 0, 463, 271, 296, 0, 0, - 261, 419, 596, 597, 259, 659, 230, 629, 222, 0, - 628, 412, 591, 602, 398, 386, 221, 600, 396, 385, - 337, 358, 359, 283, 310, 452, 378, 453, 309, 311, - 408, 407, 409, 209, 615, 633, 0, 210, 0, 505, - 618, 660, 457, 214, 236, 237, 239, 0, 282, 286, - 294, 297, 306, 307, 316, 370, 423, 451, 447, 456, - 0, 585, 609, 623, 635, 641, 642, 644, 645, 646, - 647, 648, 651, 649, 411, 314, 501, 336, 376, 0, - 0, 429, 478, 242, 613, 502, 201, 0, 0, 0, - 0, 257, 258, 0, 581, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 661, 662, 663, 664, 665, 666, - 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, - 677, 678, 656, 514, 520, 515, 516, 517, 518, 519, - 0, 521, 0, 0, 0, 0, 0, 402, 0, 598, - 599, 679, 387, 492, 610, 338, 352, 355, 344, 364, - 0, 365, 340, 341, 346, 349, 350, 351, 356, 357, - 361, 367, 251, 212, 394, 403, 584, 315, 218, 219, - 220, 530, 531, 532, 533, 626, 627, 631, 207, 468, - 469, 470, 471, 295, 621, 312, 474, 473, 334, 335, - 382, 454, 546, 548, 559, 563, 565, 567, 573, 576, - 547, 549, 560, 564, 566, 568, 574, 577, 536, 538, - 540, 542, 555, 554, 551, 579, 580, 557, 562, 541, - 553, 558, 571, 578, 575, 535, 539, 543, 552, 570, - 569, 550, 561, 572, 556, 544, 537, 545, 0, 198, - 223, 371, 0, 460, 291, 657, 625, 490, 620, 208, - 225, 0, 265, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 200, 202, 211, 224, 234, 238, - 245, 264, 279, 281, 288, 301, 313, 321, 322, 325, - 331, 383, 390, 391, 392, 393, 413, 414, 415, 418, - 421, 422, 425, 427, 428, 431, 436, 440, 441, 442, - 444, 446, 448, 461, 466, 480, 481, 482, 483, 484, - 487, 488, 494, 495, 496, 497, 498, 506, 507, 522, - 593, 595, 612, 632, 639, 486, 388, 434, 458, 586, - 304, 305, 449, 450, 317, 318, 653, 654, 303, 607, - 640, 604, 652, 634, 443, 381, 0, 0, 384, 284, - 308, 323, 0, 624, 508, 229, 472, 293, 253, 0, - 0, 213, 248, 232, 262, 277, 280, 327, 395, 404, - 433, 439, 299, 274, 246, 465, 243, 491, 525, 526, - 527, 529, 399, 269, 438, 400, 0, 379, 582, 583, - 319, 0, 0, 0, 534, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 420, 0, 0, 0, - 0, 0, 0, 0, 273, 0, 0, 0, 0, 369, - 270, 0, 0, 206, 511, 0, 435, 0, 205, 0, - 493, 255, 380, 377, 590, 285, 276, 272, 252, 320, - 389, 432, 524, 426, 0, 373, 0, 0, 503, 405, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 326, 250, - 328, 204, 417, 504, 289, 0, 0, 0, 0, 1796, - 513, 731, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 240, 0, 0, 247, 0, 0, 0, 354, 363, - 362, 342, 343, 345, 347, 353, 360, 366, 339, 348, - 0, 0, 616, 0, 0, 0, 268, 324, 275, 267, - 587, 0, 0, 0, 0, 0, 0, 603, 0, 0, - 231, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 278, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 300, 0, 406, - 260, 0, 459, 0, 0, 0, 636, 0, 0, 0, - 0, 0, 0, 0, 368, 0, 333, 199, 227, 0, - 0, 416, 467, 479, 0, 0, 0, 256, 0, 477, - 430, 611, 235, 287, 464, 437, 475, 445, 290, 0, - 0, 476, 375, 592, 455, 608, 637, 638, 266, 410, - 622, 528, 630, 655, 228, 263, 424, 512, 614, 500, - 401, 588, 589, 332, 499, 298, 203, 372, 643, 226, - 485, 374, 244, 233, 594, 619, 302, 254, 292, 462, - 650, 215, 523, 605, 241, 489, 0, 0, 658, 249, - 510, 617, 606, 217, 601, 509, 397, 329, 330, 216, - 0, 463, 271, 296, 0, 0, 261, 419, 596, 597, - 259, 659, 230, 629, 222, 0, 628, 412, 591, 602, - 398, 386, 221, 600, 396, 385, 337, 358, 359, 283, - 310, 452, 378, 453, 309, 311, 408, 407, 409, 209, - 615, 633, 0, 210, 0, 505, 618, 660, 457, 214, - 236, 237, 239, 0, 282, 286, 294, 297, 306, 307, - 316, 370, 423, 451, 447, 456, 0, 585, 609, 623, - 635, 641, 642, 644, 645, 646, 647, 648, 651, 649, - 411, 314, 501, 336, 376, 0, 0, 429, 478, 242, - 613, 502, 201, 0, 0, 0, 0, 257, 258, 0, - 581, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, - 671, 672, 673, 674, 675, 676, 677, 678, 656, 514, - 520, 515, 516, 517, 518, 519, 0, 521, 0, 0, - 0, 0, 0, 402, 0, 598, 599, 679, 387, 492, - 610, 338, 352, 355, 344, 364, 0, 365, 340, 341, - 346, 349, 350, 351, 356, 357, 361, 367, 251, 212, - 394, 403, 584, 315, 218, 219, 220, 530, 531, 532, - 533, 626, 627, 631, 207, 468, 469, 470, 471, 295, - 621, 312, 474, 473, 334, 335, 382, 454, 546, 548, - 559, 563, 565, 567, 573, 576, 547, 549, 560, 564, - 566, 568, 574, 577, 536, 538, 540, 542, 555, 554, - 551, 579, 580, 557, 562, 541, 553, 558, 571, 578, - 575, 535, 539, 543, 552, 570, 569, 550, 561, 572, - 556, 544, 537, 545, 0, 198, 223, 371, 0, 460, - 291, 657, 625, 490, 620, 208, 225, 0, 265, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 200, 202, 211, 224, 234, 238, 245, 264, 279, 281, - 288, 301, 313, 321, 322, 325, 331, 383, 390, 391, - 392, 393, 413, 414, 415, 418, 421, 422, 425, 427, - 428, 431, 436, 440, 441, 442, 444, 446, 448, 461, - 466, 480, 481, 482, 483, 484, 487, 488, 494, 495, - 496, 497, 498, 506, 507, 522, 593, 595, 612, 632, - 639, 486, 388, 434, 458, 586, 304, 305, 449, 450, - 317, 318, 653, 654, 303, 607, 640, 604, 652, 634, - 443, 381, 0, 0, 384, 284, 308, 323, 0, 624, - 508, 229, 472, 293, 253, 0, 0, 213, 248, 232, - 262, 277, 280, 327, 395, 404, 433, 439, 299, 274, - 246, 465, 243, 491, 525, 526, 527, 529, 399, 269, - 438, 400, 0, 379, 582, 583, 319, 0, 0, 0, - 534, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 420, 0, 0, 0, 0, 0, 0, 0, - 273, 0, 0, 0, 0, 369, 270, 0, 0, 206, - 511, 0, 435, 0, 205, 0, 493, 255, 380, 377, - 590, 285, 276, 272, 252, 320, 389, 432, 524, 426, - 0, 373, 0, 0, 503, 405, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 326, 250, 328, 204, 417, 504, - 289, 0, 0, 0, 0, 0, 513, 196, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 240, 0, 0, - 247, 0, 0, 0, 354, 363, 362, 342, 343, 345, - 347, 353, 360, 366, 339, 348, 0, 0, 616, 0, - 0, 0, 268, 324, 275, 267, 587, 0, 0, 0, - 0, 0, 0, 603, 0, 0, 231, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 278, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 300, 0, 406, 260, 0, 459, 0, - 0, 0, 636, 0, 0, 0, 0, 0, 0, 0, - 368, 0, 333, 199, 227, 0, 0, 416, 467, 479, - 0, 0, 0, 256, 0, 477, 430, 611, 235, 287, - 464, 437, 475, 445, 290, 0, 0, 476, 375, 592, - 455, 608, 637, 638, 266, 410, 622, 528, 630, 655, - 228, 263, 424, 512, 614, 500, 401, 588, 589, 332, - 499, 298, 203, 372, 643, 226, 485, 374, 244, 233, - 594, 619, 302, 254, 292, 462, 650, 215, 523, 605, - 241, 489, 0, 0, 658, 249, 510, 617, 606, 217, - 601, 509, 397, 329, 330, 216, 0, 463, 271, 296, - 0, 0, 261, 419, 596, 597, 259, 659, 230, 629, - 222, 0, 628, 412, 591, 602, 398, 386, 221, 600, - 396, 385, 337, 358, 359, 283, 310, 452, 378, 453, - 309, 311, 408, 407, 409, 209, 615, 633, 0, 210, - 0, 505, 618, 660, 457, 214, 236, 237, 239, 0, - 282, 286, 294, 297, 306, 307, 316, 370, 423, 451, - 447, 456, 0, 585, 609, 623, 635, 641, 642, 644, - 645, 646, 647, 648, 651, 649, 411, 314, 501, 336, - 376, 0, 0, 429, 478, 242, 613, 502, 201, 0, - 0, 0, 0, 257, 258, 0, 581, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 661, 662, 663, 664, - 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, - 675, 676, 677, 678, 656, 514, 520, 515, 516, 517, - 518, 519, 0, 521, 0, 0, 0, 0, 0, 402, - 0, 598, 599, 679, 387, 492, 610, 338, 352, 355, - 344, 364, 0, 365, 340, 341, 346, 349, 350, 351, - 356, 357, 361, 367, 251, 212, 394, 403, 584, 315, - 218, 219, 220, 530, 531, 532, 533, 626, 627, 631, - 207, 468, 469, 470, 471, 295, 621, 312, 474, 473, - 334, 335, 382, 454, 546, 548, 559, 563, 565, 567, - 573, 576, 547, 549, 560, 564, 566, 568, 574, 577, - 536, 538, 540, 542, 555, 554, 551, 579, 580, 557, - 562, 541, 553, 558, 571, 578, 575, 535, 539, 543, - 552, 570, 569, 550, 561, 572, 556, 544, 537, 545, - 0, 198, 223, 371, 2095, 460, 291, 657, 625, 490, - 620, 208, 225, 0, 265, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 200, 202, 211, 224, - 234, 238, 245, 264, 279, 281, 288, 301, 313, 321, - 322, 325, 331, 383, 390, 391, 392, 393, 413, 414, - 415, 418, 421, 422, 425, 427, 428, 431, 436, 440, - 441, 442, 444, 446, 448, 461, 466, 480, 481, 482, - 483, 484, 487, 488, 494, 495, 496, 497, 498, 506, - 507, 522, 593, 595, 612, 632, 639, 486, 388, 434, - 458, 586, 304, 305, 449, 450, 317, 318, 653, 654, - 303, 607, 640, 604, 652, 634, 443, 381, 0, 0, - 384, 284, 308, 323, 0, 624, 508, 229, 472, 293, - 253, 0, 0, 213, 248, 232, 262, 277, 280, 327, - 395, 404, 433, 439, 299, 274, 246, 465, 243, 491, - 525, 526, 527, 529, 399, 269, 438, 400, 0, 379, - 582, 583, 319, 0, 0, 0, 534, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 420, 0, - 0, 0, 0, 0, 0, 0, 273, 0, 0, 0, - 0, 369, 270, 0, 0, 206, 511, 0, 435, 0, - 205, 0, 493, 255, 380, 377, 590, 285, 276, 272, - 252, 320, 389, 432, 524, 426, 0, 373, 0, 0, - 503, 405, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 326, 250, 328, 204, 417, 504, 289, 0, 0, 0, - 0, 2086, 513, 731, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 240, 0, 0, 247, 0, 0, 0, - 354, 363, 362, 342, 343, 345, 347, 353, 360, 366, - 339, 348, 0, 0, 616, 0, 0, 0, 268, 324, - 275, 267, 587, 0, 0, 0, 0, 0, 0, 603, - 0, 0, 231, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 278, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 300, - 0, 406, 260, 0, 459, 0, 0, 0, 636, 0, - 0, 0, 0, 0, 0, 0, 368, 0, 333, 199, - 227, 0, 0, 416, 467, 479, 0, 0, 0, 256, - 0, 477, 430, 611, 235, 287, 464, 437, 475, 445, - 290, 0, 0, 476, 375, 592, 455, 608, 637, 638, - 266, 410, 622, 528, 630, 655, 228, 263, 424, 512, - 614, 500, 401, 588, 589, 332, 499, 298, 203, 372, - 643, 226, 485, 374, 244, 233, 594, 619, 302, 254, - 292, 462, 650, 215, 523, 605, 241, 489, 0, 0, - 658, 249, 510, 617, 606, 217, 601, 509, 397, 329, - 330, 216, 0, 463, 271, 296, 0, 0, 261, 419, - 596, 597, 259, 659, 230, 629, 222, 0, 628, 412, - 591, 602, 398, 386, 221, 600, 396, 385, 337, 358, - 359, 283, 310, 452, 378, 453, 309, 311, 408, 407, - 409, 209, 615, 633, 0, 210, 0, 505, 618, 660, - 457, 214, 236, 237, 239, 0, 282, 286, 294, 297, - 306, 307, 316, 370, 423, 451, 447, 456, 0, 585, - 609, 623, 635, 641, 642, 644, 645, 646, 647, 648, - 651, 649, 411, 314, 501, 336, 376, 0, 0, 429, - 478, 242, 613, 502, 201, 0, 0, 0, 0, 257, - 258, 0, 581, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 661, 662, 663, 664, 665, 666, 667, 668, - 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, - 656, 514, 520, 515, 516, 517, 518, 519, 0, 521, - 0, 0, 0, 0, 0, 402, 0, 598, 599, 679, - 387, 492, 610, 338, 352, 355, 344, 364, 0, 365, - 340, 341, 346, 349, 350, 351, 356, 357, 361, 367, - 251, 212, 394, 403, 584, 315, 218, 219, 220, 530, - 531, 532, 533, 626, 627, 631, 207, 468, 469, 470, - 471, 295, 621, 312, 474, 473, 334, 335, 382, 454, - 546, 548, 559, 563, 565, 567, 573, 576, 547, 549, - 560, 564, 566, 568, 574, 577, 536, 538, 540, 542, - 555, 554, 551, 579, 580, 557, 562, 541, 553, 558, - 571, 578, 575, 535, 539, 543, 552, 570, 569, 550, - 561, 572, 556, 544, 537, 545, 0, 198, 223, 371, - 0, 460, 291, 657, 625, 490, 620, 208, 225, 0, - 265, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 200, 202, 211, 224, 234, 238, 245, 264, - 279, 281, 288, 301, 313, 321, 322, 325, 331, 383, - 390, 391, 392, 393, 413, 414, 415, 418, 421, 422, - 425, 427, 428, 431, 436, 440, 441, 442, 444, 446, - 448, 461, 466, 480, 481, 482, 483, 484, 487, 488, - 494, 495, 496, 497, 498, 506, 507, 522, 593, 595, - 612, 632, 639, 486, 388, 434, 458, 586, 304, 305, - 449, 450, 317, 318, 653, 654, 303, 607, 640, 604, - 652, 634, 443, 381, 0, 0, 384, 284, 308, 323, - 0, 624, 508, 229, 472, 293, 253, 0, 0, 213, - 248, 232, 262, 277, 280, 327, 395, 404, 433, 439, - 299, 274, 246, 465, 243, 491, 525, 526, 527, 529, - 399, 269, 438, 400, 0, 379, 582, 583, 319, 0, - 0, 0, 534, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 420, 0, 0, 0, 0, 0, - 0, 0, 273, 0, 0, 0, 0, 369, 270, 0, - 1944, 206, 511, 0, 435, 0, 205, 0, 493, 255, - 380, 377, 590, 285, 276, 272, 252, 320, 389, 432, - 524, 426, 0, 373, 0, 0, 503, 405, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 326, 250, 328, 204, - 417, 504, 289, 0, 0, 0, 0, 0, 513, 731, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 240, - 0, 0, 247, 0, 0, 0, 354, 363, 362, 342, - 343, 345, 347, 353, 360, 366, 339, 348, 0, 0, - 616, 0, 0, 0, 268, 324, 275, 267, 587, 0, - 0, 0, 0, 0, 0, 603, 0, 0, 231, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 278, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 300, 0, 406, 260, 0, - 459, 0, 0, 0, 636, 0, 0, 0, 0, 0, - 0, 0, 368, 0, 333, 199, 227, 0, 0, 416, - 467, 479, 0, 0, 0, 256, 0, 477, 430, 611, - 235, 287, 464, 437, 475, 445, 290, 0, 0, 476, - 375, 592, 455, 608, 637, 638, 266, 410, 622, 528, - 630, 655, 228, 263, 424, 512, 614, 500, 401, 588, - 589, 332, 499, 298, 203, 372, 643, 226, 485, 374, - 244, 233, 594, 619, 302, 254, 292, 462, 650, 215, - 523, 605, 241, 489, 0, 0, 658, 249, 510, 617, - 606, 217, 601, 509, 397, 329, 330, 216, 0, 463, - 271, 296, 0, 0, 261, 419, 596, 597, 259, 659, - 230, 629, 222, 0, 628, 412, 591, 602, 398, 386, - 221, 600, 396, 385, 337, 358, 359, 283, 310, 452, - 378, 453, 309, 311, 408, 407, 409, 209, 615, 633, - 0, 210, 0, 505, 618, 660, 457, 214, 236, 237, - 239, 0, 282, 286, 294, 297, 306, 307, 316, 370, - 423, 451, 447, 456, 0, 585, 609, 623, 635, 641, - 642, 644, 645, 646, 647, 648, 651, 649, 411, 314, - 501, 336, 376, 0, 0, 429, 478, 242, 613, 502, - 201, 0, 0, 0, 0, 257, 258, 0, 581, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 661, 662, - 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, - 673, 674, 675, 676, 677, 678, 656, 514, 520, 515, - 516, 517, 518, 519, 0, 521, 0, 0, 0, 0, - 0, 402, 0, 598, 599, 679, 387, 492, 610, 338, - 352, 355, 344, 364, 0, 365, 340, 341, 346, 349, - 350, 351, 356, 357, 361, 367, 251, 212, 394, 403, - 584, 315, 218, 219, 220, 530, 531, 532, 533, 626, - 627, 631, 207, 468, 469, 470, 471, 295, 621, 312, - 474, 473, 334, 335, 382, 454, 546, 548, 559, 563, - 565, 567, 573, 576, 547, 549, 560, 564, 566, 568, - 574, 577, 536, 538, 540, 542, 555, 554, 551, 579, - 580, 557, 562, 541, 553, 558, 571, 578, 575, 535, - 539, 543, 552, 570, 569, 550, 561, 572, 556, 544, - 537, 545, 0, 198, 223, 371, 0, 460, 291, 657, - 625, 490, 620, 208, 225, 0, 265, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 200, 202, - 211, 224, 234, 238, 245, 264, 279, 281, 288, 301, - 313, 321, 322, 325, 331, 383, 390, 391, 392, 393, - 413, 414, 415, 418, 421, 422, 425, 427, 428, 431, - 436, 440, 441, 442, 444, 446, 448, 461, 466, 480, - 481, 482, 483, 484, 487, 488, 494, 495, 496, 497, - 498, 506, 507, 522, 593, 595, 612, 632, 639, 486, - 388, 434, 458, 586, 304, 305, 449, 450, 317, 318, - 653, 654, 303, 607, 640, 604, 652, 634, 443, 381, - 0, 0, 384, 284, 308, 323, 0, 624, 508, 229, - 472, 293, 253, 0, 0, 213, 248, 232, 262, 277, - 280, 327, 395, 404, 433, 439, 299, 274, 246, 465, - 243, 491, 525, 526, 527, 529, 399, 269, 438, 400, - 0, 379, 582, 583, 319, 0, 0, 0, 534, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 420, 0, 0, 0, 0, 0, 0, 0, 273, 0, - 0, 0, 0, 369, 270, 0, 1942, 206, 511, 0, - 435, 0, 205, 0, 493, 255, 380, 377, 590, 285, - 276, 272, 252, 320, 389, 432, 524, 426, 0, 373, - 0, 0, 503, 405, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 326, 250, 328, 204, 417, 504, 289, 0, - 0, 0, 0, 0, 513, 731, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 240, 0, 0, 247, 0, - 0, 0, 354, 363, 362, 342, 343, 345, 347, 353, - 360, 366, 339, 348, 0, 0, 616, 0, 0, 0, - 268, 324, 275, 267, 587, 0, 0, 0, 0, 0, - 0, 603, 0, 0, 231, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 278, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 300, 0, 406, 260, 0, 459, 0, 0, 0, - 636, 0, 0, 0, 0, 0, 0, 0, 368, 0, - 333, 199, 227, 0, 0, 416, 467, 479, 0, 0, - 0, 256, 0, 477, 430, 611, 235, 287, 464, 437, - 475, 445, 290, 0, 0, 476, 375, 592, 455, 608, - 637, 638, 266, 410, 622, 528, 630, 655, 228, 263, - 424, 512, 614, 500, 401, 588, 589, 332, 499, 298, - 203, 372, 643, 226, 485, 374, 244, 233, 594, 619, - 302, 254, 292, 462, 650, 215, 523, 605, 241, 489, - 0, 0, 658, 249, 510, 617, 606, 217, 601, 509, - 397, 329, 330, 216, 0, 463, 271, 296, 0, 0, - 261, 419, 596, 597, 259, 659, 230, 629, 222, 0, - 628, 412, 591, 602, 398, 386, 221, 600, 396, 385, - 337, 358, 359, 283, 310, 452, 378, 453, 309, 311, - 408, 407, 409, 209, 615, 633, 0, 210, 0, 505, - 618, 660, 457, 214, 236, 237, 239, 0, 282, 286, - 294, 297, 306, 307, 316, 370, 423, 451, 447, 456, - 0, 585, 609, 623, 635, 641, 642, 644, 645, 646, - 647, 648, 651, 649, 411, 314, 501, 336, 376, 0, - 0, 429, 478, 242, 613, 502, 201, 0, 0, 0, - 0, 257, 258, 0, 581, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 661, 662, 663, 664, 665, 666, - 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, - 677, 678, 656, 514, 520, 515, 516, 517, 518, 519, - 0, 521, 0, 0, 0, 0, 0, 402, 0, 598, - 599, 679, 387, 492, 610, 338, 352, 355, 344, 364, - 0, 365, 340, 341, 346, 349, 350, 351, 356, 357, - 361, 367, 251, 212, 394, 403, 584, 315, 218, 219, - 220, 530, 531, 532, 533, 626, 627, 631, 207, 468, - 469, 470, 471, 295, 621, 312, 474, 473, 334, 335, - 382, 454, 546, 548, 559, 563, 565, 567, 573, 576, - 547, 549, 560, 564, 566, 568, 574, 577, 536, 538, - 540, 542, 555, 554, 551, 579, 580, 557, 562, 541, - 553, 558, 571, 578, 575, 535, 539, 543, 552, 570, - 569, 550, 561, 572, 556, 544, 537, 545, 0, 198, - 223, 371, 0, 460, 291, 657, 625, 490, 620, 208, - 225, 0, 265, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 200, 202, 211, 224, 234, 238, - 245, 264, 279, 281, 288, 301, 313, 321, 322, 325, - 331, 383, 390, 391, 392, 393, 413, 414, 415, 418, - 421, 422, 425, 427, 428, 431, 436, 440, 441, 442, - 444, 446, 448, 461, 466, 480, 481, 482, 483, 484, - 487, 488, 494, 495, 496, 497, 498, 506, 507, 522, - 593, 595, 612, 632, 639, 486, 388, 434, 458, 586, - 304, 305, 449, 450, 317, 318, 653, 654, 303, 607, - 640, 604, 652, 634, 443, 381, 0, 0, 384, 284, - 308, 323, 0, 624, 508, 229, 472, 293, 253, 0, - 0, 213, 248, 232, 262, 277, 280, 327, 395, 404, - 433, 439, 299, 274, 246, 465, 243, 491, 525, 526, - 527, 529, 399, 269, 438, 400, 0, 379, 582, 583, - 319, 0, 0, 0, 534, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 420, 0, 0, 0, - 0, 0, 0, 0, 273, 0, 0, 0, 0, 369, - 270, 0, 1940, 206, 511, 0, 435, 0, 205, 0, - 493, 255, 380, 377, 590, 285, 276, 272, 252, 320, - 389, 432, 524, 426, 0, 373, 0, 0, 503, 405, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 326, 250, - 328, 204, 417, 504, 289, 0, 0, 0, 0, 0, - 513, 731, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 240, 0, 0, 247, 0, 0, 0, 354, 363, - 362, 342, 343, 345, 347, 353, 360, 366, 339, 348, - 0, 0, 616, 0, 0, 0, 268, 324, 275, 267, - 587, 0, 0, 0, 0, 0, 0, 603, 0, 0, - 231, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 278, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 300, 0, 406, - 260, 0, 459, 0, 0, 0, 636, 0, 0, 0, - 0, 0, 0, 0, 368, 0, 333, 199, 227, 0, - 0, 416, 467, 479, 0, 0, 0, 256, 0, 477, - 430, 611, 235, 287, 464, 437, 475, 445, 290, 0, - 0, 476, 375, 592, 455, 608, 637, 638, 266, 410, - 622, 528, 630, 655, 228, 263, 424, 512, 614, 500, - 401, 588, 589, 332, 499, 298, 203, 372, 643, 226, - 485, 374, 244, 233, 594, 619, 302, 254, 292, 462, - 650, 215, 523, 605, 241, 489, 0, 0, 658, 249, - 510, 617, 606, 217, 601, 509, 397, 329, 330, 216, - 0, 463, 271, 296, 0, 0, 261, 419, 596, 597, - 259, 659, 230, 629, 222, 0, 628, 412, 591, 602, - 398, 386, 221, 600, 396, 385, 337, 358, 359, 283, - 310, 452, 378, 453, 309, 311, 408, 407, 409, 209, - 615, 633, 0, 210, 0, 505, 618, 660, 457, 214, - 236, 237, 239, 0, 282, 286, 294, 297, 306, 307, - 316, 370, 423, 451, 447, 456, 0, 585, 609, 623, - 635, 641, 642, 644, 645, 646, 647, 648, 651, 649, - 411, 314, 501, 336, 376, 0, 0, 429, 478, 242, - 613, 502, 201, 0, 0, 0, 0, 257, 258, 0, - 581, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, - 671, 672, 673, 674, 675, 676, 677, 678, 656, 514, - 520, 515, 516, 517, 518, 519, 0, 521, 0, 0, - 0, 0, 0, 402, 0, 598, 599, 679, 387, 492, - 610, 338, 352, 355, 344, 364, 0, 365, 340, 341, - 346, 349, 350, 351, 356, 357, 361, 367, 251, 212, - 394, 403, 584, 315, 218, 219, 220, 530, 531, 532, - 533, 626, 627, 631, 207, 468, 469, 470, 471, 295, - 621, 312, 474, 473, 334, 335, 382, 454, 546, 548, - 559, 563, 565, 567, 573, 576, 547, 549, 560, 564, - 566, 568, 574, 577, 536, 538, 540, 542, 555, 554, - 551, 579, 580, 557, 562, 541, 553, 558, 571, 578, - 575, 535, 539, 543, 552, 570, 569, 550, 561, 572, - 556, 544, 537, 545, 0, 198, 223, 371, 0, 460, - 291, 657, 625, 490, 620, 208, 225, 0, 265, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 200, 202, 211, 224, 234, 238, 245, 264, 279, 281, - 288, 301, 313, 321, 322, 325, 331, 383, 390, 391, - 392, 393, 413, 414, 415, 418, 421, 422, 425, 427, - 428, 431, 436, 440, 441, 442, 444, 446, 448, 461, - 466, 480, 481, 482, 483, 484, 487, 488, 494, 495, - 496, 497, 498, 506, 507, 522, 593, 595, 612, 632, - 639, 486, 388, 434, 458, 586, 304, 305, 449, 450, - 317, 318, 653, 654, 303, 607, 640, 604, 652, 634, - 443, 381, 0, 0, 384, 284, 308, 323, 0, 624, - 508, 229, 472, 293, 253, 0, 0, 213, 248, 232, - 262, 277, 280, 327, 395, 404, 433, 439, 299, 274, - 246, 465, 243, 491, 525, 526, 527, 529, 399, 269, - 438, 400, 0, 379, 582, 583, 319, 0, 0, 0, - 534, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 420, 0, 0, 0, 0, 0, 0, 0, - 273, 0, 0, 0, 0, 369, 270, 0, 1938, 206, - 511, 0, 435, 0, 205, 0, 493, 255, 380, 377, - 590, 285, 276, 272, 252, 320, 389, 432, 524, 426, - 0, 373, 0, 0, 503, 405, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 326, 250, 328, 204, 417, 504, - 289, 0, 0, 0, 0, 0, 513, 731, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 240, 0, 0, - 247, 0, 0, 0, 354, 363, 362, 342, 343, 345, - 347, 353, 360, 366, 339, 348, 0, 0, 616, 0, - 0, 0, 268, 324, 275, 267, 587, 0, 0, 0, - 0, 0, 0, 603, 0, 0, 231, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 278, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 300, 0, 406, 260, 0, 459, 0, - 0, 0, 636, 0, 0, 0, 0, 0, 0, 0, - 368, 0, 333, 199, 227, 0, 0, 416, 467, 479, - 0, 0, 0, 256, 0, 477, 430, 611, 235, 287, - 464, 437, 475, 445, 290, 0, 0, 476, 375, 592, - 455, 608, 637, 638, 266, 410, 622, 528, 630, 655, - 228, 263, 424, 512, 614, 500, 401, 588, 589, 332, - 499, 298, 203, 372, 643, 226, 485, 374, 244, 233, - 594, 619, 302, 254, 292, 462, 650, 215, 523, 605, - 241, 489, 0, 0, 658, 249, 510, 617, 606, 217, - 601, 509, 397, 329, 330, 216, 0, 463, 271, 296, - 0, 0, 261, 419, 596, 597, 259, 659, 230, 629, - 222, 0, 628, 412, 591, 602, 398, 386, 221, 600, - 396, 385, 337, 358, 359, 283, 310, 452, 378, 453, - 309, 311, 408, 407, 409, 209, 615, 633, 0, 210, - 0, 505, 618, 660, 457, 214, 236, 237, 239, 0, - 282, 286, 294, 297, 306, 307, 316, 370, 423, 451, - 447, 456, 0, 585, 609, 623, 635, 641, 642, 644, - 645, 646, 647, 648, 651, 649, 411, 314, 501, 336, - 376, 0, 0, 429, 478, 242, 613, 502, 201, 0, - 0, 0, 0, 257, 258, 0, 581, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 661, 662, 663, 664, - 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, - 675, 676, 677, 678, 656, 514, 520, 515, 516, 517, - 518, 519, 0, 521, 0, 0, 0, 0, 0, 402, - 0, 598, 599, 679, 387, 492, 610, 338, 352, 355, - 344, 364, 0, 365, 340, 341, 346, 349, 350, 351, - 356, 357, 361, 367, 251, 212, 394, 403, 584, 315, - 218, 219, 220, 530, 531, 532, 533, 626, 627, 631, - 207, 468, 469, 470, 471, 295, 621, 312, 474, 473, - 334, 335, 382, 454, 546, 548, 559, 563, 565, 567, - 573, 576, 547, 549, 560, 564, 566, 568, 574, 577, - 536, 538, 540, 542, 555, 554, 551, 579, 580, 557, - 562, 541, 553, 558, 571, 578, 575, 535, 539, 543, - 552, 570, 569, 550, 561, 572, 556, 544, 537, 545, - 0, 198, 223, 371, 0, 460, 291, 657, 625, 490, - 620, 208, 225, 0, 265, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 200, 202, 211, 224, - 234, 238, 245, 264, 279, 281, 288, 301, 313, 321, - 322, 325, 331, 383, 390, 391, 392, 393, 413, 414, - 415, 418, 421, 422, 425, 427, 428, 431, 436, 440, - 441, 442, 444, 446, 448, 461, 466, 480, 481, 482, - 483, 484, 487, 488, 494, 495, 496, 497, 498, 506, - 507, 522, 593, 595, 612, 632, 639, 486, 388, 434, - 458, 586, 304, 305, 449, 450, 317, 318, 653, 654, - 303, 607, 640, 604, 652, 634, 443, 381, 0, 0, - 384, 284, 308, 323, 0, 624, 508, 229, 472, 293, - 253, 0, 0, 213, 248, 232, 262, 277, 280, 327, - 395, 404, 433, 439, 299, 274, 246, 465, 243, 491, - 525, 526, 527, 529, 399, 269, 438, 400, 0, 379, - 582, 583, 319, 0, 0, 0, 534, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 420, 0, - 0, 0, 0, 0, 0, 0, 273, 0, 0, 0, - 0, 369, 270, 0, 1936, 206, 511, 0, 435, 0, - 205, 0, 493, 255, 380, 377, 590, 285, 276, 272, - 252, 320, 389, 432, 524, 426, 0, 373, 0, 0, - 503, 405, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 326, 250, 328, 204, 417, 504, 289, 0, 0, 0, - 0, 0, 513, 731, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 240, 0, 0, 247, 0, 0, 0, - 354, 363, 362, 342, 343, 345, 347, 353, 360, 366, - 339, 348, 0, 0, 616, 0, 0, 0, 268, 324, - 275, 267, 587, 0, 0, 0, 0, 0, 0, 603, - 0, 0, 231, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 278, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 300, - 0, 406, 260, 0, 459, 0, 0, 0, 636, 0, - 0, 0, 0, 0, 0, 0, 368, 0, 333, 199, - 227, 0, 0, 416, 467, 479, 0, 0, 0, 256, - 0, 477, 430, 611, 235, 287, 464, 437, 475, 445, - 290, 0, 0, 476, 375, 592, 455, 608, 637, 638, - 266, 410, 622, 528, 630, 655, 228, 263, 424, 512, - 614, 500, 401, 588, 589, 332, 499, 298, 203, 372, - 643, 226, 485, 374, 244, 233, 594, 619, 302, 254, - 292, 462, 650, 215, 523, 605, 241, 489, 0, 0, - 658, 249, 510, 617, 606, 217, 601, 509, 397, 329, - 330, 216, 0, 463, 271, 296, 0, 0, 261, 419, - 596, 597, 259, 659, 230, 629, 222, 0, 628, 412, - 591, 602, 398, 386, 221, 600, 396, 385, 337, 358, - 359, 283, 310, 452, 378, 453, 309, 311, 408, 407, - 409, 209, 615, 633, 0, 210, 0, 505, 618, 660, - 457, 214, 236, 237, 239, 0, 282, 286, 294, 297, - 306, 307, 316, 370, 423, 451, 447, 456, 0, 585, - 609, 623, 635, 641, 642, 644, 645, 646, 647, 648, - 651, 649, 411, 314, 501, 336, 376, 0, 0, 429, - 478, 242, 613, 502, 201, 0, 0, 0, 0, 257, - 258, 0, 581, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 661, 662, 663, 664, 665, 666, 667, 668, - 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, - 656, 514, 520, 515, 516, 517, 518, 519, 0, 521, - 0, 0, 0, 0, 0, 402, 0, 598, 599, 679, - 387, 492, 610, 338, 352, 355, 344, 364, 0, 365, - 340, 341, 346, 349, 350, 351, 356, 357, 361, 367, - 251, 212, 394, 403, 584, 315, 218, 219, 220, 530, - 531, 532, 533, 626, 627, 631, 207, 468, 469, 470, - 471, 295, 621, 312, 474, 473, 334, 335, 382, 454, - 546, 548, 559, 563, 565, 567, 573, 576, 547, 549, - 560, 564, 566, 568, 574, 577, 536, 538, 540, 542, - 555, 554, 551, 579, 580, 557, 562, 541, 553, 558, - 571, 578, 575, 535, 539, 543, 552, 570, 569, 550, - 561, 572, 556, 544, 537, 545, 0, 198, 223, 371, - 0, 460, 291, 657, 625, 490, 620, 208, 225, 0, - 265, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 200, 202, 211, 224, 234, 238, 245, 264, - 279, 281, 288, 301, 313, 321, 322, 325, 331, 383, - 390, 391, 392, 393, 413, 414, 415, 418, 421, 422, - 425, 427, 428, 431, 436, 440, 441, 442, 444, 446, - 448, 461, 466, 480, 481, 482, 483, 484, 487, 488, - 494, 495, 496, 497, 498, 506, 507, 522, 593, 595, - 612, 632, 639, 486, 388, 434, 458, 586, 304, 305, - 449, 450, 317, 318, 653, 654, 303, 607, 640, 604, - 652, 634, 443, 381, 0, 0, 384, 284, 308, 323, - 0, 624, 508, 229, 472, 293, 253, 0, 0, 213, - 248, 232, 262, 277, 280, 327, 395, 404, 433, 439, - 299, 274, 246, 465, 243, 491, 525, 526, 527, 529, - 399, 269, 438, 400, 0, 379, 582, 583, 319, 0, - 0, 0, 534, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 420, 0, 0, 0, 0, 0, - 0, 0, 273, 0, 0, 0, 0, 369, 270, 0, - 1932, 206, 511, 0, 435, 0, 205, 0, 493, 255, - 380, 377, 590, 285, 276, 272, 252, 320, 389, 432, - 524, 426, 0, 373, 0, 0, 503, 405, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 326, 250, 328, 204, - 417, 504, 289, 0, 0, 0, 0, 0, 513, 731, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 240, - 0, 0, 247, 0, 0, 0, 354, 363, 362, 342, - 343, 345, 347, 353, 360, 366, 339, 348, 0, 0, - 616, 0, 0, 0, 268, 324, 275, 267, 587, 0, - 0, 0, 0, 0, 0, 603, 0, 0, 231, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 278, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 300, 0, 406, 260, 0, - 459, 0, 0, 0, 636, 0, 0, 0, 0, 0, - 0, 0, 368, 0, 333, 199, 227, 0, 0, 416, - 467, 479, 0, 0, 0, 256, 0, 477, 430, 611, - 235, 287, 464, 437, 475, 445, 290, 0, 0, 476, - 375, 592, 455, 608, 637, 638, 266, 410, 622, 528, - 630, 655, 228, 263, 424, 512, 614, 500, 401, 588, - 589, 332, 499, 298, 203, 372, 643, 226, 485, 374, - 244, 233, 594, 619, 302, 254, 292, 462, 650, 215, - 523, 605, 241, 489, 0, 0, 658, 249, 510, 617, - 606, 217, 601, 509, 397, 329, 330, 216, 0, 463, - 271, 296, 0, 0, 261, 419, 596, 597, 259, 659, - 230, 629, 222, 0, 628, 412, 591, 602, 398, 386, - 221, 600, 396, 385, 337, 358, 359, 283, 310, 452, - 378, 453, 309, 311, 408, 407, 409, 209, 615, 633, - 0, 210, 0, 505, 618, 660, 457, 214, 236, 237, - 239, 0, 282, 286, 294, 297, 306, 307, 316, 370, - 423, 451, 447, 456, 0, 585, 609, 623, 635, 641, - 642, 644, 645, 646, 647, 648, 651, 649, 411, 314, - 501, 336, 376, 0, 0, 429, 478, 242, 613, 502, - 201, 0, 0, 0, 0, 257, 258, 0, 581, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 661, 662, - 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, - 673, 674, 675, 676, 677, 678, 656, 514, 520, 515, - 516, 517, 518, 519, 0, 521, 0, 0, 0, 0, - 0, 402, 0, 598, 599, 679, 387, 492, 610, 338, - 352, 355, 344, 364, 0, 365, 340, 341, 346, 349, - 350, 351, 356, 357, 361, 367, 251, 212, 394, 403, - 584, 315, 218, 219, 220, 530, 531, 532, 533, 626, - 627, 631, 207, 468, 469, 470, 471, 295, 621, 312, - 474, 473, 334, 335, 382, 454, 546, 548, 559, 563, - 565, 567, 573, 576, 547, 549, 560, 564, 566, 568, - 574, 577, 536, 538, 540, 542, 555, 554, 551, 579, - 580, 557, 562, 541, 553, 558, 571, 578, 575, 535, - 539, 543, 552, 570, 569, 550, 561, 572, 556, 544, - 537, 545, 0, 198, 223, 371, 0, 460, 291, 657, - 625, 490, 620, 208, 225, 0, 265, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 200, 202, - 211, 224, 234, 238, 245, 264, 279, 281, 288, 301, - 313, 321, 322, 325, 331, 383, 390, 391, 392, 393, - 413, 414, 415, 418, 421, 422, 425, 427, 428, 431, - 436, 440, 441, 442, 444, 446, 448, 461, 466, 480, - 481, 482, 483, 484, 487, 488, 494, 495, 496, 497, - 498, 506, 507, 522, 593, 595, 612, 632, 639, 486, - 388, 434, 458, 586, 304, 305, 449, 450, 317, 318, - 653, 654, 303, 607, 640, 604, 652, 634, 443, 381, - 0, 0, 384, 284, 308, 323, 0, 624, 508, 229, - 472, 293, 253, 0, 0, 213, 248, 232, 262, 277, - 280, 327, 395, 404, 433, 439, 299, 274, 246, 465, - 243, 491, 525, 526, 527, 529, 399, 269, 438, 400, - 0, 379, 582, 583, 319, 0, 0, 0, 534, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 420, 0, 0, 0, 0, 0, 0, 0, 273, 0, - 0, 0, 0, 369, 270, 0, 1930, 206, 511, 0, - 435, 0, 205, 0, 493, 255, 380, 377, 590, 285, - 276, 272, 252, 320, 389, 432, 524, 426, 0, 373, - 0, 0, 503, 405, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 326, 250, 328, 204, 417, 504, 289, 0, - 0, 0, 0, 0, 513, 731, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 240, 0, 0, 247, 0, - 0, 0, 354, 363, 362, 342, 343, 345, 347, 353, - 360, 366, 339, 348, 0, 0, 616, 0, 0, 0, - 268, 324, 275, 267, 587, 0, 0, 0, 0, 0, - 0, 603, 0, 0, 231, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 278, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 300, 0, 406, 260, 0, 459, 0, 0, 0, - 636, 0, 0, 0, 0, 0, 0, 0, 368, 0, - 333, 199, 227, 0, 0, 416, 467, 479, 0, 0, - 0, 256, 0, 477, 430, 611, 235, 287, 464, 437, - 475, 445, 290, 0, 0, 476, 375, 592, 455, 608, - 637, 638, 266, 410, 622, 528, 630, 655, 228, 263, - 424, 512, 614, 500, 401, 588, 589, 332, 499, 298, - 203, 372, 643, 226, 485, 374, 244, 233, 594, 619, - 302, 254, 292, 462, 650, 215, 523, 605, 241, 489, - 0, 0, 658, 249, 510, 617, 606, 217, 601, 509, - 397, 329, 330, 216, 0, 463, 271, 296, 0, 0, - 261, 419, 596, 597, 259, 659, 230, 629, 222, 0, - 628, 412, 591, 602, 398, 386, 221, 600, 396, 385, - 337, 358, 359, 283, 310, 452, 378, 453, 309, 311, - 408, 407, 409, 209, 615, 633, 0, 210, 0, 505, - 618, 660, 457, 214, 236, 237, 239, 0, 282, 286, - 294, 297, 306, 307, 316, 370, 423, 451, 447, 456, - 0, 585, 609, 623, 635, 641, 642, 644, 645, 646, - 647, 648, 651, 649, 411, 314, 501, 336, 376, 0, - 0, 429, 478, 242, 613, 502, 201, 0, 0, 0, - 0, 257, 258, 0, 581, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 661, 662, 663, 664, 665, 666, - 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, - 677, 678, 656, 514, 520, 515, 516, 517, 518, 519, - 0, 521, 0, 0, 0, 0, 0, 402, 0, 598, - 599, 679, 387, 492, 610, 338, 352, 355, 344, 364, - 0, 365, 340, 341, 346, 349, 350, 351, 356, 357, - 361, 367, 251, 212, 394, 403, 584, 315, 218, 219, - 220, 530, 531, 532, 533, 626, 627, 631, 207, 468, - 469, 470, 471, 295, 621, 312, 474, 473, 334, 335, - 382, 454, 546, 548, 559, 563, 565, 567, 573, 576, - 547, 549, 560, 564, 566, 568, 574, 577, 536, 538, - 540, 542, 555, 554, 551, 579, 580, 557, 562, 541, - 553, 558, 571, 578, 575, 535, 539, 543, 552, 570, - 569, 550, 561, 572, 556, 544, 537, 545, 0, 198, - 223, 371, 0, 460, 291, 657, 625, 490, 620, 208, - 225, 0, 265, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 200, 202, 211, 224, 234, 238, - 245, 264, 279, 281, 288, 301, 313, 321, 322, 325, - 331, 383, 390, 391, 392, 393, 413, 414, 415, 418, - 421, 422, 425, 427, 428, 431, 436, 440, 441, 442, - 444, 446, 448, 461, 466, 480, 481, 482, 483, 484, - 487, 488, 494, 495, 496, 497, 498, 506, 507, 522, - 593, 595, 612, 632, 639, 486, 388, 434, 458, 586, - 304, 305, 449, 450, 317, 318, 653, 654, 303, 607, - 640, 604, 652, 634, 443, 381, 0, 0, 384, 284, - 308, 323, 0, 624, 508, 229, 472, 293, 253, 0, - 0, 213, 248, 232, 262, 277, 280, 327, 395, 404, - 433, 439, 299, 274, 246, 465, 243, 491, 525, 526, - 527, 529, 399, 269, 438, 400, 0, 379, 582, 583, - 319, 0, 0, 0, 534, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 420, 0, 0, 0, - 0, 0, 0, 0, 273, 0, 0, 0, 0, 369, - 270, 0, 1928, 206, 511, 0, 435, 0, 205, 0, - 493, 255, 380, 377, 590, 285, 276, 272, 252, 320, - 389, 432, 524, 426, 0, 373, 0, 0, 503, 405, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 326, 250, - 328, 204, 417, 504, 289, 0, 0, 0, 0, 0, - 513, 731, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 240, 0, 0, 247, 0, 0, 0, 354, 363, - 362, 342, 343, 345, 347, 353, 360, 366, 339, 348, - 0, 0, 616, 0, 0, 0, 268, 324, 275, 267, - 587, 0, 0, 0, 0, 0, 0, 603, 0, 0, - 231, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 278, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 300, 0, 406, - 260, 0, 459, 0, 0, 0, 636, 0, 0, 0, - 0, 0, 0, 0, 368, 0, 333, 199, 227, 0, - 0, 416, 467, 479, 0, 0, 0, 256, 0, 477, - 430, 611, 235, 287, 464, 437, 475, 445, 290, 0, - 0, 476, 375, 592, 455, 608, 637, 638, 266, 410, - 622, 528, 630, 655, 228, 263, 424, 512, 614, 500, - 401, 588, 589, 332, 499, 298, 203, 372, 643, 226, - 485, 374, 244, 233, 594, 619, 302, 254, 292, 462, - 650, 215, 523, 605, 241, 489, 0, 0, 658, 249, - 510, 617, 606, 217, 601, 509, 397, 329, 330, 216, - 0, 463, 271, 296, 0, 0, 261, 419, 596, 597, - 259, 659, 230, 629, 222, 0, 628, 412, 591, 602, - 398, 386, 221, 600, 396, 385, 337, 358, 359, 283, - 310, 452, 378, 453, 309, 311, 408, 407, 409, 209, - 615, 633, 0, 210, 0, 505, 618, 660, 457, 214, - 236, 237, 239, 0, 282, 286, 294, 297, 306, 307, - 316, 370, 423, 451, 447, 456, 0, 585, 609, 623, - 635, 641, 642, 644, 645, 646, 647, 648, 651, 649, - 411, 314, 501, 336, 376, 0, 0, 429, 478, 242, - 613, 502, 201, 0, 0, 0, 0, 257, 258, 0, - 581, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, - 671, 672, 673, 674, 675, 676, 677, 678, 656, 514, - 520, 515, 516, 517, 518, 519, 0, 521, 0, 0, - 0, 0, 0, 402, 0, 598, 599, 679, 387, 492, - 610, 338, 352, 355, 344, 364, 0, 365, 340, 341, - 346, 349, 350, 351, 356, 357, 361, 367, 251, 212, - 394, 403, 584, 315, 218, 219, 220, 530, 531, 532, - 533, 626, 627, 631, 207, 468, 469, 470, 471, 295, - 621, 312, 474, 473, 334, 335, 382, 454, 546, 548, - 559, 563, 565, 567, 573, 576, 547, 549, 560, 564, - 566, 568, 574, 577, 536, 538, 540, 542, 555, 554, - 551, 579, 580, 557, 562, 541, 553, 558, 571, 578, - 575, 535, 539, 543, 552, 570, 569, 550, 561, 572, - 556, 544, 537, 545, 0, 198, 223, 371, 0, 460, - 291, 657, 625, 490, 620, 208, 225, 0, 265, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 200, 202, 211, 224, 234, 238, 245, 264, 279, 281, - 288, 301, 313, 321, 322, 325, 331, 383, 390, 391, - 392, 393, 413, 414, 415, 418, 421, 422, 425, 427, - 428, 431, 436, 440, 441, 442, 444, 446, 448, 461, - 466, 480, 481, 482, 483, 484, 487, 488, 494, 495, - 496, 497, 498, 506, 507, 522, 593, 595, 612, 632, - 639, 486, 388, 434, 458, 586, 304, 305, 449, 450, - 317, 318, 653, 654, 303, 607, 640, 604, 652, 634, - 443, 381, 0, 0, 384, 284, 308, 323, 0, 624, - 508, 229, 472, 293, 253, 0, 0, 213, 248, 232, - 262, 277, 280, 327, 395, 404, 433, 439, 299, 274, - 246, 465, 243, 491, 525, 526, 527, 529, 399, 269, - 438, 400, 0, 379, 582, 583, 319, 0, 0, 0, - 534, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 420, 0, 0, 0, 0, 0, 0, 0, - 273, 0, 0, 0, 0, 369, 270, 0, 0, 206, - 511, 0, 435, 0, 205, 0, 493, 255, 380, 377, - 590, 285, 276, 272, 252, 320, 389, 432, 524, 426, - 0, 373, 0, 0, 503, 405, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 326, 250, 328, 204, 417, 504, - 289, 0, 1903, 0, 0, 0, 513, 731, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 240, 0, 0, - 247, 0, 0, 0, 354, 363, 362, 342, 343, 345, - 347, 353, 360, 366, 339, 348, 0, 0, 616, 0, - 0, 0, 268, 324, 275, 267, 587, 0, 0, 0, - 0, 0, 0, 603, 0, 0, 231, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 278, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 300, 0, 406, 260, 0, 459, 0, - 0, 0, 636, 0, 0, 0, 0, 0, 0, 0, - 368, 0, 333, 199, 227, 0, 0, 416, 467, 479, - 0, 0, 0, 256, 0, 477, 430, 611, 235, 287, - 464, 437, 475, 445, 290, 0, 0, 476, 375, 592, - 455, 608, 637, 638, 266, 410, 622, 528, 630, 655, - 228, 263, 424, 512, 614, 500, 401, 588, 589, 332, - 499, 298, 203, 372, 643, 226, 485, 374, 244, 233, - 594, 619, 302, 254, 292, 462, 650, 215, 523, 605, - 241, 489, 0, 0, 658, 249, 510, 617, 606, 217, - 601, 509, 397, 329, 330, 216, 0, 463, 271, 296, - 0, 0, 261, 419, 596, 597, 259, 659, 230, 629, - 222, 0, 628, 412, 591, 602, 398, 386, 221, 600, - 396, 385, 337, 358, 359, 283, 310, 452, 378, 453, - 309, 311, 408, 407, 409, 209, 615, 633, 0, 210, - 0, 505, 618, 660, 457, 214, 236, 237, 239, 0, - 282, 286, 294, 297, 306, 307, 316, 370, 423, 451, - 447, 456, 0, 585, 609, 623, 635, 641, 642, 644, - 645, 646, 647, 648, 651, 649, 411, 314, 501, 336, - 376, 0, 0, 429, 478, 242, 613, 502, 201, 0, - 0, 0, 0, 257, 258, 0, 581, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 661, 662, 663, 664, - 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, - 675, 676, 677, 678, 656, 514, 520, 515, 516, 517, - 518, 519, 0, 521, 0, 0, 0, 0, 0, 402, - 0, 598, 599, 679, 387, 492, 610, 338, 352, 355, - 344, 364, 0, 365, 340, 341, 346, 349, 350, 351, - 356, 357, 361, 367, 251, 212, 394, 403, 584, 315, - 218, 219, 220, 530, 531, 532, 533, 626, 627, 631, - 207, 468, 469, 470, 471, 295, 621, 312, 474, 473, - 334, 335, 382, 454, 546, 548, 559, 563, 565, 567, - 573, 576, 547, 549, 560, 564, 566, 568, 574, 577, - 536, 538, 540, 542, 555, 554, 551, 579, 580, 557, - 562, 541, 553, 558, 571, 578, 575, 535, 539, 543, - 552, 570, 569, 550, 561, 572, 556, 544, 537, 545, - 0, 198, 223, 371, 0, 460, 291, 657, 625, 490, - 620, 208, 225, 0, 265, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 200, 202, 211, 224, - 234, 238, 245, 264, 279, 281, 288, 301, 313, 321, - 322, 325, 331, 383, 390, 391, 392, 393, 413, 414, - 415, 418, 421, 422, 425, 427, 428, 431, 436, 440, - 441, 442, 444, 446, 448, 461, 466, 480, 481, 482, - 483, 484, 487, 488, 494, 495, 496, 497, 498, 506, - 507, 522, 593, 595, 612, 632, 639, 486, 388, 434, - 458, 586, 304, 305, 449, 450, 317, 318, 653, 654, - 303, 607, 640, 604, 652, 634, 443, 381, 0, 0, - 384, 284, 308, 323, 0, 624, 508, 229, 472, 293, - 253, 0, 0, 213, 248, 232, 262, 277, 280, 327, - 395, 404, 433, 439, 299, 274, 246, 465, 243, 491, - 525, 526, 527, 529, 399, 269, 438, 400, 0, 379, - 582, 583, 319, 0, 0, 0, 534, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 420, 0, - 0, 0, 0, 0, 0, 1800, 273, 0, 0, 0, - 0, 369, 270, 0, 0, 206, 511, 0, 435, 0, - 205, 0, 493, 255, 380, 377, 590, 285, 276, 272, - 252, 320, 389, 432, 524, 426, 0, 373, 0, 0, - 503, 405, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 326, 250, 328, 204, 417, 504, 289, 0, 0, 0, - 0, 0, 513, 196, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 240, 0, 0, 247, 0, 0, 0, - 354, 363, 362, 342, 343, 345, 347, 353, 360, 366, - 339, 348, 0, 0, 616, 0, 0, 0, 268, 324, - 275, 267, 587, 0, 0, 0, 0, 0, 0, 603, - 0, 0, 231, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 278, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 300, - 0, 406, 260, 0, 459, 0, 0, 0, 636, 0, - 0, 0, 0, 0, 0, 0, 368, 0, 333, 199, - 227, 0, 0, 416, 467, 479, 0, 0, 0, 256, - 0, 477, 430, 611, 235, 287, 464, 437, 475, 445, - 290, 0, 0, 476, 375, 592, 455, 608, 637, 638, - 266, 410, 622, 528, 630, 655, 228, 263, 424, 512, - 614, 500, 401, 588, 589, 332, 499, 298, 203, 372, - 643, 226, 485, 374, 244, 233, 594, 619, 302, 254, - 292, 462, 650, 215, 523, 605, 241, 489, 0, 0, - 658, 249, 510, 617, 606, 217, 601, 509, 397, 329, - 330, 216, 0, 463, 271, 296, 0, 0, 261, 419, - 596, 597, 259, 659, 230, 629, 222, 0, 628, 412, - 591, 602, 398, 386, 221, 600, 396, 385, 337, 358, - 359, 283, 310, 452, 378, 453, 309, 311, 408, 407, - 409, 209, 615, 633, 0, 210, 0, 505, 618, 660, - 457, 214, 236, 237, 239, 0, 282, 286, 294, 297, - 306, 307, 316, 370, 423, 451, 447, 456, 0, 585, - 609, 623, 635, 641, 642, 644, 645, 646, 647, 648, - 651, 649, 411, 314, 501, 336, 376, 0, 0, 429, - 478, 242, 613, 502, 201, 0, 0, 0, 0, 257, - 258, 0, 581, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 661, 662, 663, 664, 665, 666, 667, 668, - 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, - 656, 514, 520, 515, 516, 517, 518, 519, 0, 521, - 0, 0, 0, 0, 0, 402, 0, 598, 599, 679, - 387, 492, 610, 338, 352, 355, 344, 364, 0, 365, - 340, 341, 346, 349, 350, 351, 356, 357, 361, 367, - 251, 212, 394, 403, 584, 315, 218, 219, 220, 530, - 531, 532, 533, 626, 627, 631, 207, 468, 469, 470, - 471, 295, 621, 312, 474, 473, 334, 335, 382, 454, - 546, 548, 559, 563, 565, 567, 573, 576, 547, 549, - 560, 564, 566, 568, 574, 577, 536, 538, 540, 542, - 555, 554, 551, 579, 580, 557, 562, 541, 553, 558, - 571, 578, 575, 535, 539, 543, 552, 570, 569, 550, - 561, 572, 556, 544, 537, 545, 0, 198, 223, 371, - 0, 460, 291, 657, 625, 490, 620, 208, 225, 0, - 265, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 200, 202, 211, 224, 234, 238, 245, 264, - 279, 281, 288, 301, 313, 321, 322, 325, 331, 383, - 390, 391, 392, 393, 413, 414, 415, 418, 421, 422, - 425, 427, 428, 431, 436, 440, 441, 442, 444, 446, - 448, 461, 466, 480, 481, 482, 483, 484, 487, 488, - 494, 495, 496, 497, 498, 506, 507, 522, 593, 595, - 612, 632, 639, 486, 388, 434, 458, 586, 304, 305, - 449, 450, 317, 318, 653, 654, 303, 607, 640, 604, - 652, 634, 443, 381, 0, 0, 384, 284, 308, 323, - 0, 624, 508, 229, 472, 293, 253, 0, 0, 213, - 248, 232, 262, 277, 280, 327, 395, 404, 433, 439, - 299, 274, 246, 465, 243, 491, 525, 526, 527, 529, - 399, 269, 438, 400, 0, 379, 582, 583, 319, 0, - 0, 0, 534, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 420, 0, 0, 0, 0, 0, - 0, 0, 273, 0, 0, 0, 0, 369, 270, 0, - 0, 206, 511, 0, 435, 0, 205, 0, 493, 255, - 380, 377, 590, 285, 276, 272, 252, 320, 389, 432, - 524, 426, 0, 373, 0, 0, 503, 405, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 326, 250, 328, 204, - 417, 504, 289, 0, 95, 0, 0, 0, 513, 966, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 240, - 0, 0, 247, 0, 0, 0, 354, 363, 362, 342, - 343, 345, 347, 353, 360, 366, 339, 348, 0, 0, - 616, 0, 0, 0, 268, 324, 275, 267, 587, 0, - 0, 0, 0, 0, 0, 603, 0, 0, 231, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 278, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 300, 0, 406, 260, 0, - 459, 0, 0, 0, 636, 0, 0, 0, 0, 0, - 0, 0, 368, 0, 333, 199, 227, 0, 0, 416, - 467, 479, 0, 0, 0, 256, 0, 477, 430, 611, - 235, 287, 464, 437, 475, 445, 290, 0, 0, 476, - 375, 592, 455, 608, 637, 638, 266, 410, 622, 528, - 630, 655, 228, 263, 424, 512, 614, 500, 401, 588, - 589, 332, 499, 298, 203, 372, 643, 226, 485, 374, - 244, 233, 594, 619, 302, 254, 292, 462, 650, 215, - 523, 605, 241, 489, 0, 0, 658, 249, 510, 617, - 606, 217, 601, 509, 397, 329, 330, 216, 0, 463, - 271, 296, 0, 0, 261, 419, 596, 597, 259, 659, - 230, 629, 222, 0, 628, 412, 591, 602, 398, 386, - 221, 600, 396, 385, 337, 358, 359, 283, 310, 452, - 378, 453, 309, 311, 408, 407, 409, 209, 615, 633, - 0, 210, 0, 505, 618, 660, 457, 214, 236, 237, - 239, 0, 282, 286, 294, 297, 306, 307, 316, 370, - 423, 451, 447, 456, 0, 585, 609, 623, 635, 641, - 642, 644, 645, 646, 647, 648, 651, 649, 411, 314, - 501, 336, 376, 0, 0, 429, 478, 242, 613, 502, - 201, 0, 0, 0, 0, 257, 258, 0, 581, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 661, 662, - 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, - 673, 674, 675, 676, 677, 678, 656, 514, 520, 515, - 516, 517, 518, 519, 0, 521, 0, 0, 0, 0, - 0, 402, 0, 598, 599, 679, 387, 492, 610, 338, - 352, 355, 344, 364, 0, 365, 340, 341, 346, 349, - 350, 351, 356, 357, 361, 367, 251, 212, 394, 403, - 584, 315, 218, 219, 220, 530, 531, 532, 533, 626, - 627, 631, 207, 468, 469, 470, 471, 295, 621, 312, - 474, 473, 334, 335, 382, 454, 546, 548, 559, 563, - 565, 567, 573, 576, 547, 549, 560, 564, 566, 568, - 574, 577, 536, 538, 540, 542, 555, 554, 551, 579, - 580, 557, 562, 541, 553, 558, 571, 578, 575, 535, - 539, 543, 552, 570, 569, 550, 561, 572, 556, 544, - 537, 545, 0, 198, 223, 371, 0, 460, 291, 657, - 625, 490, 620, 208, 225, 0, 265, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 200, 202, - 211, 224, 234, 238, 245, 264, 279, 281, 288, 301, - 313, 321, 322, 325, 331, 383, 390, 391, 392, 393, - 413, 414, 415, 418, 421, 422, 425, 427, 428, 431, - 436, 440, 441, 442, 444, 446, 448, 461, 466, 480, - 481, 482, 483, 484, 487, 488, 494, 495, 496, 497, - 498, 506, 507, 522, 593, 595, 612, 632, 639, 486, - 388, 434, 458, 586, 304, 305, 449, 450, 317, 318, - 653, 654, 303, 607, 640, 604, 652, 634, 443, 381, - 0, 0, 384, 284, 308, 323, 0, 624, 508, 229, - 472, 293, 253, 0, 0, 213, 248, 232, 262, 277, - 280, 327, 395, 404, 433, 439, 299, 274, 246, 465, - 243, 491, 525, 526, 527, 529, 399, 269, 438, 400, - 0, 379, 582, 583, 319, 0, 0, 0, 534, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 420, 0, 0, 0, 0, 0, 0, 0, 273, 0, - 0, 0, 0, 369, 270, 0, 0, 206, 511, 0, - 435, 0, 205, 0, 493, 255, 380, 377, 590, 285, - 276, 272, 252, 320, 389, 432, 524, 426, 0, 373, - 0, 0, 503, 405, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 326, 250, 328, 204, 417, 504, 289, 0, - 0, 0, 0, 0, 513, 196, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 240, 0, 0, 247, 0, - 0, 0, 354, 363, 362, 342, 343, 345, 347, 353, - 360, 366, 339, 348, 0, 0, 616, 0, 0, 0, - 268, 324, 275, 267, 587, 0, 0, 0, 0, 0, - 0, 603, 0, 0, 231, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 278, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1466, - 0, 300, 0, 406, 260, 0, 459, 0, 0, 0, - 636, 0, 0, 0, 0, 0, 0, 0, 368, 0, - 333, 199, 227, 0, 0, 416, 467, 479, 0, 0, - 0, 256, 0, 477, 430, 611, 235, 287, 464, 437, - 475, 445, 290, 0, 0, 476, 375, 592, 455, 608, - 637, 638, 266, 410, 622, 528, 630, 655, 228, 263, - 424, 512, 614, 500, 401, 588, 589, 332, 499, 298, - 203, 372, 643, 226, 485, 374, 244, 233, 594, 619, - 302, 254, 292, 462, 650, 215, 523, 605, 241, 489, - 0, 0, 658, 249, 510, 617, 606, 217, 601, 509, - 397, 329, 330, 216, 0, 463, 271, 296, 0, 0, - 261, 419, 596, 597, 259, 659, 230, 629, 222, 0, - 628, 412, 591, 602, 398, 386, 221, 600, 396, 385, - 337, 358, 359, 283, 310, 452, 378, 453, 309, 311, - 408, 407, 409, 209, 615, 633, 0, 210, 0, 505, - 618, 660, 457, 214, 236, 237, 239, 0, 282, 286, - 294, 297, 306, 307, 316, 370, 423, 451, 447, 456, - 0, 585, 609, 623, 635, 641, 642, 644, 645, 646, - 647, 648, 651, 649, 411, 314, 501, 336, 376, 0, - 0, 429, 478, 242, 613, 502, 201, 0, 0, 0, - 0, 257, 258, 0, 581, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 661, 662, 663, 664, 665, 666, - 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, - 677, 678, 656, 514, 520, 515, 516, 517, 518, 519, - 0, 521, 0, 0, 0, 0, 0, 402, 0, 598, - 599, 679, 387, 492, 610, 338, 352, 355, 344, 364, - 0, 365, 340, 341, 346, 349, 350, 351, 356, 357, - 361, 367, 251, 212, 394, 403, 584, 315, 218, 219, - 220, 530, 531, 532, 533, 626, 627, 631, 207, 468, - 469, 470, 471, 295, 621, 312, 474, 473, 334, 335, - 382, 454, 546, 548, 559, 563, 565, 567, 573, 576, - 547, 549, 560, 564, 566, 568, 574, 577, 536, 538, - 540, 542, 555, 554, 551, 579, 580, 557, 562, 541, - 553, 558, 571, 578, 575, 535, 539, 543, 552, 570, - 569, 550, 561, 572, 556, 544, 537, 545, 0, 198, - 223, 371, 0, 460, 291, 657, 625, 490, 620, 208, - 225, 0, 265, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 200, 202, 211, 224, 234, 238, - 245, 264, 279, 281, 288, 301, 313, 321, 322, 325, - 331, 383, 390, 391, 392, 393, 413, 414, 415, 418, - 421, 422, 425, 427, 428, 431, 436, 440, 441, 442, - 444, 446, 448, 461, 466, 480, 481, 482, 483, 484, - 487, 488, 494, 495, 496, 497, 498, 506, 507, 522, - 593, 595, 612, 632, 639, 486, 388, 434, 458, 586, - 304, 305, 449, 450, 317, 318, 653, 654, 1465, 607, - 640, 604, 652, 634, 443, 381, 0, 0, 384, 284, - 308, 323, 0, 624, 508, 229, 472, 293, 253, 0, - 0, 213, 248, 232, 262, 277, 280, 327, 395, 404, - 433, 439, 299, 274, 246, 465, 243, 491, 525, 526, - 527, 529, 399, 269, 438, 400, 0, 379, 582, 583, - 319, 0, 0, 0, 534, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 420, 0, 0, 0, - 0, 0, 0, 0, 273, 0, 0, 0, 0, 369, - 270, 0, 0, 206, 511, 0, 435, 0, 205, 0, - 493, 255, 380, 377, 590, 285, 276, 272, 252, 320, - 389, 432, 524, 426, 0, 373, 0, 0, 503, 405, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 326, 250, - 328, 204, 417, 504, 289, 0, 0, 0, 0, 0, - 513, 196, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 240, 0, 0, 247, 0, 0, 0, 354, 363, - 362, 342, 343, 345, 347, 353, 360, 366, 339, 348, - 0, 0, 616, 0, 0, 0, 268, 324, 275, 267, - 587, 0, 0, 0, 0, 0, 0, 603, 0, 0, - 231, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 278, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 300, 0, 406, - 260, 0, 459, 0, 0, 0, 636, 0, 0, 0, - 0, 0, 0, 0, 368, 0, 333, 199, 227, 0, - 0, 416, 467, 479, 0, 0, 0, 256, 0, 477, - 430, 611, 235, 287, 464, 437, 475, 445, 290, 0, - 0, 476, 375, 592, 455, 608, 637, 638, 266, 410, - 622, 528, 630, 655, 228, 263, 424, 512, 614, 500, - 401, 588, 589, 332, 499, 298, 203, 372, 643, 226, - 485, 374, 244, 233, 594, 619, 302, 254, 292, 462, - 650, 215, 523, 605, 241, 489, 0, 0, 658, 249, - 510, 617, 606, 217, 601, 509, 397, 329, 330, 216, - 0, 463, 271, 296, 0, 0, 261, 419, 596, 597, - 259, 659, 230, 629, 222, 0, 628, 412, 591, 602, - 398, 386, 221, 600, 396, 385, 337, 358, 359, 283, - 310, 452, 378, 453, 309, 311, 408, 407, 409, 209, - 615, 633, 0, 210, 0, 505, 618, 660, 457, 214, - 236, 237, 239, 0, 282, 286, 294, 297, 306, 307, - 316, 370, 423, 451, 447, 456, 0, 585, 609, 623, - 635, 641, 642, 644, 645, 646, 647, 648, 651, 649, - 411, 314, 501, 336, 376, 0, 0, 429, 478, 242, - 613, 502, 201, 0, 0, 0, 0, 257, 258, 0, - 581, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, - 671, 672, 673, 674, 675, 676, 677, 678, 656, 514, - 520, 515, 516, 517, 518, 519, 0, 521, 0, 0, - 0, 0, 0, 402, 0, 598, 599, 679, 387, 492, - 610, 338, 352, 355, 344, 364, 0, 365, 340, 341, - 346, 349, 350, 351, 356, 357, 361, 367, 251, 212, - 394, 403, 584, 315, 218, 219, 220, 530, 531, 532, - 533, 626, 627, 631, 207, 468, 469, 470, 471, 295, - 621, 312, 474, 473, 334, 335, 382, 454, 546, 548, - 559, 563, 565, 567, 573, 576, 547, 549, 560, 564, - 566, 568, 574, 577, 536, 538, 540, 542, 555, 554, - 551, 579, 580, 557, 562, 541, 553, 558, 571, 578, - 575, 535, 539, 543, 552, 570, 569, 550, 561, 572, - 556, 544, 537, 545, 0, 198, 223, 371, 0, 460, - 291, 657, 625, 490, 620, 208, 225, 0, 265, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1058, 0, 0, 0, - 200, 202, 211, 224, 234, 238, 245, 264, 279, 281, - 288, 301, 313, 321, 322, 325, 331, 383, 390, 391, - 392, 393, 413, 414, 415, 418, 421, 422, 425, 427, - 428, 431, 436, 440, 441, 442, 444, 446, 448, 461, - 466, 480, 481, 482, 483, 484, 487, 488, 494, 495, - 496, 497, 498, 506, 507, 522, 593, 595, 612, 632, - 639, 486, 388, 434, 458, 586, 304, 305, 449, 450, - 317, 318, 653, 654, 303, 607, 640, 604, 652, 634, - 443, 381, 0, 0, 384, 284, 308, 323, 0, 624, - 508, 229, 472, 293, 253, 0, 0, 213, 248, 232, - 262, 277, 280, 327, 395, 404, 433, 439, 299, 274, - 246, 465, 243, 491, 525, 526, 527, 529, 399, 269, - 438, 400, 0, 379, 582, 583, 319, 0, 0, 0, - 534, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 420, 0, 0, 0, 0, 0, 0, 0, - 273, 0, 0, 0, 0, 369, 270, 0, 0, 206, - 511, 0, 435, 0, 205, 0, 493, 255, 380, 377, - 590, 285, 276, 272, 252, 320, 389, 432, 524, 426, - 0, 373, 0, 0, 503, 405, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 326, 250, 328, 204, 417, 504, - 289, 0, 0, 0, 0, 0, 513, 196, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 240, 0, 0, - 247, 0, 0, 0, 354, 363, 362, 342, 343, 345, - 347, 353, 360, 366, 339, 348, 0, 0, 616, 0, - 0, 0, 268, 324, 275, 267, 587, 0, 0, 0, - 0, 0, 0, 603, 0, 0, 231, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 278, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 300, 0, 406, 260, 0, 459, 0, - 682, 0, 636, 0, 0, 0, 0, 0, 0, 0, - 368, 0, 333, 199, 227, 0, 0, 416, 467, 479, - 0, 0, 0, 256, 0, 477, 430, 611, 235, 287, - 464, 437, 475, 445, 290, 0, 0, 476, 375, 592, - 455, 608, 637, 638, 266, 410, 622, 528, 630, 655, - 228, 263, 424, 512, 614, 500, 401, 588, 589, 332, - 499, 298, 203, 372, 643, 226, 485, 374, 244, 233, - 594, 619, 302, 254, 292, 462, 650, 215, 523, 605, - 241, 489, 0, 0, 658, 249, 510, 617, 606, 217, - 601, 509, 397, 329, 330, 216, 0, 463, 271, 296, - 0, 0, 261, 419, 596, 597, 259, 659, 230, 629, - 222, 0, 628, 412, 591, 602, 398, 386, 221, 600, - 396, 385, 337, 358, 359, 283, 310, 452, 378, 453, - 309, 311, 408, 407, 409, 209, 615, 633, 0, 210, - 0, 505, 618, 660, 457, 214, 236, 237, 239, 0, - 282, 286, 294, 297, 306, 307, 316, 370, 423, 451, - 447, 456, 0, 585, 609, 623, 635, 641, 642, 644, - 645, 646, 647, 648, 651, 649, 411, 314, 501, 336, - 376, 0, 0, 429, 478, 242, 613, 502, 201, 0, - 0, 0, 0, 257, 258, 0, 581, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 661, 662, 663, 664, - 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, - 675, 676, 677, 678, 656, 514, 520, 515, 516, 517, - 518, 519, 0, 521, 0, 0, 0, 0, 0, 402, - 0, 598, 599, 679, 387, 492, 610, 338, 352, 355, - 344, 364, 0, 365, 340, 341, 346, 349, 350, 351, - 356, 357, 361, 367, 251, 212, 394, 403, 584, 315, - 218, 219, 220, 530, 531, 532, 533, 626, 627, 631, - 207, 468, 469, 470, 471, 295, 621, 312, 474, 473, - 334, 335, 382, 454, 546, 548, 559, 563, 565, 567, - 573, 576, 547, 549, 560, 564, 566, 568, 574, 577, - 536, 538, 540, 542, 555, 554, 551, 579, 580, 557, - 562, 541, 553, 558, 571, 578, 575, 535, 539, 543, - 552, 570, 569, 550, 561, 572, 556, 544, 537, 545, - 0, 198, 223, 371, 0, 460, 291, 657, 625, 490, - 620, 208, 225, 0, 265, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 200, 202, 211, 224, - 234, 238, 245, 264, 279, 281, 288, 301, 313, 321, - 322, 325, 331, 383, 390, 391, 392, 393, 413, 414, - 415, 418, 421, 422, 425, 427, 428, 431, 436, 440, - 441, 442, 444, 446, 448, 461, 466, 480, 481, 482, - 483, 484, 487, 488, 494, 495, 496, 497, 498, 506, - 507, 522, 593, 595, 612, 632, 639, 486, 388, 434, - 458, 586, 304, 305, 449, 450, 317, 318, 653, 654, - 303, 607, 640, 604, 652, 634, 443, 381, 0, 0, - 384, 284, 308, 323, 0, 624, 508, 229, 472, 293, - 253, 0, 0, 213, 248, 232, 262, 277, 280, 327, - 395, 404, 433, 439, 299, 274, 246, 465, 243, 491, - 525, 526, 527, 529, 399, 269, 438, 400, 0, 379, - 582, 583, 319, 0, 0, 0, 534, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 420, 0, - 0, 0, 0, 0, 0, 0, 273, 0, 0, 0, - 0, 369, 270, 0, 0, 206, 511, 0, 435, 0, - 205, 0, 493, 255, 380, 377, 590, 285, 276, 272, - 252, 320, 389, 432, 524, 426, 0, 373, 0, 0, - 503, 405, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 326, 250, 328, 204, 417, 504, 289, 0, 0, 0, - 0, 0, 513, 731, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 240, 0, 0, 247, 0, 0, 0, - 354, 363, 362, 342, 343, 345, 347, 353, 360, 366, - 339, 348, 0, 0, 616, 0, 0, 0, 268, 324, - 275, 267, 587, 0, 0, 0, 0, 0, 0, 603, - 0, 0, 231, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 278, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 300, - 0, 406, 260, 0, 459, 0, 0, 0, 636, 0, - 0, 0, 0, 0, 0, 0, 368, 0, 333, 199, - 227, 0, 0, 416, 467, 479, 0, 0, 0, 256, - 0, 477, 430, 611, 235, 287, 464, 437, 475, 445, - 290, 0, 0, 476, 375, 592, 455, 608, 637, 638, - 266, 410, 622, 528, 630, 655, 228, 263, 424, 512, - 614, 500, 401, 588, 589, 332, 499, 298, 203, 372, - 643, 226, 485, 374, 244, 233, 594, 619, 302, 254, - 292, 462, 650, 215, 523, 605, 241, 489, 0, 0, - 658, 249, 510, 617, 606, 217, 601, 509, 397, 329, - 330, 216, 0, 463, 271, 296, 0, 0, 261, 419, - 596, 597, 259, 659, 230, 629, 222, 0, 628, 412, - 591, 602, 398, 386, 221, 600, 396, 385, 337, 358, - 359, 283, 310, 452, 378, 453, 309, 311, 408, 407, - 409, 209, 615, 633, 0, 210, 0, 505, 618, 660, - 457, 214, 236, 237, 239, 0, 282, 286, 294, 297, - 306, 307, 316, 370, 423, 451, 447, 456, 0, 585, - 609, 623, 635, 641, 642, 644, 645, 646, 647, 648, - 651, 649, 411, 314, 501, 336, 376, 0, 0, 429, - 478, 242, 613, 502, 201, 0, 0, 0, 0, 257, - 258, 0, 581, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 661, 662, 663, 664, 665, 666, 667, 668, - 669, 670, 671, 672, 673, 674, 675, 676, 677, 678, - 656, 514, 520, 515, 516, 517, 518, 519, 0, 521, - 0, 0, 0, 0, 0, 402, 0, 598, 599, 679, - 387, 492, 610, 338, 352, 355, 344, 364, 0, 365, - 340, 341, 346, 349, 350, 351, 356, 357, 361, 367, - 251, 212, 394, 403, 584, 315, 218, 219, 220, 530, - 531, 532, 533, 626, 627, 631, 207, 468, 469, 470, - 471, 295, 621, 312, 474, 473, 334, 335, 382, 454, - 546, 548, 559, 563, 565, 567, 573, 576, 547, 549, - 560, 564, 566, 568, 574, 577, 536, 538, 540, 542, - 555, 554, 551, 579, 580, 557, 562, 541, 553, 558, - 571, 578, 575, 535, 539, 543, 552, 570, 569, 550, - 561, 572, 556, 544, 537, 545, 0, 198, 223, 371, - 0, 460, 291, 657, 625, 490, 620, 208, 225, 0, - 265, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 200, 202, 211, 224, 234, 238, 245, 264, - 279, 281, 288, 301, 313, 321, 322, 325, 331, 383, - 390, 391, 392, 393, 4158, 414, 415, 418, 421, 422, - 425, 427, 428, 431, 436, 440, 441, 442, 444, 446, - 448, 461, 466, 480, 481, 482, 483, 484, 487, 488, - 494, 495, 496, 497, 498, 506, 507, 522, 593, 595, - 612, 632, 639, 486, 388, 434, 458, 586, 304, 305, - 449, 450, 317, 318, 653, 654, 303, 607, 640, 604, - 652, 634, 443, 381, 0, 0, 384, 284, 308, 323, - 0, 624, 508, 229, 472, 293, 253, 0, 0, 213, - 248, 232, 262, 277, 280, 327, 395, 404, 433, 439, - 299, 274, 246, 465, 243, 491, 525, 526, 527, 529, - 399, 269, 438, 400, 0, 379, 582, 583, 319, 0, - 0, 0, 534, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 420, 0, 0, 0, 0, 0, - 0, 0, 273, 0, 0, 0, 0, 369, 270, 0, - 0, 206, 511, 0, 435, 0, 205, 0, 493, 255, - 380, 377, 590, 285, 276, 272, 252, 320, 389, 432, - 524, 426, 0, 373, 0, 0, 503, 405, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 326, 250, 328, 204, - 417, 504, 289, 0, 0, 0, 0, 0, 513, 731, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 240, - 0, 0, 247, 0, 0, 0, 354, 363, 362, 342, - 343, 345, 347, 353, 360, 366, 339, 348, 0, 0, - 616, 0, 0, 0, 268, 324, 275, 267, 587, 0, - 0, 0, 0, 0, 0, 603, 0, 0, 231, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 278, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 300, 0, 406, 260, 0, - 459, 0, 0, 0, 636, 0, 0, 0, 0, 0, - 0, 0, 368, 0, 333, 199, 227, 0, 0, 416, - 467, 479, 0, 0, 0, 256, 0, 477, 430, 611, - 235, 287, 464, 437, 475, 445, 290, 0, 0, 476, - 375, 592, 455, 608, 637, 638, 266, 410, 622, 528, - 630, 655, 228, 263, 424, 512, 614, 500, 401, 588, - 589, 332, 499, 298, 203, 372, 643, 226, 485, 374, - 244, 233, 594, 619, 302, 254, 292, 462, 650, 215, - 523, 605, 241, 489, 0, 0, 658, 249, 510, 617, - 606, 217, 601, 509, 397, 329, 330, 216, 0, 463, - 271, 296, 0, 0, 261, 419, 596, 597, 259, 659, - 230, 629, 222, 0, 628, 412, 591, 602, 398, 386, - 221, 600, 396, 385, 337, 358, 359, 283, 310, 452, - 378, 453, 309, 311, 408, 407, 409, 209, 615, 633, - 0, 210, 0, 505, 618, 660, 457, 214, 236, 237, - 239, 0, 282, 286, 294, 297, 306, 307, 316, 370, - 423, 451, 447, 456, 0, 585, 609, 623, 635, 641, - 642, 644, 645, 646, 647, 648, 651, 649, 411, 314, - 501, 336, 376, 0, 0, 429, 478, 242, 613, 502, - 201, 0, 0, 0, 0, 257, 258, 0, 581, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 661, 662, - 663, 664, 665, 666, 667, 668, 669, 670, 671, 672, - 673, 674, 675, 676, 677, 678, 656, 514, 520, 515, - 516, 517, 518, 519, 0, 521, 0, 0, 0, 0, - 0, 402, 0, 598, 599, 679, 387, 492, 610, 338, - 352, 355, 344, 364, 0, 365, 340, 341, 346, 349, - 350, 351, 356, 357, 361, 367, 251, 212, 394, 403, - 584, 315, 218, 219, 220, 530, 531, 532, 533, 626, - 627, 631, 207, 468, 469, 470, 471, 295, 621, 312, - 474, 473, 334, 335, 382, 454, 546, 548, 559, 563, - 565, 567, 573, 576, 547, 549, 560, 564, 566, 568, - 574, 577, 536, 538, 540, 542, 555, 554, 551, 579, - 580, 557, 562, 541, 553, 558, 571, 578, 575, 535, - 539, 543, 552, 570, 569, 550, 561, 572, 556, 544, - 537, 545, 0, 198, 223, 371, 0, 460, 291, 657, - 625, 490, 620, 208, 225, 0, 265, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 200, 202, - 211, 224, 234, 238, 245, 264, 279, 281, 288, 301, - 313, 321, 322, 325, 331, 383, 390, 391, 392, 393, - 413, 414, 415, 418, 421, 422, 425, 427, 428, 431, - 436, 440, 441, 442, 444, 446, 448, 461, 466, 480, - 481, 482, 483, 484, 487, 488, 494, 495, 496, 497, - 498, 506, 507, 522, 593, 595, 612, 632, 639, 486, - 388, 434, 458, 586, 304, 305, 449, 450, 317, 318, - 653, 654, 303, 607, 640, 604, 652, 634, 443, 381, - 0, 0, 384, 284, 308, 323, 0, 624, 508, 229, - 472, 293, 253, 0, 0, 213, 248, 232, 262, 277, - 280, 327, 395, 404, 433, 439, 299, 274, 246, 465, - 243, 491, 525, 526, 527, 529, 399, 269, 438, 400, - 0, 379, 582, 583, 319, 0, 0, 0, 534, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 420, 0, 0, 0, 0, 0, 0, 0, 273, 0, - 0, 0, 0, 369, 270, 0, 0, 206, 511, 0, - 435, 0, 205, 0, 493, 255, 380, 377, 590, 285, - 276, 272, 252, 320, 389, 432, 524, 426, 0, 373, - 0, 0, 503, 405, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 326, 250, 328, 204, 417, 504, 289, 0, - 0, 0, 0, 0, 513, 966, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 240, 0, 0, 247, 0, - 0, 0, 354, 363, 362, 342, 343, 345, 347, 353, - 360, 366, 339, 348, 0, 0, 616, 0, 0, 0, - 268, 324, 275, 267, 587, 0, 0, 0, 0, 0, - 0, 603, 0, 0, 231, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 278, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 300, 0, 406, 260, 0, 459, 0, 0, 0, - 636, 0, 0, 0, 0, 0, 0, 0, 368, 0, - 333, 199, 227, 0, 0, 416, 467, 479, 0, 0, - 0, 256, 0, 477, 430, 611, 235, 287, 464, 437, - 475, 445, 290, 0, 0, 476, 375, 592, 455, 608, - 637, 638, 266, 410, 622, 528, 630, 655, 228, 263, - 424, 512, 614, 500, 401, 588, 589, 332, 499, 298, - 203, 372, 643, 226, 485, 374, 244, 233, 594, 619, - 302, 254, 292, 462, 650, 215, 523, 605, 241, 489, - 0, 0, 658, 249, 510, 617, 606, 217, 601, 509, - 397, 329, 330, 216, 0, 463, 271, 296, 0, 0, - 261, 419, 596, 597, 259, 659, 230, 629, 222, 0, - 628, 412, 591, 602, 398, 386, 221, 600, 396, 385, - 337, 358, 359, 283, 310, 452, 378, 453, 309, 311, - 408, 407, 409, 209, 615, 633, 0, 210, 0, 505, - 618, 660, 457, 214, 236, 237, 239, 0, 282, 286, - 294, 297, 306, 307, 316, 370, 423, 451, 447, 456, - 0, 585, 609, 623, 635, 641, 642, 644, 645, 646, - 647, 648, 651, 649, 411, 314, 501, 336, 376, 0, - 0, 429, 478, 242, 613, 502, 201, 0, 0, 0, - 0, 257, 258, 0, 581, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 661, 662, 663, 664, 665, 666, - 667, 668, 669, 670, 671, 672, 673, 674, 675, 676, - 677, 678, 656, 514, 520, 515, 516, 517, 518, 519, - 0, 521, 0, 0, 0, 0, 0, 402, 0, 598, - 599, 679, 387, 492, 610, 338, 352, 355, 344, 364, - 0, 365, 340, 341, 346, 349, 350, 351, 356, 357, - 361, 367, 251, 212, 394, 403, 584, 315, 218, 219, - 220, 530, 531, 532, 533, 626, 627, 631, 207, 468, - 469, 470, 471, 295, 621, 312, 474, 473, 334, 335, - 382, 454, 546, 548, 559, 563, 565, 567, 573, 576, - 547, 549, 560, 564, 566, 568, 574, 577, 536, 538, - 540, 542, 555, 554, 551, 579, 580, 557, 562, 541, - 553, 558, 571, 578, 575, 535, 539, 543, 552, 570, - 569, 550, 561, 572, 556, 544, 537, 545, 0, 198, - 223, 371, 0, 460, 291, 657, 625, 490, 620, 208, - 225, 0, 265, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 200, 202, 211, 224, 234, 238, - 245, 264, 279, 281, 288, 301, 313, 321, 322, 325, - 331, 383, 390, 391, 392, 393, 413, 414, 415, 418, - 421, 422, 425, 427, 428, 431, 436, 440, 441, 442, - 444, 446, 448, 461, 466, 480, 481, 482, 483, 484, - 487, 488, 494, 495, 496, 497, 498, 506, 507, 522, - 593, 595, 612, 632, 639, 486, 388, 434, 458, 586, - 304, 305, 449, 450, 317, 318, 653, 654, 303, 607, - 640, 604, 652, 634, 443, 381, 0, 0, 384, 284, - 308, 323, 0, 624, 508, 229, 472, 293, 253, 0, - 0, 213, 248, 232, 262, 277, 280, 327, 395, 404, - 433, 439, 299, 274, 246, 465, 243, 491, 525, 526, - 527, 529, 399, 269, 438, 400, 0, 379, 582, 583, - 319, 0, 0, 0, 534, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 420, 0, 0, 0, - 0, 0, 0, 0, 273, 0, 0, 0, 0, 369, - 270, 0, 0, 206, 511, 0, 435, 0, 205, 0, - 493, 255, 380, 377, 590, 285, 276, 272, 252, 320, - 389, 432, 524, 426, 0, 373, 0, 0, 503, 405, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 326, 250, - 328, 204, 417, 504, 289, 0, 0, 0, 0, 0, - 513, 196, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 240, 0, 0, 247, 0, 0, 0, 354, 363, - 362, 342, 343, 345, 347, 353, 360, 366, 339, 348, - 0, 0, 616, 0, 0, 0, 268, 324, 275, 267, - 587, 0, 0, 0, 0, 0, 0, 603, 0, 0, - 231, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 278, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 300, 0, 406, - 260, 0, 459, 0, 0, 0, 636, 0, 0, 0, - 0, 0, 0, 0, 368, 0, 333, 199, 227, 0, - 0, 416, 467, 479, 0, 0, 0, 256, 0, 477, - 430, 611, 235, 287, 464, 437, 475, 445, 290, 0, - 0, 476, 375, 592, 455, 608, 637, 638, 266, 410, - 622, 528, 630, 655, 228, 263, 424, 512, 614, 500, - 401, 588, 589, 332, 499, 298, 203, 372, 643, 226, - 485, 374, 244, 233, 594, 619, 302, 254, 292, 462, - 650, 215, 523, 605, 241, 489, 0, 0, 658, 249, - 510, 617, 606, 217, 601, 509, 397, 329, 330, 216, - 0, 463, 271, 296, 0, 0, 261, 419, 596, 597, - 259, 659, 230, 629, 222, 0, 628, 412, 591, 602, - 398, 386, 221, 600, 396, 385, 337, 358, 359, 283, - 310, 452, 378, 453, 309, 311, 408, 407, 409, 209, - 615, 633, 0, 210, 0, 505, 618, 660, 457, 214, - 236, 237, 239, 0, 282, 286, 294, 297, 306, 307, - 316, 370, 423, 451, 447, 456, 0, 585, 609, 623, - 635, 641, 642, 644, 645, 646, 647, 648, 651, 649, - 411, 314, 501, 336, 376, 0, 0, 429, 478, 242, - 613, 502, 201, 0, 0, 0, 0, 257, 258, 0, - 581, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, - 671, 672, 673, 674, 675, 676, 677, 678, 656, 514, - 520, 515, 516, 517, 518, 519, 0, 521, 0, 0, - 0, 0, 0, 402, 0, 598, 599, 679, 387, 492, - 610, 338, 352, 355, 344, 364, 0, 365, 340, 341, - 346, 349, 350, 351, 356, 357, 361, 367, 251, 212, - 394, 403, 584, 315, 218, 219, 220, 530, 531, 532, - 533, 626, 627, 631, 207, 468, 469, 470, 471, 295, - 621, 312, 474, 473, 334, 335, 382, 454, 546, 548, - 559, 563, 565, 567, 573, 576, 547, 549, 560, 564, - 566, 568, 574, 577, 536, 538, 540, 542, 555, 554, - 551, 579, 580, 557, 562, 541, 553, 558, 571, 578, - 575, 535, 539, 543, 552, 570, 569, 550, 561, 572, - 556, 544, 537, 545, 0, 198, 223, 371, 0, 460, - 291, 657, 625, 490, 620, 208, 225, 0, 265, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 200, 202, 211, 224, 234, 238, 245, 264, 279, 281, - 288, 301, 313, 321, 322, 325, 331, 383, 390, 391, - 392, 393, 413, 414, 415, 418, 421, 422, 425, 427, - 428, 431, 436, 440, 441, 442, 444, 446, 448, 461, - 466, 480, 481, 482, 483, 484, 487, 488, 494, 495, - 496, 497, 498, 506, 507, 522, 593, 595, 612, 632, - 639, 486, 388, 434, 458, 586, 304, 305, 449, 450, - 317, 318, 653, 654, 303, 607, 640, 604, 652, 634, - 443, 381, 0, 0, 384, 284, 308, 323, 0, 624, - 508, 229, 472, 293, 253, 0, 0, 213, 248, 232, - 262, 277, 280, 327, 395, 404, 433, 439, 299, 274, - 246, 465, 243, 491, 525, 526, 527, 529, 399, 269, - 438, 0, 0, 379, 582, 583, 319, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2408, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 4092, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 4100, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 2408, 0, 4108, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1293, 1293, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 4158, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 4100, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 2408, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 400, 0, 0, 0, + 1872, 0, 4158, 1431, 1415, 534, 0, 1357, 1434, 1325, + 1344, 1444, 1347, 1350, 1394, 1303, 1372, 420, 1341, 1329, + 1298, 1336, 1299, 1327, 1359, 273, 1324, 1417, 1376, 1433, + 369, 270, 1305, 1296, 206, 511, 1330, 435, 1346, 205, + 1396, 493, 255, 380, 377, 590, 285, 276, 272, 252, + 320, 389, 432, 524, 426, 1440, 373, 1382, 0, 503, + 405, 0, 0, 0, 1421, 1420, 1351, 1361, 1423, 1370, + 1408, 1356, 1395, 1313, 1381, 1435, 1342, 1391, 1436, 326, + 250, 328, 204, 417, 504, 289, 0, 0, 0, 0, + 4132, 513, 966, 0, 0, 0, 0, 4133, 0, 0, + 0, 0, 240, 0, 0, 247, 0, 0, 0, 354, + 363, 362, 342, 343, 345, 347, 353, 360, 366, 339, + 348, 1338, 1388, 616, 1430, 1339, 1390, 268, 324, 275, + 267, 587, 1441, 1422, 1302, 1369, 1429, 1364, 603, 0, + 0, 231, 1432, 1363, 0, 1393, 0, 1447, 1297, 1384, + 0, 1300, 1304, 1443, 1427, 1333, 278, 0, 0, 0, + 0, 0, 0, 0, 1360, 1371, 1405, 1409, 1354, 0, + 0, 0, 0, 0, 0, 0, 0, 1331, 0, 1380, + 0, 0, 0, 1309, 1301, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1358, 0, 0, + 0, 0, 1312, 0, 1332, 1406, 0, 1295, 300, 1306, + 406, 260, 0, 459, 1413, 1426, 1355, 636, 1428, 1353, + 1352, 1400, 1310, 1419, 1345, 368, 1308, 333, 199, 227, + 0, 1343, 416, 467, 479, 1418, 1328, 1337, 256, 1335, + 477, 430, 611, 235, 287, 464, 437, 475, 445, 290, + 1379, 1398, 476, 375, 592, 455, 608, 637, 638, 266, + 410, 622, 528, 630, 655, 228, 263, 424, 512, 614, + 500, 401, 588, 589, 332, 499, 298, 203, 372, 643, + 226, 485, 374, 244, 233, 594, 619, 302, 254, 292, + 462, 650, 215, 523, 605, 241, 489, 0, 0, 658, + 249, 510, 617, 606, 217, 601, 509, 397, 329, 330, + 216, 0, 463, 271, 296, 0, 0, 261, 419, 596, + 597, 259, 659, 230, 629, 222, 1307, 628, 412, 591, + 602, 398, 386, 221, 600, 396, 385, 337, 358, 359, + 283, 310, 452, 378, 453, 309, 311, 408, 407, 409, + 209, 615, 633, 0, 210, 0, 505, 618, 660, 457, + 214, 236, 237, 239, 1323, 282, 286, 294, 297, 306, + 307, 316, 370, 423, 451, 447, 456, 1414, 585, 609, + 623, 635, 641, 642, 644, 645, 646, 647, 648, 651, + 649, 411, 314, 501, 336, 376, 1403, 1446, 429, 478, + 242, 613, 502, 201, 1317, 1322, 1315, 0, 257, 258, + 1385, 581, 1318, 1316, 1374, 1375, 1319, 1437, 1438, 1439, + 1424, 661, 662, 663, 664, 665, 666, 667, 668, 669, + 670, 671, 672, 673, 674, 675, 676, 677, 678, 656, + 514, 520, 515, 516, 517, 518, 519, 0, 521, 1407, + 1311, 0, 1320, 1321, 402, 1416, 598, 599, 679, 387, + 492, 610, 338, 352, 355, 344, 364, 0, 365, 340, + 341, 346, 349, 350, 351, 356, 357, 361, 367, 251, + 212, 394, 403, 584, 315, 218, 219, 220, 530, 531, + 532, 533, 626, 627, 631, 207, 468, 469, 470, 471, + 295, 621, 312, 474, 473, 334, 335, 382, 454, 546, + 548, 559, 563, 565, 567, 573, 576, 547, 549, 560, + 564, 566, 568, 574, 577, 536, 538, 540, 542, 555, + 554, 551, 579, 580, 557, 562, 541, 553, 558, 571, + 578, 575, 535, 539, 543, 552, 570, 569, 550, 561, + 572, 556, 544, 537, 545, 1378, 198, 223, 371, 1442, + 460, 291, 657, 625, 490, 620, 208, 225, 1314, 265, + 1326, 1334, 0, 1340, 1348, 1349, 1362, 1365, 1366, 1367, + 1368, 1386, 1387, 1389, 1397, 1399, 1402, 1404, 1411, 1425, + 1445, 200, 202, 211, 224, 234, 238, 245, 264, 279, + 281, 288, 301, 313, 321, 322, 325, 331, 383, 390, + 391, 392, 393, 413, 414, 415, 418, 421, 422, 425, + 427, 428, 431, 436, 440, 441, 442, 444, 446, 448, + 461, 466, 480, 481, 482, 483, 484, 487, 488, 494, + 495, 496, 497, 498, 506, 507, 522, 593, 595, 612, + 632, 639, 486, 388, 434, 458, 586, 304, 305, 449, + 450, 317, 318, 653, 654, 303, 607, 640, 604, 652, + 634, 443, 381, 1377, 1383, 384, 284, 308, 323, 1392, + 624, 508, 229, 472, 293, 253, 1410, 1412, 213, 248, + 232, 262, 277, 280, 327, 395, 404, 433, 439, 299, + 274, 246, 465, 243, 491, 525, 526, 527, 529, 399, + 269, 438, 1373, 1401, 379, 582, 583, 319, 400, 0, + 0, 0, 0, 0, 0, 1431, 1415, 534, 0, 1357, + 1434, 1325, 1344, 1444, 1347, 1350, 1394, 1303, 1372, 420, + 1341, 1329, 1298, 1336, 1299, 1327, 1359, 273, 1324, 1417, + 1376, 1433, 369, 270, 1305, 1296, 206, 511, 1330, 435, + 1346, 205, 1396, 493, 255, 380, 377, 590, 285, 276, + 272, 252, 320, 389, 432, 524, 426, 1440, 373, 1382, + 0, 503, 405, 0, 0, 0, 1421, 1420, 1351, 1361, + 1423, 1370, 1408, 1356, 1395, 1313, 1381, 1435, 1342, 1391, + 1436, 326, 250, 328, 204, 417, 504, 289, 0, 0, + 0, 0, 0, 513, 196, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 240, 0, 0, 247, 0, 0, + 0, 354, 363, 362, 342, 343, 345, 347, 353, 360, + 366, 339, 348, 1338, 1388, 616, 1430, 1339, 1390, 268, + 324, 275, 267, 587, 1441, 1422, 1302, 1369, 1429, 1364, + 603, 0, 0, 231, 1432, 1363, 0, 1393, 0, 1447, + 1297, 1384, 0, 1300, 1304, 1443, 1427, 1333, 278, 0, + 0, 0, 0, 0, 0, 0, 1360, 1371, 1405, 1409, + 1354, 0, 0, 0, 0, 0, 0, 3276, 0, 1331, + 0, 1380, 0, 0, 0, 1309, 1301, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1358, + 0, 0, 0, 0, 1312, 0, 1332, 1406, 0, 1295, + 300, 1306, 406, 260, 0, 459, 1413, 1426, 1355, 636, + 1428, 1353, 1352, 1400, 1310, 1419, 1345, 368, 1308, 333, + 199, 227, 0, 1343, 416, 467, 479, 1418, 1328, 1337, + 256, 1335, 477, 430, 611, 235, 287, 464, 437, 475, + 445, 290, 1379, 1398, 476, 375, 592, 455, 608, 637, + 638, 266, 410, 622, 528, 630, 655, 228, 263, 424, + 512, 614, 500, 401, 588, 589, 332, 499, 298, 203, + 372, 643, 226, 485, 374, 244, 233, 594, 619, 302, + 254, 292, 462, 650, 215, 523, 605, 241, 489, 0, + 0, 658, 249, 510, 617, 606, 217, 601, 509, 397, + 329, 330, 216, 0, 463, 271, 296, 0, 0, 261, + 419, 596, 597, 259, 659, 230, 629, 222, 1307, 628, + 412, 591, 602, 398, 386, 221, 600, 396, 385, 337, + 358, 359, 283, 310, 452, 378, 453, 309, 311, 408, + 407, 409, 209, 615, 633, 0, 210, 0, 505, 618, + 660, 457, 214, 236, 237, 239, 1323, 282, 286, 294, + 297, 306, 307, 316, 370, 423, 451, 447, 456, 1414, + 585, 609, 623, 635, 641, 642, 644, 645, 646, 647, + 648, 651, 649, 411, 314, 501, 336, 376, 1403, 1446, + 429, 478, 242, 613, 502, 201, 1317, 1322, 1315, 0, + 257, 258, 1385, 581, 1318, 1316, 1374, 1375, 1319, 1437, + 1438, 1439, 1424, 661, 662, 663, 664, 665, 666, 667, + 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, + 678, 656, 514, 520, 515, 516, 517, 518, 519, 0, + 521, 1407, 1311, 0, 1320, 1321, 402, 1416, 598, 599, + 679, 387, 492, 610, 338, 352, 355, 344, 364, 0, + 365, 340, 341, 346, 349, 350, 351, 356, 357, 361, + 367, 251, 212, 394, 403, 584, 315, 218, 219, 220, + 530, 531, 532, 533, 626, 627, 631, 207, 468, 469, + 470, 471, 295, 621, 312, 474, 473, 334, 335, 382, + 454, 546, 548, 559, 563, 565, 567, 573, 576, 547, + 549, 560, 564, 566, 568, 574, 577, 536, 538, 540, + 542, 555, 554, 551, 579, 580, 557, 562, 541, 553, + 558, 571, 578, 575, 535, 539, 543, 552, 570, 569, + 550, 561, 572, 556, 544, 537, 545, 1378, 198, 223, + 371, 1442, 460, 291, 657, 625, 490, 620, 208, 225, + 1314, 265, 1326, 1334, 0, 1340, 1348, 1349, 1362, 1365, + 1366, 1367, 1368, 1386, 1387, 1389, 1397, 1399, 1402, 1404, + 1411, 1425, 1445, 200, 202, 211, 224, 234, 238, 245, + 264, 279, 281, 288, 301, 313, 321, 322, 325, 331, + 383, 390, 391, 392, 393, 413, 414, 415, 418, 421, + 422, 425, 427, 428, 431, 436, 440, 441, 442, 444, + 446, 448, 461, 466, 480, 481, 482, 483, 484, 487, + 488, 494, 495, 496, 497, 498, 506, 507, 522, 593, + 595, 612, 632, 639, 486, 388, 434, 458, 586, 304, + 305, 449, 450, 317, 318, 653, 654, 303, 607, 640, + 604, 652, 634, 443, 381, 1377, 1383, 384, 284, 308, + 323, 1392, 624, 508, 229, 472, 293, 253, 1410, 1412, + 213, 248, 232, 262, 277, 280, 327, 395, 404, 433, + 439, 299, 274, 246, 465, 243, 491, 525, 526, 527, + 529, 399, 269, 438, 1373, 1401, 379, 582, 583, 319, + 400, 0, 0, 0, 0, 0, 0, 1431, 1415, 534, + 0, 1357, 1434, 1325, 1344, 1444, 1347, 1350, 1394, 1303, + 1372, 420, 1341, 1329, 1298, 1336, 1299, 1327, 1359, 273, + 1324, 1417, 1376, 1433, 369, 270, 1305, 1296, 206, 511, + 1330, 435, 1346, 205, 1396, 493, 255, 380, 377, 590, + 285, 276, 272, 252, 320, 389, 432, 524, 426, 1440, + 373, 1382, 0, 503, 405, 0, 0, 0, 1421, 1420, + 1351, 1361, 1423, 1370, 1408, 1356, 1395, 1313, 1381, 1435, + 1342, 1391, 1436, 326, 250, 328, 204, 417, 504, 289, + 0, 0, 0, 0, 0, 513, 731, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 240, 0, 0, 247, + 0, 0, 0, 354, 363, 362, 342, 343, 345, 347, + 353, 360, 366, 339, 348, 1338, 1388, 616, 1430, 1339, + 1390, 268, 324, 275, 267, 587, 1441, 1422, 1302, 1369, + 1429, 1364, 603, 0, 0, 231, 1432, 1363, 0, 1393, + 0, 1447, 1297, 1384, 0, 1300, 1304, 1443, 1427, 1333, + 278, 0, 0, 0, 0, 0, 0, 0, 1360, 1371, + 1405, 1409, 1354, 0, 0, 0, 0, 0, 0, 3237, + 0, 1331, 0, 1380, 0, 0, 0, 1309, 1301, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1358, 0, 0, 0, 0, 1312, 0, 1332, 1406, + 0, 1295, 300, 1306, 406, 260, 0, 459, 1413, 1426, + 1355, 636, 1428, 1353, 1352, 1400, 1310, 1419, 1345, 368, + 1308, 333, 199, 227, 0, 1343, 416, 467, 479, 1418, + 1328, 1337, 256, 1335, 477, 430, 611, 235, 287, 464, + 437, 475, 445, 290, 1379, 1398, 476, 375, 592, 455, + 608, 637, 638, 266, 410, 622, 528, 630, 655, 228, + 263, 424, 512, 614, 500, 401, 588, 589, 332, 499, + 298, 203, 372, 643, 226, 485, 374, 244, 233, 594, + 619, 302, 254, 292, 462, 650, 215, 523, 605, 241, + 489, 0, 0, 658, 249, 510, 617, 606, 217, 601, + 509, 397, 329, 330, 216, 0, 463, 271, 296, 0, + 0, 261, 419, 596, 597, 259, 659, 230, 629, 222, + 1307, 628, 412, 591, 602, 398, 386, 221, 600, 396, + 385, 337, 358, 359, 283, 310, 452, 378, 453, 309, + 311, 408, 407, 409, 209, 615, 633, 0, 210, 0, + 505, 618, 660, 457, 214, 236, 237, 239, 1323, 282, + 286, 294, 297, 306, 307, 316, 370, 423, 451, 447, + 456, 1414, 585, 609, 623, 635, 641, 642, 644, 645, + 646, 647, 648, 651, 649, 411, 314, 501, 336, 376, + 1403, 1446, 429, 478, 242, 613, 502, 201, 1317, 1322, + 1315, 0, 257, 258, 1385, 581, 1318, 1316, 1374, 1375, + 1319, 1437, 1438, 1439, 1424, 661, 662, 663, 664, 665, + 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, + 676, 677, 678, 656, 514, 520, 515, 516, 517, 518, + 519, 0, 521, 1407, 1311, 0, 1320, 1321, 402, 1416, + 598, 599, 679, 387, 492, 610, 338, 352, 355, 344, + 364, 0, 365, 340, 341, 346, 349, 350, 351, 356, + 357, 361, 367, 251, 212, 394, 403, 584, 315, 218, + 219, 220, 530, 531, 532, 533, 626, 627, 631, 207, + 468, 469, 470, 471, 295, 621, 312, 474, 473, 334, + 335, 382, 454, 546, 548, 559, 563, 565, 567, 573, + 576, 547, 549, 560, 564, 566, 568, 574, 577, 536, + 538, 540, 542, 555, 554, 551, 579, 580, 557, 562, + 541, 553, 558, 571, 578, 575, 535, 539, 543, 552, + 570, 569, 550, 561, 572, 556, 544, 537, 545, 1378, + 198, 223, 371, 1442, 460, 291, 657, 625, 490, 620, + 208, 225, 1314, 265, 1326, 1334, 0, 1340, 1348, 1349, + 1362, 1365, 1366, 1367, 1368, 1386, 1387, 1389, 1397, 1399, + 1402, 1404, 1411, 1425, 1445, 200, 202, 211, 224, 234, + 238, 245, 264, 279, 281, 288, 301, 313, 321, 322, + 325, 331, 383, 390, 391, 392, 393, 413, 414, 415, + 418, 421, 422, 425, 427, 428, 431, 436, 440, 441, + 442, 444, 446, 448, 461, 466, 480, 481, 482, 483, + 484, 487, 488, 494, 495, 496, 497, 498, 506, 507, + 522, 593, 595, 612, 632, 639, 486, 388, 434, 458, + 586, 304, 305, 449, 450, 317, 318, 653, 654, 303, + 607, 640, 604, 652, 634, 443, 381, 1377, 1383, 384, + 284, 308, 323, 1392, 624, 508, 229, 472, 293, 253, + 1410, 1412, 213, 248, 232, 262, 277, 280, 327, 395, + 404, 433, 439, 299, 274, 246, 465, 243, 491, 525, + 526, 527, 529, 399, 269, 438, 1373, 1401, 379, 582, + 583, 319, 400, 0, 0, 0, 0, 0, 0, 1431, + 1415, 534, 0, 1357, 1434, 1325, 1344, 1444, 1347, 1350, + 1394, 1303, 1372, 420, 1341, 1329, 1298, 1336, 1299, 1327, + 1359, 273, 1324, 1417, 1376, 1433, 369, 270, 1305, 1296, + 206, 511, 1330, 435, 1346, 205, 1396, 493, 255, 380, + 377, 590, 285, 276, 272, 252, 320, 389, 432, 524, + 426, 1440, 373, 1382, 0, 503, 405, 0, 0, 0, + 1421, 1420, 1351, 1361, 1423, 1370, 1408, 1356, 1395, 1313, + 1381, 1435, 1342, 1391, 1436, 326, 250, 328, 204, 417, + 504, 289, 0, 0, 0, 0, 0, 513, 966, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 240, 0, + 0, 247, 0, 0, 0, 354, 363, 362, 342, 343, + 345, 347, 353, 360, 366, 339, 348, 1338, 1388, 616, + 1430, 1339, 1390, 268, 324, 275, 267, 587, 1441, 1422, + 1302, 1369, 1429, 1364, 603, 0, 0, 231, 1432, 1363, + 0, 1393, 0, 1447, 1297, 1384, 0, 1300, 1304, 1443, + 1427, 1333, 278, 0, 0, 0, 0, 0, 0, 0, + 1360, 1371, 1405, 1409, 1354, 0, 0, 0, 0, 0, + 0, 2428, 0, 1331, 0, 1380, 0, 0, 0, 1309, + 1301, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1358, 0, 0, 0, 0, 1312, 0, + 1332, 1406, 0, 1295, 300, 1306, 406, 260, 0, 459, + 1413, 1426, 1355, 636, 1428, 1353, 1352, 1400, 1310, 1419, + 1345, 368, 1308, 333, 199, 227, 0, 1343, 416, 467, + 479, 1418, 1328, 1337, 256, 1335, 477, 430, 611, 235, + 287, 464, 437, 475, 445, 290, 1379, 1398, 476, 375, + 592, 455, 608, 637, 638, 266, 410, 622, 528, 630, + 655, 228, 263, 424, 512, 614, 500, 401, 588, 589, + 332, 499, 298, 203, 372, 643, 226, 485, 374, 244, + 233, 594, 619, 302, 254, 292, 462, 650, 215, 523, + 605, 241, 489, 0, 0, 658, 249, 510, 617, 606, + 217, 601, 509, 397, 329, 330, 216, 0, 463, 271, + 296, 0, 0, 261, 419, 596, 597, 259, 659, 230, + 629, 222, 1307, 628, 412, 591, 602, 398, 386, 221, + 600, 396, 385, 337, 358, 359, 283, 310, 452, 378, + 453, 309, 311, 408, 407, 409, 209, 615, 633, 0, + 210, 0, 505, 618, 660, 457, 214, 236, 237, 239, + 1323, 282, 286, 294, 297, 306, 307, 316, 370, 423, + 451, 447, 456, 1414, 585, 609, 623, 635, 641, 642, + 644, 645, 646, 647, 648, 651, 649, 411, 314, 501, + 336, 376, 1403, 1446, 429, 478, 242, 613, 502, 201, + 1317, 1322, 1315, 0, 257, 258, 1385, 581, 1318, 1316, + 1374, 1375, 1319, 1437, 1438, 1439, 1424, 661, 662, 663, + 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, + 674, 675, 676, 677, 678, 656, 514, 520, 515, 516, + 517, 518, 519, 0, 521, 1407, 1311, 0, 1320, 1321, + 402, 1416, 598, 599, 679, 387, 492, 610, 338, 352, + 355, 344, 364, 0, 365, 340, 341, 346, 349, 350, + 351, 356, 357, 361, 367, 251, 212, 394, 403, 584, + 315, 218, 219, 220, 530, 531, 532, 533, 626, 627, + 631, 207, 468, 469, 470, 471, 295, 621, 312, 474, + 473, 334, 335, 382, 454, 546, 548, 559, 563, 565, + 567, 573, 576, 547, 549, 560, 564, 566, 568, 574, + 577, 536, 538, 540, 542, 555, 554, 551, 579, 580, + 557, 562, 541, 553, 558, 571, 578, 575, 535, 539, + 543, 552, 570, 569, 550, 561, 572, 556, 544, 537, + 545, 1378, 198, 223, 371, 1442, 460, 291, 657, 625, + 490, 620, 208, 225, 1314, 265, 1326, 1334, 0, 1340, + 1348, 1349, 1362, 1365, 1366, 1367, 1368, 1386, 1387, 1389, + 1397, 1399, 1402, 1404, 1411, 1425, 1445, 200, 202, 211, + 224, 234, 238, 245, 264, 279, 281, 288, 301, 313, + 321, 322, 325, 331, 383, 390, 391, 392, 393, 413, + 414, 415, 418, 421, 422, 425, 427, 428, 431, 436, + 440, 441, 442, 444, 446, 448, 461, 466, 480, 481, + 482, 483, 484, 487, 488, 494, 495, 496, 497, 498, + 506, 507, 522, 593, 595, 612, 632, 639, 486, 388, + 434, 458, 586, 304, 305, 449, 450, 317, 318, 653, + 654, 303, 607, 640, 604, 652, 634, 443, 381, 1377, + 1383, 384, 284, 308, 323, 1392, 624, 508, 229, 472, + 293, 253, 1410, 1412, 213, 248, 232, 262, 277, 280, + 327, 395, 404, 433, 439, 299, 274, 246, 465, 243, + 491, 525, 526, 527, 529, 399, 269, 438, 1373, 1401, + 379, 582, 583, 319, 400, 0, 0, 0, 0, 0, + 0, 1431, 1415, 534, 0, 1357, 1434, 1325, 1344, 1444, + 1347, 1350, 1394, 1303, 1372, 420, 1341, 1329, 1298, 1336, + 1299, 1327, 1359, 273, 1324, 1417, 1376, 1433, 369, 270, + 1305, 1296, 206, 511, 1330, 435, 1346, 205, 1396, 493, + 255, 380, 377, 590, 285, 276, 272, 252, 320, 389, + 432, 524, 426, 1440, 373, 1382, 0, 503, 405, 0, + 0, 0, 1421, 1420, 1351, 1361, 1423, 1370, 1408, 1356, + 1395, 1313, 1381, 1435, 1342, 1391, 1436, 326, 250, 328, + 204, 417, 504, 289, 0, 95, 0, 0, 0, 513, + 731, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 240, 0, 0, 247, 0, 0, 0, 354, 363, 362, + 342, 343, 345, 347, 353, 360, 366, 339, 348, 1338, + 1388, 616, 1430, 1339, 1390, 268, 324, 275, 267, 587, + 1441, 1422, 1302, 1369, 1429, 1364, 603, 0, 0, 231, + 1432, 1363, 0, 1393, 0, 1447, 1297, 1384, 0, 1300, + 1304, 1443, 1427, 1333, 278, 0, 0, 0, 0, 0, + 0, 0, 1360, 1371, 1405, 1409, 1354, 0, 0, 0, + 0, 0, 0, 0, 0, 1331, 0, 1380, 0, 0, + 0, 1309, 1301, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1358, 0, 0, 0, 0, + 1312, 0, 1332, 1406, 0, 1295, 300, 1306, 406, 260, + 0, 459, 1413, 1426, 1355, 636, 1428, 1353, 1352, 1400, + 1310, 1419, 1345, 368, 1308, 333, 199, 227, 0, 1343, + 416, 467, 479, 1418, 1328, 1337, 256, 1335, 477, 430, + 611, 235, 287, 464, 437, 475, 445, 290, 1379, 1398, + 476, 375, 592, 455, 608, 637, 638, 266, 410, 622, + 528, 630, 655, 228, 263, 424, 512, 614, 500, 401, + 588, 589, 332, 499, 298, 203, 372, 643, 226, 485, + 374, 244, 233, 594, 619, 302, 254, 292, 462, 650, + 215, 523, 605, 241, 489, 0, 0, 658, 249, 510, + 617, 606, 217, 601, 509, 397, 329, 330, 216, 0, + 463, 271, 296, 0, 0, 261, 419, 596, 597, 259, + 659, 230, 629, 222, 1307, 628, 412, 591, 602, 398, + 386, 221, 600, 396, 385, 337, 358, 359, 283, 310, + 452, 378, 453, 309, 311, 408, 407, 409, 209, 615, + 633, 0, 210, 0, 505, 618, 660, 457, 214, 236, + 237, 239, 1323, 282, 286, 294, 297, 306, 307, 316, + 370, 423, 451, 447, 456, 1414, 585, 609, 623, 635, + 641, 642, 644, 645, 646, 647, 648, 651, 649, 411, + 314, 501, 336, 376, 1403, 1446, 429, 478, 242, 613, + 502, 201, 1317, 1322, 1315, 0, 257, 258, 1385, 581, + 1318, 1316, 1374, 1375, 1319, 1437, 1438, 1439, 1424, 661, + 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, + 672, 673, 674, 675, 676, 677, 678, 656, 514, 520, + 515, 516, 517, 518, 519, 0, 521, 1407, 1311, 0, + 1320, 1321, 402, 1416, 598, 599, 679, 387, 492, 610, + 338, 352, 355, 344, 364, 0, 365, 340, 341, 346, + 349, 350, 351, 356, 357, 361, 367, 251, 212, 394, + 403, 584, 315, 218, 219, 220, 530, 531, 532, 533, + 626, 627, 631, 207, 468, 469, 470, 471, 295, 621, + 312, 474, 473, 334, 335, 382, 454, 546, 548, 559, + 563, 565, 567, 573, 576, 547, 549, 560, 564, 566, + 568, 574, 577, 536, 538, 540, 542, 555, 554, 551, + 579, 580, 557, 562, 541, 553, 558, 571, 578, 575, + 535, 539, 543, 552, 570, 569, 550, 561, 572, 556, + 544, 537, 545, 1378, 198, 223, 371, 1442, 460, 291, + 657, 625, 490, 620, 208, 225, 1314, 265, 1326, 1334, + 0, 1340, 1348, 1349, 1362, 1365, 1366, 1367, 1368, 1386, + 1387, 1389, 1397, 1399, 1402, 1404, 1411, 1425, 1445, 200, + 202, 211, 224, 234, 238, 245, 264, 279, 281, 288, + 301, 313, 321, 322, 325, 331, 383, 390, 391, 392, + 393, 413, 414, 415, 418, 421, 422, 425, 427, 428, + 431, 436, 440, 441, 442, 444, 446, 448, 461, 466, + 480, 481, 482, 483, 484, 487, 488, 494, 495, 496, + 497, 498, 506, 507, 522, 593, 595, 612, 632, 639, + 486, 388, 434, 458, 586, 304, 305, 449, 450, 317, + 318, 653, 654, 303, 607, 640, 604, 652, 634, 443, + 381, 1377, 1383, 384, 284, 308, 323, 1392, 624, 508, + 229, 472, 293, 253, 1410, 1412, 213, 248, 232, 262, + 277, 280, 327, 395, 404, 433, 439, 299, 274, 246, + 465, 243, 491, 525, 526, 527, 529, 399, 269, 438, + 1373, 1401, 379, 582, 583, 319, 400, 0, 0, 0, + 0, 0, 0, 1431, 1415, 534, 0, 1357, 1434, 1325, + 1344, 1444, 1347, 1350, 1394, 1303, 1372, 420, 1341, 1329, + 1298, 1336, 1299, 1327, 1359, 273, 1324, 1417, 1376, 1433, + 369, 270, 1305, 1296, 206, 511, 1330, 435, 1346, 205, + 1396, 493, 255, 380, 377, 590, 285, 276, 272, 252, + 320, 389, 432, 524, 426, 1440, 373, 1382, 0, 503, + 405, 0, 0, 0, 1421, 1420, 1351, 1361, 1423, 1370, + 1408, 1356, 1395, 1313, 1381, 1435, 1342, 1391, 1436, 326, + 250, 328, 204, 417, 504, 289, 0, 0, 0, 0, + 0, 513, 196, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 240, 0, 0, 247, 0, 0, 0, 354, + 363, 362, 342, 343, 345, 347, 353, 360, 366, 339, + 348, 1338, 1388, 616, 1430, 1339, 1390, 268, 324, 275, + 267, 587, 1441, 1422, 1302, 1369, 1429, 1364, 603, 0, + 0, 231, 1432, 1363, 0, 1393, 0, 1447, 1297, 1384, + 0, 1300, 1304, 1443, 1427, 1333, 278, 0, 0, 0, + 0, 0, 0, 0, 1360, 1371, 1405, 1409, 1354, 0, + 0, 0, 0, 0, 0, 0, 0, 1331, 0, 1380, + 0, 0, 0, 1309, 1301, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1358, 0, 0, + 0, 0, 1312, 0, 1332, 1406, 0, 1295, 300, 1306, + 406, 260, 0, 459, 1413, 1426, 1355, 636, 1428, 1353, + 1352, 1400, 1310, 1419, 1345, 368, 1308, 333, 199, 227, + 0, 1343, 416, 467, 479, 1418, 1328, 1337, 256, 1335, + 477, 430, 611, 235, 287, 464, 437, 475, 445, 290, + 1379, 1398, 476, 375, 592, 455, 608, 637, 638, 266, + 410, 622, 528, 630, 655, 228, 263, 424, 512, 614, + 500, 401, 588, 589, 332, 499, 298, 203, 372, 643, + 226, 485, 374, 244, 233, 594, 619, 302, 254, 292, + 462, 650, 215, 523, 605, 241, 489, 0, 0, 658, + 249, 510, 617, 606, 217, 601, 509, 397, 329, 330, + 216, 0, 463, 271, 296, 0, 0, 261, 419, 596, + 597, 259, 659, 230, 629, 222, 1307, 628, 412, 591, + 602, 398, 386, 221, 600, 396, 385, 337, 358, 359, + 283, 310, 452, 378, 453, 309, 311, 408, 407, 409, + 209, 615, 633, 0, 210, 0, 505, 618, 660, 457, + 214, 236, 237, 239, 1323, 282, 286, 294, 297, 306, + 307, 316, 370, 423, 451, 447, 456, 1414, 585, 609, + 623, 635, 641, 642, 644, 645, 646, 647, 648, 651, + 649, 411, 314, 501, 336, 376, 1403, 1446, 429, 478, + 242, 613, 502, 201, 1317, 1322, 1315, 0, 257, 258, + 1385, 581, 1318, 1316, 1374, 1375, 1319, 1437, 1438, 1439, + 1424, 661, 662, 663, 664, 665, 666, 667, 668, 669, + 670, 671, 672, 673, 674, 675, 676, 677, 678, 656, + 514, 520, 515, 516, 517, 518, 519, 0, 521, 1407, + 1311, 0, 1320, 1321, 402, 1416, 598, 599, 679, 387, + 492, 610, 338, 352, 355, 344, 364, 0, 365, 340, + 341, 346, 349, 350, 351, 356, 357, 361, 367, 251, + 212, 394, 403, 584, 315, 218, 219, 220, 530, 531, + 532, 533, 626, 627, 631, 207, 468, 469, 470, 471, + 295, 621, 312, 474, 473, 334, 335, 382, 454, 546, + 548, 559, 563, 565, 567, 573, 576, 547, 549, 560, + 564, 566, 568, 574, 577, 536, 538, 540, 542, 555, + 554, 551, 579, 580, 557, 562, 541, 553, 558, 571, + 578, 575, 535, 539, 543, 552, 570, 569, 550, 561, + 572, 556, 544, 537, 545, 1378, 198, 223, 371, 1442, + 460, 291, 657, 625, 490, 620, 208, 225, 1314, 265, + 1326, 1334, 0, 1340, 1348, 1349, 1362, 1365, 1366, 1367, + 1368, 1386, 1387, 1389, 1397, 1399, 1402, 1404, 1411, 1425, + 1445, 200, 202, 211, 224, 234, 238, 245, 264, 279, + 281, 288, 301, 313, 321, 322, 325, 331, 383, 390, + 391, 392, 393, 413, 414, 415, 418, 421, 422, 425, + 427, 428, 431, 436, 440, 441, 442, 444, 446, 448, + 461, 466, 480, 481, 482, 483, 484, 487, 488, 494, + 495, 496, 497, 498, 506, 507, 522, 593, 595, 612, + 632, 639, 486, 388, 434, 458, 586, 304, 305, 449, + 450, 317, 318, 653, 654, 303, 607, 640, 604, 652, + 634, 443, 381, 1377, 1383, 384, 284, 308, 323, 1392, + 624, 508, 229, 472, 293, 253, 1410, 1412, 213, 248, + 232, 262, 277, 280, 327, 395, 404, 433, 439, 299, + 274, 246, 465, 243, 491, 525, 526, 527, 529, 399, + 269, 438, 1373, 1401, 379, 582, 583, 319, 400, 0, + 0, 0, 0, 0, 0, 1431, 1415, 534, 0, 1357, + 1434, 1325, 1344, 1444, 1347, 1350, 1394, 1303, 1372, 420, + 1341, 1329, 1298, 1336, 1299, 1327, 1359, 273, 1324, 1417, + 1376, 1433, 369, 270, 1305, 1296, 206, 511, 1330, 435, + 1346, 205, 1396, 493, 255, 380, 377, 590, 285, 276, + 272, 252, 320, 389, 432, 524, 426, 1440, 373, 1382, + 0, 503, 405, 0, 0, 0, 1421, 1420, 1351, 1361, + 1423, 1370, 1408, 1356, 1395, 1313, 1381, 1435, 1342, 1391, + 1436, 326, 250, 328, 204, 417, 504, 289, 0, 0, + 0, 0, 0, 513, 731, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 240, 0, 0, 247, 0, 0, + 0, 354, 363, 362, 342, 343, 345, 347, 353, 360, + 366, 339, 348, 1338, 1388, 616, 1430, 1339, 1390, 268, + 324, 275, 267, 587, 1441, 1422, 1302, 1369, 1429, 1364, + 603, 0, 0, 231, 1432, 1363, 0, 1393, 0, 1447, + 1297, 1384, 0, 1300, 1304, 1443, 1427, 1333, 278, 0, + 0, 0, 0, 0, 0, 0, 1360, 1371, 1405, 1409, + 1354, 0, 0, 0, 0, 0, 0, 0, 0, 1331, + 0, 1380, 0, 0, 0, 1309, 1301, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1358, + 0, 0, 0, 0, 1312, 0, 1332, 1406, 0, 1295, + 300, 1306, 406, 260, 0, 459, 1413, 1426, 1355, 636, + 1428, 1353, 1352, 1400, 1310, 1419, 1345, 368, 1308, 333, + 199, 227, 0, 1343, 416, 467, 479, 1418, 1328, 1337, + 256, 1335, 477, 430, 611, 235, 287, 464, 437, 475, + 445, 290, 1379, 1398, 476, 375, 592, 455, 608, 637, + 638, 266, 410, 622, 528, 630, 655, 228, 263, 424, + 512, 614, 500, 401, 588, 589, 332, 499, 298, 203, + 372, 643, 226, 485, 374, 244, 233, 594, 619, 302, + 254, 292, 462, 650, 215, 523, 605, 241, 489, 0, + 0, 658, 249, 510, 617, 606, 217, 601, 509, 397, + 329, 330, 216, 0, 463, 271, 296, 0, 0, 261, + 419, 596, 597, 259, 659, 230, 629, 222, 1307, 628, + 412, 591, 602, 398, 386, 221, 600, 396, 385, 337, + 358, 359, 283, 310, 452, 378, 453, 309, 311, 408, + 407, 409, 209, 615, 633, 0, 210, 0, 505, 618, + 660, 457, 214, 236, 237, 239, 1323, 282, 286, 294, + 297, 306, 307, 316, 370, 423, 451, 447, 456, 1414, + 585, 609, 623, 635, 641, 642, 644, 645, 646, 647, + 648, 651, 649, 411, 314, 501, 336, 376, 1403, 1446, + 429, 478, 242, 613, 502, 201, 1317, 1322, 1315, 0, + 257, 258, 1385, 581, 1318, 1316, 1374, 1375, 1319, 1437, + 1438, 1439, 1424, 661, 662, 663, 664, 665, 666, 667, + 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, + 678, 656, 514, 520, 515, 516, 517, 518, 519, 0, + 521, 1407, 1311, 0, 1320, 1321, 402, 1416, 598, 599, + 679, 387, 492, 610, 338, 352, 355, 344, 364, 0, + 365, 340, 341, 346, 349, 350, 351, 356, 357, 361, + 367, 251, 212, 394, 403, 584, 315, 218, 219, 220, + 530, 531, 532, 533, 626, 627, 631, 207, 468, 469, + 470, 471, 295, 621, 312, 474, 473, 334, 335, 382, + 454, 546, 548, 559, 563, 565, 567, 573, 576, 547, + 549, 560, 564, 566, 568, 574, 577, 536, 538, 540, + 542, 555, 554, 551, 579, 580, 557, 562, 541, 553, + 558, 571, 578, 575, 535, 539, 543, 552, 570, 569, + 550, 561, 572, 556, 544, 537, 545, 1378, 198, 223, + 371, 1442, 460, 291, 657, 625, 490, 620, 208, 225, + 1314, 265, 1326, 1334, 0, 1340, 1348, 1349, 1362, 1365, + 1366, 1367, 1368, 1386, 1387, 1389, 1397, 1399, 1402, 1404, + 1411, 1425, 1445, 200, 202, 211, 224, 234, 238, 245, + 264, 279, 281, 288, 301, 313, 321, 322, 325, 331, + 383, 390, 391, 392, 393, 413, 414, 415, 418, 421, + 422, 425, 427, 428, 431, 436, 440, 441, 442, 444, + 446, 448, 461, 466, 480, 481, 482, 483, 484, 487, + 488, 494, 495, 496, 497, 498, 506, 507, 522, 593, + 595, 612, 632, 639, 486, 388, 434, 458, 586, 304, + 305, 449, 450, 317, 318, 653, 654, 303, 607, 640, + 604, 652, 634, 443, 381, 1377, 1383, 384, 284, 308, + 323, 1392, 624, 508, 229, 472, 293, 253, 1410, 1412, + 213, 248, 232, 262, 277, 280, 327, 395, 404, 433, + 439, 299, 274, 246, 465, 243, 491, 525, 526, 527, + 529, 399, 269, 438, 1373, 1401, 379, 582, 583, 319, + 400, 0, 0, 0, 0, 0, 0, 1431, 1415, 534, + 0, 1357, 1434, 1325, 1344, 1444, 1347, 1350, 1394, 1303, + 1372, 420, 1341, 1329, 1298, 1336, 1299, 1327, 1359, 273, + 1324, 1417, 1376, 1433, 369, 270, 1305, 1296, 206, 511, + 1330, 435, 1346, 205, 1396, 493, 255, 380, 377, 590, + 285, 276, 272, 252, 320, 389, 432, 524, 426, 1440, + 373, 1382, 0, 503, 405, 0, 0, 0, 1421, 1420, + 1351, 1361, 1423, 1370, 1408, 1356, 1395, 1313, 1381, 1435, + 1342, 1391, 1436, 326, 250, 328, 204, 417, 504, 289, + 0, 0, 0, 0, 0, 513, 966, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 240, 0, 0, 247, + 0, 0, 0, 354, 363, 362, 342, 343, 345, 347, + 353, 360, 366, 339, 348, 1338, 1388, 616, 1430, 1339, + 1390, 268, 324, 275, 267, 587, 1441, 1422, 1302, 1369, + 1429, 1364, 603, 0, 0, 231, 1432, 1363, 0, 1393, + 0, 1447, 1297, 1384, 0, 1300, 1304, 1443, 1427, 1333, + 278, 0, 0, 0, 0, 0, 0, 0, 1360, 1371, + 1405, 1409, 1354, 0, 0, 0, 0, 0, 0, 0, + 0, 1331, 0, 1380, 0, 0, 0, 1309, 1301, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1358, 0, 0, 0, 0, 1312, 0, 1332, 1406, + 0, 1295, 300, 1306, 406, 260, 0, 459, 1413, 1426, + 1355, 636, 1428, 1353, 1352, 1400, 1310, 1419, 1345, 368, + 1308, 333, 199, 227, 0, 1343, 416, 467, 479, 1418, + 1328, 1337, 256, 1335, 477, 430, 611, 235, 287, 464, + 437, 475, 445, 290, 1379, 1398, 476, 375, 592, 455, + 608, 637, 638, 266, 410, 622, 528, 630, 655, 228, + 263, 424, 512, 614, 500, 401, 588, 589, 332, 499, + 298, 203, 372, 643, 226, 485, 374, 244, 233, 594, + 619, 302, 254, 292, 462, 650, 215, 523, 605, 241, + 489, 0, 0, 658, 249, 510, 617, 606, 217, 601, + 509, 397, 329, 330, 216, 0, 463, 271, 296, 0, + 0, 261, 419, 596, 597, 259, 659, 230, 629, 222, + 1307, 628, 412, 591, 602, 398, 386, 221, 600, 396, + 385, 337, 358, 359, 283, 310, 452, 378, 453, 309, + 311, 408, 407, 409, 209, 615, 633, 0, 210, 0, + 505, 618, 660, 457, 214, 236, 237, 239, 1323, 282, + 286, 294, 297, 306, 307, 316, 370, 423, 451, 447, + 456, 1414, 585, 609, 623, 635, 641, 642, 644, 645, + 646, 647, 648, 651, 649, 411, 314, 501, 336, 376, + 1403, 1446, 429, 478, 242, 613, 502, 201, 1317, 1322, + 1315, 0, 257, 258, 1385, 581, 1318, 1316, 1374, 1375, + 1319, 1437, 1438, 1439, 1424, 661, 662, 663, 664, 665, + 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, + 676, 677, 678, 656, 514, 520, 515, 516, 517, 518, + 519, 0, 521, 1407, 1311, 0, 1320, 1321, 402, 1416, + 598, 599, 679, 387, 492, 610, 338, 352, 355, 344, + 364, 0, 365, 340, 341, 346, 349, 350, 351, 356, + 357, 361, 367, 251, 212, 394, 403, 584, 315, 218, + 219, 220, 530, 531, 532, 533, 626, 627, 631, 207, + 468, 469, 470, 471, 295, 621, 312, 474, 473, 334, + 335, 382, 454, 546, 548, 559, 563, 565, 567, 573, + 576, 547, 549, 560, 564, 566, 568, 574, 577, 536, + 538, 540, 542, 555, 554, 551, 579, 580, 557, 562, + 541, 553, 558, 571, 578, 575, 535, 539, 543, 552, + 570, 569, 550, 561, 572, 556, 544, 537, 545, 1378, + 198, 223, 371, 1442, 460, 291, 657, 625, 490, 620, + 208, 225, 1314, 265, 1326, 1334, 0, 1340, 1348, 1349, + 1362, 1365, 1366, 1367, 1368, 1386, 1387, 1389, 1397, 1399, + 1402, 1404, 1411, 1425, 1445, 200, 202, 211, 224, 234, + 238, 245, 264, 279, 281, 288, 301, 313, 321, 322, + 325, 331, 383, 390, 391, 392, 393, 413, 414, 415, + 418, 421, 422, 425, 427, 428, 431, 436, 440, 441, + 442, 444, 446, 448, 461, 466, 480, 481, 482, 483, + 484, 487, 488, 494, 495, 496, 497, 498, 506, 507, + 522, 593, 595, 612, 632, 639, 486, 388, 434, 458, + 586, 304, 305, 449, 450, 317, 318, 653, 654, 303, + 607, 640, 604, 652, 634, 443, 381, 1377, 1383, 384, + 284, 308, 323, 1392, 624, 508, 229, 472, 293, 253, + 1410, 1412, 213, 248, 232, 262, 277, 280, 327, 395, + 404, 433, 439, 299, 274, 246, 465, 243, 491, 525, + 526, 527, 529, 399, 269, 438, 1373, 1401, 379, 582, + 583, 319, 400, 0, 0, 0, 0, 0, 0, 0, + 0, 534, 0, 784, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 420, 0, 0, 0, 771, 0, 0, + 0, 273, 776, 0, 0, 0, 369, 270, 0, 0, + 206, 511, 0, 435, 0, 205, 0, 493, 255, 380, + 377, 590, 285, 276, 272, 252, 320, 389, 432, 524, + 426, 783, 373, 0, 0, 503, 405, 0, 0, 0, + 0, 0, 0, 0, 0, 778, 779, 0, 0, 0, + 0, 0, 0, 0, 0, 326, 250, 328, 204, 417, + 504, 289, 0, 95, 0, 0, 1032, 513, 966, 755, + 932, 970, 1033, 984, 985, 986, 971, 0, 240, 972, + 973, 247, 974, 0, 931, 814, 816, 815, 881, 882, + 883, 884, 885, 886, 887, 817, 818, 812, 979, 616, + 987, 988, 0, 268, 324, 275, 267, 587, 0, 0, + 2248, 2249, 2250, 0, 603, 0, 0, 231, 0, 0, + 0, 0, 0, 0, 0, 751, 768, 0, 782, 0, + 0, 0, 278, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 765, + 766, 0, 0, 0, 0, 926, 0, 767, 0, 0, + 775, 989, 990, 991, 992, 993, 994, 995, 996, 997, + 998, 999, 1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, + 1008, 1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017, + 1018, 1019, 1020, 1021, 1022, 1023, 1024, 1025, 1026, 1027, + 1028, 1029, 1030, 777, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 300, 0, 406, 260, 0, 459, + 925, 0, 0, 636, 0, 0, 923, 0, 0, 0, + 0, 368, 0, 333, 199, 227, 0, 0, 416, 467, + 479, 0, 0, 0, 976, 0, 477, 430, 611, 235, + 287, 464, 437, 475, 445, 290, 0, 0, 476, 375, + 592, 455, 608, 637, 638, 266, 410, 622, 528, 630, + 655, 228, 263, 424, 512, 614, 500, 401, 588, 589, + 332, 499, 298, 203, 372, 643, 226, 485, 374, 244, + 233, 594, 619, 302, 254, 292, 462, 650, 215, 523, + 605, 241, 489, 0, 0, 658, 249, 510, 617, 606, + 217, 601, 509, 397, 329, 330, 216, 0, 463, 271, + 296, 0, 0, 261, 419, 977, 978, 259, 659, 822, + 629, 222, 0, 628, 412, 591, 602, 398, 386, 221, + 600, 396, 385, 337, 830, 831, 283, 310, 907, 906, + 905, 309, 311, 903, 904, 902, 209, 615, 633, 0, + 210, 0, 505, 618, 660, 457, 214, 236, 237, 239, + 0, 282, 286, 294, 297, 306, 307, 316, 370, 423, + 451, 447, 456, 0, 585, 609, 623, 635, 641, 642, + 644, 645, 646, 647, 648, 651, 649, 411, 314, 501, + 336, 376, 0, 0, 429, 478, 242, 613, 502, 913, + 935, 924, 788, 789, 914, 915, 939, 916, 791, 792, + 936, 937, 785, 786, 790, 938, 940, 661, 662, 663, + 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, + 674, 675, 676, 677, 678, 656, 514, 520, 515, 516, + 517, 518, 519, 0, 521, 927, 774, 773, 0, 780, + 781, 0, 810, 811, 813, 819, 820, 821, 832, 879, + 880, 888, 890, 891, 889, 892, 893, 894, 897, 898, + 899, 900, 895, 896, 901, 793, 797, 794, 795, 796, + 808, 798, 799, 800, 801, 802, 803, 804, 805, 806, + 807, 809, 950, 951, 952, 953, 954, 955, 825, 829, + 828, 826, 827, 823, 824, 851, 850, 852, 853, 854, + 855, 856, 857, 859, 858, 860, 861, 862, 863, 864, + 865, 833, 834, 837, 838, 836, 835, 839, 848, 849, + 840, 841, 842, 843, 844, 845, 847, 846, 866, 867, + 868, 869, 870, 872, 871, 875, 876, 874, 873, 878, + 877, 772, 198, 223, 371, 0, 460, 291, 657, 625, + 490, 620, 208, 225, 941, 265, 942, 0, 0, 946, + 0, 0, 0, 948, 947, 0, 949, 911, 910, 0, + 0, 943, 944, 0, 945, 0, 0, 200, 202, 211, + 224, 234, 238, 245, 264, 279, 281, 288, 301, 313, + 321, 322, 325, 331, 383, 390, 391, 392, 393, 413, + 414, 415, 418, 421, 422, 425, 427, 428, 431, 436, + 440, 441, 442, 444, 446, 448, 461, 466, 480, 481, + 482, 483, 484, 487, 488, 494, 495, 496, 497, 498, + 506, 507, 522, 593, 595, 612, 632, 639, 486, 388, + 434, 458, 586, 956, 957, 958, 959, 960, 961, 962, + 963, 303, 607, 640, 604, 652, 634, 443, 381, 0, + 0, 384, 284, 308, 323, 0, 624, 508, 229, 472, + 293, 253, 1031, 0, 213, 248, 232, 262, 277, 280, + 327, 395, 404, 433, 439, 299, 274, 246, 465, 243, + 491, 525, 526, 527, 529, 399, 269, 438, 400, 0, + 379, 582, 583, 319, 0, 0, 0, 534, 0, 784, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 420, + 0, 0, 0, 771, 0, 0, 0, 273, 776, 0, + 0, 0, 369, 270, 0, 0, 206, 511, 0, 435, + 0, 205, 0, 493, 255, 380, 377, 590, 285, 276, + 272, 252, 320, 389, 432, 524, 426, 783, 373, 0, + 0, 503, 405, 0, 0, 0, 0, 0, 0, 0, + 0, 778, 779, 0, 0, 0, 0, 0, 0, 2457, + 0, 326, 250, 328, 204, 417, 504, 289, 0, 95, + 0, 0, 1032, 513, 966, 755, 932, 970, 1033, 984, + 985, 986, 971, 0, 240, 972, 973, 247, 974, 0, + 931, 814, 816, 815, 881, 882, 883, 884, 885, 886, + 887, 817, 818, 812, 979, 616, 987, 988, 2458, 268, + 324, 275, 267, 587, 0, 0, 0, 0, 0, 0, + 603, 0, 0, 231, 0, 0, 0, 0, 0, 0, + 0, 751, 768, 0, 782, 0, 0, 0, 278, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 765, 766, 0, 0, 0, + 0, 926, 0, 767, 0, 0, 775, 989, 990, 991, + 992, 993, 994, 995, 996, 997, 998, 999, 1000, 1001, + 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011, + 1012, 1013, 1014, 1015, 1016, 1017, 1018, 1019, 1020, 1021, + 1022, 1023, 1024, 1025, 1026, 1027, 1028, 1029, 1030, 777, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 300, 0, 406, 260, 0, 459, 925, 0, 0, 636, + 0, 0, 923, 0, 0, 0, 0, 368, 0, 333, + 199, 227, 0, 0, 416, 467, 479, 0, 0, 0, + 976, 0, 477, 430, 611, 235, 287, 464, 437, 475, + 445, 290, 0, 0, 476, 375, 592, 455, 608, 637, + 638, 266, 410, 622, 528, 630, 655, 228, 263, 424, + 512, 614, 500, 401, 588, 589, 332, 499, 298, 203, + 372, 643, 226, 485, 374, 244, 233, 594, 619, 302, + 254, 292, 462, 650, 215, 523, 605, 241, 489, 0, + 0, 658, 249, 510, 617, 606, 217, 601, 509, 397, + 329, 330, 216, 0, 463, 271, 296, 0, 0, 261, + 419, 977, 978, 259, 659, 822, 629, 222, 0, 628, + 412, 591, 602, 398, 386, 221, 600, 396, 385, 337, + 830, 831, 283, 310, 907, 906, 905, 309, 311, 903, + 904, 902, 209, 615, 633, 0, 210, 0, 505, 618, + 660, 457, 214, 236, 237, 239, 0, 282, 286, 294, + 297, 306, 307, 316, 370, 423, 451, 447, 456, 0, + 585, 609, 623, 635, 641, 642, 644, 645, 646, 647, + 648, 651, 649, 411, 314, 501, 336, 376, 0, 0, + 429, 478, 242, 613, 502, 913, 935, 924, 788, 789, + 914, 915, 939, 916, 791, 792, 936, 937, 785, 786, + 790, 938, 940, 661, 662, 663, 664, 665, 666, 667, + 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, + 678, 656, 514, 520, 515, 516, 517, 518, 519, 0, + 521, 927, 774, 773, 0, 780, 781, 0, 810, 811, + 813, 819, 820, 821, 832, 879, 880, 888, 890, 891, + 889, 892, 893, 894, 897, 898, 899, 900, 895, 896, + 901, 793, 797, 794, 795, 796, 808, 798, 799, 800, + 801, 802, 803, 804, 805, 806, 807, 809, 950, 951, + 952, 953, 954, 955, 825, 829, 828, 826, 827, 823, + 824, 851, 850, 852, 853, 854, 855, 856, 857, 859, + 858, 860, 861, 862, 863, 864, 865, 833, 834, 837, + 838, 836, 835, 839, 848, 849, 840, 841, 842, 843, + 844, 845, 847, 846, 866, 867, 868, 869, 870, 872, + 871, 875, 876, 874, 873, 878, 877, 772, 198, 223, + 371, 0, 460, 291, 657, 625, 490, 620, 208, 225, + 941, 265, 942, 0, 0, 946, 0, 0, 0, 948, + 947, 0, 949, 911, 910, 0, 0, 943, 944, 0, + 945, 0, 0, 200, 202, 211, 224, 234, 238, 245, + 264, 279, 281, 288, 301, 313, 321, 322, 325, 331, + 383, 390, 391, 392, 393, 413, 414, 415, 418, 421, + 422, 425, 427, 428, 431, 436, 440, 441, 442, 444, + 446, 448, 461, 466, 480, 481, 482, 483, 484, 487, + 488, 494, 495, 496, 497, 498, 506, 507, 522, 593, + 595, 612, 632, 639, 486, 388, 434, 458, 586, 956, + 957, 958, 959, 960, 961, 962, 963, 303, 607, 640, + 604, 652, 634, 443, 381, 0, 0, 384, 284, 308, + 323, 0, 624, 508, 229, 472, 293, 253, 1031, 0, + 213, 248, 232, 262, 277, 280, 327, 395, 404, 433, + 439, 299, 274, 246, 465, 243, 491, 525, 526, 527, + 529, 399, 269, 438, 400, 0, 379, 582, 583, 319, + 0, 0, 86, 534, 0, 784, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 420, 0, 0, 0, 771, + 0, 0, 0, 273, 776, 0, 0, 0, 369, 270, + 0, 0, 206, 511, 0, 435, 0, 205, 0, 493, + 255, 380, 377, 590, 285, 276, 272, 252, 320, 389, + 432, 524, 426, 1727, 373, 0, 0, 503, 405, 0, + 0, 0, 0, 0, 0, 0, 0, 778, 779, 0, + 0, 0, 0, 0, 0, 0, 0, 326, 250, 328, + 204, 417, 504, 289, 0, 95, 0, 0, 1032, 513, + 966, 755, 932, 970, 1033, 984, 985, 986, 971, 0, + 240, 972, 973, 247, 974, 0, 931, 814, 816, 815, + 881, 882, 883, 884, 885, 886, 887, 817, 818, 812, + 979, 616, 987, 988, 0, 268, 324, 275, 267, 587, + 0, 0, 0, 0, 0, 0, 603, 0, 0, 231, + 0, 0, 0, 0, 0, 0, 0, 751, 768, 0, + 782, 0, 0, 0, 278, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 765, 766, 0, 0, 0, 0, 926, 0, 767, + 0, 0, 775, 989, 990, 991, 992, 993, 994, 995, + 996, 997, 998, 999, 1000, 1001, 1002, 1003, 1004, 1005, + 1006, 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014, 1015, + 1016, 1017, 1018, 1019, 1020, 1021, 1022, 1023, 1024, 1025, + 1026, 1027, 1028, 1029, 1030, 777, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 300, 0, 406, 260, + 0, 459, 925, 0, 0, 636, 0, 0, 923, 0, + 0, 0, 0, 368, 0, 333, 199, 227, 0, 0, + 416, 467, 479, 0, 0, 0, 976, 0, 477, 430, + 611, 235, 287, 464, 437, 475, 445, 290, 0, 0, + 476, 375, 592, 455, 608, 637, 638, 266, 410, 622, + 528, 630, 655, 228, 263, 424, 512, 614, 500, 401, + 588, 589, 332, 499, 298, 203, 372, 643, 226, 485, + 374, 244, 233, 594, 619, 302, 254, 292, 462, 650, + 215, 523, 605, 241, 489, 0, 0, 658, 249, 510, + 617, 606, 217, 601, 509, 397, 329, 330, 216, 0, + 463, 271, 296, 0, 0, 261, 419, 977, 978, 259, + 659, 822, 629, 222, 0, 628, 412, 591, 602, 398, + 386, 221, 600, 396, 385, 337, 830, 831, 283, 310, + 907, 906, 905, 309, 311, 903, 904, 902, 209, 615, + 633, 0, 210, 0, 505, 618, 660, 457, 214, 236, + 237, 239, 0, 282, 286, 294, 297, 306, 307, 316, + 370, 423, 451, 447, 456, 0, 585, 609, 623, 635, + 641, 642, 644, 645, 646, 647, 648, 651, 649, 411, + 314, 501, 336, 376, 0, 0, 429, 478, 242, 613, + 502, 913, 935, 924, 788, 789, 914, 915, 939, 916, + 791, 792, 936, 937, 785, 786, 790, 938, 940, 661, + 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, + 672, 673, 674, 675, 676, 677, 678, 656, 514, 520, + 515, 516, 517, 518, 519, 0, 521, 927, 774, 773, + 0, 780, 781, 0, 810, 811, 813, 819, 820, 821, + 832, 879, 880, 888, 890, 891, 889, 892, 893, 894, + 897, 898, 899, 900, 895, 896, 901, 793, 797, 794, + 795, 796, 808, 798, 799, 800, 801, 802, 803, 804, + 805, 806, 807, 809, 950, 951, 952, 953, 954, 955, + 825, 829, 828, 826, 827, 823, 824, 851, 850, 852, + 853, 854, 855, 856, 857, 859, 858, 860, 861, 862, + 863, 864, 865, 833, 834, 837, 838, 836, 835, 839, + 848, 849, 840, 841, 842, 843, 844, 845, 847, 846, + 866, 867, 868, 869, 870, 872, 871, 875, 876, 874, + 873, 878, 877, 772, 198, 223, 371, 94, 460, 291, + 657, 625, 490, 620, 208, 225, 941, 265, 942, 0, + 0, 946, 0, 0, 0, 948, 947, 0, 949, 911, + 910, 0, 0, 943, 944, 0, 945, 0, 0, 200, + 202, 211, 224, 234, 238, 245, 264, 279, 281, 288, + 301, 313, 321, 322, 325, 331, 383, 390, 391, 392, + 393, 413, 414, 415, 418, 421, 422, 425, 427, 428, + 431, 436, 440, 441, 442, 444, 446, 448, 461, 466, + 480, 481, 482, 483, 484, 487, 488, 494, 495, 496, + 497, 498, 506, 507, 522, 593, 595, 612, 632, 639, + 486, 388, 434, 458, 586, 956, 957, 958, 959, 960, + 961, 962, 963, 303, 607, 640, 604, 652, 634, 443, + 381, 0, 0, 384, 284, 308, 323, 0, 624, 508, + 229, 472, 293, 253, 1031, 0, 213, 248, 232, 262, + 277, 280, 327, 395, 404, 433, 439, 299, 274, 246, + 465, 243, 491, 525, 526, 527, 529, 399, 269, 438, + 400, 0, 379, 582, 583, 319, 0, 0, 0, 534, + 0, 784, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 420, 0, 0, 0, 771, 0, 0, 0, 273, + 776, 0, 0, 0, 369, 270, 0, 0, 206, 511, + 0, 435, 0, 205, 0, 493, 255, 380, 377, 590, + 285, 276, 272, 252, 320, 389, 432, 524, 426, 783, + 373, 0, 0, 503, 405, 0, 0, 0, 0, 0, + 0, 0, 0, 778, 779, 0, 0, 0, 0, 0, + 0, 0, 0, 326, 250, 328, 204, 417, 504, 289, + 0, 95, 0, 0, 1032, 513, 966, 755, 932, 970, + 1033, 984, 985, 986, 971, 0, 240, 972, 973, 247, + 974, 0, 931, 814, 816, 815, 881, 882, 883, 884, + 885, 886, 887, 817, 818, 812, 979, 616, 987, 988, + 0, 268, 324, 275, 267, 587, 0, 0, 0, 0, + 0, 0, 603, 0, 0, 231, 0, 0, 0, 0, + 0, 0, 0, 751, 768, 0, 782, 0, 0, 0, + 278, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 765, 766, 0, + 0, 0, 0, 926, 0, 767, 0, 0, 775, 989, + 990, 991, 992, 993, 994, 995, 996, 997, 998, 999, + 1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, + 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018, 1019, + 1020, 1021, 1022, 1023, 1024, 1025, 1026, 1027, 1028, 1029, + 1030, 777, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 300, 0, 406, 260, 0, 459, 925, 0, + 0, 636, 0, 0, 923, 0, 0, 0, 0, 368, + 0, 333, 199, 227, 0, 0, 416, 467, 479, 0, + 0, 0, 976, 0, 477, 430, 611, 235, 287, 464, + 437, 475, 445, 290, 4118, 0, 476, 375, 592, 455, + 608, 637, 638, 266, 410, 622, 528, 630, 655, 228, + 263, 424, 512, 614, 500, 401, 588, 589, 332, 499, + 298, 203, 372, 643, 226, 485, 374, 244, 233, 594, + 619, 302, 254, 292, 462, 650, 215, 523, 605, 241, + 489, 0, 0, 658, 249, 510, 617, 606, 217, 601, + 509, 397, 329, 330, 216, 0, 463, 271, 296, 0, + 0, 261, 419, 977, 978, 259, 659, 822, 629, 222, + 0, 628, 412, 591, 602, 398, 386, 221, 600, 396, + 385, 337, 830, 831, 283, 310, 907, 906, 905, 309, + 311, 903, 904, 902, 209, 615, 633, 0, 210, 0, + 505, 618, 660, 457, 214, 236, 237, 239, 0, 282, + 286, 294, 297, 306, 307, 316, 370, 423, 451, 447, + 456, 0, 585, 609, 623, 635, 641, 642, 644, 645, + 646, 647, 648, 651, 649, 411, 314, 501, 336, 376, + 0, 0, 429, 478, 242, 613, 502, 913, 935, 924, + 788, 789, 914, 915, 939, 916, 791, 792, 936, 937, + 785, 786, 790, 938, 940, 661, 662, 663, 664, 665, + 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, + 676, 677, 678, 656, 514, 520, 515, 516, 517, 518, + 519, 0, 521, 927, 774, 773, 0, 780, 781, 0, + 810, 811, 813, 819, 820, 821, 832, 879, 880, 888, + 890, 891, 889, 892, 893, 894, 897, 898, 899, 900, + 895, 896, 901, 793, 797, 794, 795, 796, 808, 798, + 799, 800, 801, 802, 803, 804, 805, 806, 807, 809, + 950, 951, 952, 953, 954, 955, 825, 829, 828, 826, + 827, 823, 824, 851, 850, 852, 853, 854, 855, 856, + 857, 859, 858, 860, 861, 862, 863, 864, 865, 833, + 834, 837, 838, 836, 835, 839, 848, 849, 840, 841, + 842, 843, 844, 845, 847, 846, 866, 867, 868, 869, + 870, 872, 871, 875, 876, 874, 873, 878, 877, 772, + 198, 223, 371, 0, 460, 291, 657, 625, 490, 620, + 208, 225, 941, 265, 942, 0, 0, 946, 0, 0, + 0, 948, 947, 0, 949, 911, 910, 0, 0, 943, + 944, 0, 945, 0, 0, 200, 202, 211, 224, 234, + 238, 245, 264, 279, 281, 288, 301, 313, 321, 322, + 325, 331, 383, 390, 391, 392, 393, 413, 414, 415, + 418, 421, 422, 425, 427, 428, 431, 436, 440, 441, + 442, 444, 446, 448, 461, 466, 480, 481, 482, 483, + 484, 487, 488, 494, 495, 496, 497, 498, 506, 507, + 522, 593, 595, 612, 632, 639, 486, 388, 434, 458, + 586, 956, 957, 958, 959, 960, 961, 962, 963, 303, + 607, 640, 604, 652, 634, 443, 381, 0, 0, 384, + 284, 308, 323, 0, 624, 508, 229, 472, 293, 253, + 1031, 0, 213, 248, 232, 262, 277, 280, 327, 395, + 404, 433, 439, 299, 274, 246, 465, 243, 491, 525, + 526, 527, 529, 399, 269, 438, 400, 0, 379, 582, + 583, 319, 0, 0, 0, 534, 0, 784, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 420, 0, 0, + 0, 771, 0, 0, 0, 273, 776, 0, 0, 0, + 369, 270, 0, 0, 206, 511, 0, 435, 0, 205, + 0, 493, 255, 380, 377, 590, 285, 276, 272, 252, + 320, 389, 432, 524, 426, 783, 373, 0, 0, 503, + 405, 0, 0, 0, 0, 0, 0, 0, 0, 778, + 779, 0, 0, 0, 0, 0, 0, 0, 0, 326, + 250, 328, 204, 417, 504, 289, 0, 95, 0, 1764, + 1032, 513, 966, 755, 932, 970, 1033, 984, 985, 986, + 971, 0, 240, 972, 973, 247, 974, 0, 931, 814, + 816, 815, 881, 882, 883, 884, 885, 886, 887, 817, + 818, 812, 979, 616, 987, 988, 0, 268, 324, 275, + 267, 587, 0, 0, 0, 0, 0, 0, 603, 0, + 0, 231, 0, 0, 0, 0, 0, 0, 0, 751, + 768, 0, 782, 0, 0, 0, 278, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 765, 766, 0, 0, 0, 0, 926, + 0, 767, 0, 0, 775, 989, 990, 991, 992, 993, + 994, 995, 996, 997, 998, 999, 1000, 1001, 1002, 1003, + 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012, 1013, + 1014, 1015, 1016, 1017, 1018, 1019, 1020, 1021, 1022, 1023, + 1024, 1025, 1026, 1027, 1028, 1029, 1030, 777, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 300, 0, + 406, 260, 0, 459, 925, 0, 0, 636, 0, 0, + 923, 0, 0, 0, 0, 368, 0, 333, 199, 227, + 0, 0, 416, 467, 479, 0, 0, 0, 976, 0, + 477, 430, 611, 235, 287, 464, 437, 475, 445, 290, + 0, 0, 476, 375, 592, 455, 608, 637, 638, 266, + 410, 622, 528, 630, 655, 228, 263, 424, 512, 614, + 500, 401, 588, 589, 332, 499, 298, 203, 372, 643, + 226, 485, 374, 244, 233, 594, 619, 302, 254, 292, + 462, 650, 215, 523, 605, 241, 489, 0, 0, 658, + 249, 510, 617, 606, 217, 601, 509, 397, 329, 330, + 216, 0, 463, 271, 296, 0, 0, 261, 419, 977, + 978, 259, 659, 822, 629, 222, 0, 628, 412, 591, + 602, 398, 386, 221, 600, 396, 385, 337, 830, 831, + 283, 310, 907, 906, 905, 309, 311, 903, 904, 902, + 209, 615, 633, 0, 210, 0, 505, 618, 660, 457, + 214, 236, 237, 239, 0, 282, 286, 294, 297, 306, + 307, 316, 370, 423, 451, 447, 456, 0, 585, 609, + 623, 635, 641, 642, 644, 645, 646, 647, 648, 651, + 649, 411, 314, 501, 336, 376, 0, 0, 429, 478, + 242, 613, 502, 913, 935, 924, 788, 789, 914, 915, + 939, 916, 791, 792, 936, 937, 785, 786, 790, 938, + 940, 661, 662, 663, 664, 665, 666, 667, 668, 669, + 670, 671, 672, 673, 674, 675, 676, 677, 678, 656, + 514, 520, 515, 516, 517, 518, 519, 0, 521, 927, + 774, 773, 0, 780, 781, 0, 810, 811, 813, 819, + 820, 821, 832, 879, 880, 888, 890, 891, 889, 892, + 893, 894, 897, 898, 899, 900, 895, 896, 901, 793, + 797, 794, 795, 796, 808, 798, 799, 800, 801, 802, + 803, 804, 805, 806, 807, 809, 950, 951, 952, 953, + 954, 955, 825, 829, 828, 826, 827, 823, 824, 851, + 850, 852, 853, 854, 855, 856, 857, 859, 858, 860, + 861, 862, 863, 864, 865, 833, 834, 837, 838, 836, + 835, 839, 848, 849, 840, 841, 842, 843, 844, 845, + 847, 846, 866, 867, 868, 869, 870, 872, 871, 875, + 876, 874, 873, 878, 877, 772, 198, 223, 371, 0, + 460, 291, 657, 625, 490, 620, 208, 225, 941, 265, + 942, 0, 0, 946, 0, 0, 0, 948, 947, 0, + 949, 911, 910, 0, 0, 943, 944, 0, 945, 0, + 0, 200, 202, 211, 224, 234, 238, 245, 264, 279, + 281, 288, 301, 313, 321, 322, 325, 331, 383, 390, + 391, 392, 393, 413, 414, 415, 418, 421, 422, 425, + 427, 428, 431, 436, 440, 441, 442, 444, 446, 448, + 461, 466, 480, 481, 482, 483, 484, 487, 488, 494, + 495, 496, 497, 498, 506, 507, 522, 593, 595, 612, + 632, 639, 486, 388, 434, 458, 586, 956, 957, 958, + 959, 960, 961, 962, 963, 303, 607, 640, 604, 652, + 634, 443, 381, 0, 0, 384, 284, 308, 323, 0, + 624, 508, 229, 472, 293, 253, 1031, 0, 213, 248, + 232, 262, 277, 280, 327, 395, 404, 433, 439, 299, + 274, 246, 465, 243, 491, 525, 526, 527, 529, 399, + 269, 438, 400, 0, 379, 582, 583, 319, 0, 0, + 0, 534, 0, 784, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 420, 0, 0, 0, 771, 0, 0, + 0, 273, 776, 0, 0, 0, 369, 270, 0, 0, + 206, 511, 0, 435, 0, 205, 0, 493, 255, 380, + 377, 590, 285, 276, 272, 252, 320, 389, 432, 524, + 426, 783, 373, 0, 0, 503, 405, 0, 0, 0, + 0, 0, 0, 0, 0, 778, 779, 0, 0, 0, + 0, 0, 0, 0, 0, 326, 250, 328, 204, 417, + 504, 289, 0, 95, 0, 0, 1032, 513, 966, 755, + 932, 970, 1033, 984, 985, 986, 971, 0, 240, 972, + 973, 247, 974, 0, 931, 814, 816, 815, 881, 882, + 883, 884, 885, 886, 887, 817, 818, 812, 979, 616, + 987, 988, 0, 268, 324, 275, 267, 587, 0, 0, + 0, 0, 0, 0, 603, 0, 0, 231, 0, 0, + 0, 0, 0, 0, 0, 751, 768, 0, 782, 0, + 0, 0, 278, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 765, + 766, 1079, 0, 0, 0, 926, 0, 767, 0, 0, + 775, 989, 990, 991, 992, 993, 994, 995, 996, 997, + 998, 999, 1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, + 1008, 1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017, + 1018, 1019, 1020, 1021, 1022, 1023, 1024, 1025, 1026, 1027, + 1028, 1029, 1030, 777, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 300, 0, 406, 260, 0, 459, + 925, 0, 0, 636, 0, 0, 923, 0, 0, 0, + 0, 368, 0, 333, 199, 227, 0, 0, 416, 467, + 479, 0, 0, 0, 976, 0, 477, 430, 611, 235, + 287, 464, 437, 475, 445, 290, 0, 0, 476, 375, + 592, 455, 608, 637, 638, 266, 410, 622, 528, 630, + 655, 228, 263, 424, 512, 614, 500, 401, 588, 589, + 332, 499, 298, 203, 372, 643, 226, 485, 374, 244, + 233, 594, 619, 302, 254, 292, 462, 650, 215, 523, + 605, 241, 489, 0, 0, 658, 249, 510, 617, 606, + 217, 601, 509, 397, 329, 330, 216, 0, 463, 271, + 296, 0, 0, 261, 419, 977, 978, 259, 659, 822, + 629, 222, 0, 628, 412, 591, 602, 398, 386, 221, + 600, 396, 385, 337, 830, 831, 283, 310, 907, 906, + 905, 309, 311, 903, 904, 902, 209, 615, 633, 0, + 210, 0, 505, 618, 660, 457, 214, 236, 237, 239, + 0, 282, 286, 294, 297, 306, 307, 316, 370, 423, + 451, 447, 456, 0, 585, 609, 623, 635, 641, 642, + 644, 645, 646, 647, 648, 651, 649, 411, 314, 501, + 336, 376, 0, 0, 429, 478, 242, 613, 502, 913, + 935, 924, 788, 789, 914, 915, 939, 916, 791, 792, + 936, 937, 785, 786, 790, 938, 940, 661, 662, 663, + 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, + 674, 675, 676, 677, 678, 656, 514, 520, 515, 516, + 517, 518, 519, 0, 521, 927, 774, 773, 0, 780, + 781, 0, 810, 811, 813, 819, 820, 821, 832, 879, + 880, 888, 890, 891, 889, 892, 893, 894, 897, 898, + 899, 900, 895, 896, 901, 793, 797, 794, 795, 796, + 808, 798, 799, 800, 801, 802, 803, 804, 805, 806, + 807, 809, 950, 951, 952, 953, 954, 955, 825, 829, + 828, 826, 827, 823, 824, 851, 850, 852, 853, 854, + 855, 856, 857, 859, 858, 860, 861, 862, 863, 864, + 865, 833, 834, 837, 838, 836, 835, 839, 848, 849, + 840, 841, 842, 843, 844, 845, 847, 846, 866, 867, + 868, 869, 870, 872, 871, 875, 876, 874, 873, 878, + 877, 772, 198, 223, 371, 0, 460, 291, 657, 625, + 490, 620, 208, 225, 941, 265, 942, 0, 0, 946, + 0, 0, 0, 948, 947, 0, 949, 911, 910, 0, + 0, 943, 944, 0, 945, 0, 0, 200, 202, 211, + 224, 234, 238, 245, 264, 279, 281, 288, 301, 313, + 321, 322, 325, 331, 383, 390, 391, 392, 393, 413, + 414, 415, 418, 421, 422, 425, 427, 428, 431, 436, + 440, 441, 442, 444, 446, 448, 461, 466, 480, 481, + 482, 483, 484, 487, 488, 494, 495, 496, 497, 498, + 506, 507, 522, 593, 595, 612, 632, 639, 486, 388, + 434, 458, 586, 956, 957, 958, 959, 960, 961, 962, + 963, 303, 607, 640, 604, 652, 634, 443, 381, 0, + 0, 384, 284, 308, 323, 0, 624, 508, 229, 472, + 293, 253, 1031, 0, 213, 248, 232, 262, 277, 280, + 327, 395, 404, 433, 439, 299, 274, 246, 465, 243, + 491, 525, 526, 527, 529, 399, 269, 438, 400, 0, + 379, 582, 583, 319, 0, 0, 0, 534, 0, 784, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 420, + 0, 0, 0, 771, 0, 0, 0, 273, 776, 0, + 0, 0, 369, 270, 0, 0, 206, 511, 0, 435, + 0, 205, 0, 493, 255, 380, 377, 590, 285, 276, + 272, 252, 320, 389, 432, 524, 426, 783, 373, 0, + 0, 503, 405, 0, 0, 0, 0, 0, 0, 0, + 0, 778, 779, 0, 0, 0, 0, 0, 0, 0, + 0, 326, 250, 328, 204, 417, 504, 289, 0, 95, + 0, 0, 1032, 513, 966, 755, 932, 970, 1033, 984, + 985, 986, 971, 0, 240, 972, 973, 247, 974, 0, + 931, 814, 816, 815, 881, 882, 883, 884, 885, 886, + 887, 817, 818, 812, 979, 616, 987, 988, 0, 268, + 324, 275, 267, 587, 0, 0, 0, 0, 0, 0, + 603, 0, 0, 231, 0, 0, 0, 0, 0, 0, + 0, 751, 768, 0, 782, 0, 0, 0, 278, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 765, 766, 0, 0, 0, + 0, 926, 0, 767, 0, 0, 775, 989, 990, 991, + 992, 993, 994, 995, 996, 997, 998, 999, 1000, 1001, + 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011, + 1012, 1013, 1014, 1015, 1016, 1017, 1018, 1019, 1020, 1021, + 1022, 1023, 1024, 1025, 1026, 1027, 1028, 1029, 1030, 777, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 300, 0, 406, 260, 0, 459, 925, 0, 0, 636, + 0, 0, 923, 0, 0, 0, 0, 368, 0, 333, + 199, 227, 0, 0, 416, 467, 479, 0, 0, 0, + 976, 0, 477, 430, 611, 235, 287, 464, 437, 475, + 445, 290, 0, 0, 476, 375, 592, 455, 608, 637, + 638, 266, 410, 622, 528, 630, 655, 228, 263, 424, + 512, 614, 500, 401, 588, 589, 332, 499, 298, 203, + 372, 643, 226, 485, 374, 244, 233, 594, 619, 302, + 254, 292, 462, 650, 215, 523, 605, 241, 489, 0, + 0, 658, 249, 510, 617, 606, 217, 601, 509, 397, + 329, 330, 216, 0, 463, 271, 296, 0, 0, 261, + 419, 977, 978, 259, 659, 822, 629, 222, 0, 628, + 412, 591, 602, 398, 386, 221, 600, 396, 385, 337, + 830, 831, 283, 310, 907, 906, 905, 309, 311, 903, + 904, 902, 209, 615, 633, 0, 210, 0, 505, 618, + 660, 457, 214, 236, 237, 239, 0, 282, 286, 294, + 297, 306, 307, 316, 370, 423, 451, 447, 456, 0, + 585, 609, 623, 635, 641, 642, 644, 645, 646, 647, + 648, 651, 649, 411, 314, 501, 336, 376, 0, 0, + 429, 478, 242, 613, 502, 913, 935, 924, 788, 789, + 914, 915, 939, 916, 791, 792, 936, 937, 785, 786, + 790, 938, 940, 661, 662, 663, 664, 665, 666, 667, + 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, + 678, 656, 514, 520, 515, 516, 517, 518, 519, 0, + 521, 927, 774, 773, 0, 780, 781, 0, 810, 811, + 813, 819, 820, 821, 832, 879, 880, 888, 890, 891, + 889, 892, 893, 894, 897, 898, 899, 900, 895, 896, + 901, 793, 797, 794, 795, 796, 808, 798, 799, 800, + 801, 802, 803, 804, 805, 806, 807, 809, 950, 951, + 952, 953, 954, 955, 825, 829, 828, 826, 827, 823, + 824, 851, 850, 852, 853, 854, 855, 856, 857, 859, + 858, 860, 861, 862, 863, 864, 865, 833, 834, 837, + 838, 836, 835, 839, 848, 849, 840, 841, 842, 843, + 844, 845, 847, 846, 866, 867, 868, 869, 870, 872, + 871, 875, 876, 874, 873, 878, 877, 772, 198, 223, + 371, 0, 460, 291, 657, 625, 490, 620, 208, 225, + 941, 265, 942, 0, 0, 946, 0, 0, 0, 948, + 947, 0, 949, 911, 910, 0, 0, 943, 944, 0, + 945, 0, 0, 200, 202, 211, 224, 234, 238, 245, + 264, 279, 281, 288, 301, 313, 321, 322, 325, 331, + 383, 390, 391, 392, 393, 413, 414, 415, 418, 421, + 422, 425, 427, 428, 431, 436, 440, 441, 442, 444, + 446, 448, 461, 466, 480, 481, 482, 483, 484, 487, + 488, 494, 495, 496, 497, 498, 506, 507, 522, 593, + 595, 612, 632, 639, 486, 388, 434, 458, 586, 956, + 957, 958, 959, 960, 961, 962, 963, 303, 607, 640, + 604, 652, 634, 443, 381, 0, 0, 384, 284, 308, + 323, 0, 624, 508, 229, 472, 293, 253, 1031, 0, + 213, 248, 232, 262, 277, 280, 327, 395, 404, 433, + 439, 299, 274, 246, 465, 243, 491, 525, 526, 527, + 529, 399, 269, 438, 400, 0, 379, 582, 583, 319, + 0, 0, 0, 534, 0, 784, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 420, 0, 0, 0, 771, + 0, 0, 0, 273, 776, 0, 0, 0, 369, 270, + 0, 0, 206, 511, 0, 435, 0, 205, 0, 493, + 255, 380, 377, 590, 285, 276, 272, 252, 320, 389, + 432, 524, 426, 783, 373, 0, 0, 503, 405, 0, + 0, 0, 0, 0, 0, 0, 0, 778, 779, 0, + 0, 0, 0, 0, 0, 0, 0, 326, 250, 328, + 204, 417, 504, 289, 0, 95, 0, 0, 1032, 513, + 966, 755, 932, 970, 1033, 984, 985, 986, 971, 0, + 240, 972, 973, 247, 974, 0, 931, 814, 816, 815, + 881, 882, 883, 884, 885, 886, 887, 817, 818, 812, + 979, 616, 987, 988, 0, 268, 324, 275, 267, 587, + 0, 0, 0, 0, 0, 0, 603, 0, 0, 231, + 0, 0, 0, 0, 0, 0, 0, 751, 768, 0, + 782, 0, 0, 0, 278, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 765, 766, 0, 0, 0, 0, 926, 0, 767, + 0, 0, 775, 989, 990, 991, 992, 993, 994, 995, + 996, 997, 998, 999, 1000, 1001, 1002, 1003, 1004, 1005, + 1006, 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014, 1015, + 1016, 1017, 1018, 1019, 1020, 1021, 1022, 1023, 1024, 1025, + 1026, 1027, 1028, 1029, 1030, 3193, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 300, 0, 406, 260, + 0, 459, 925, 0, 0, 636, 0, 0, 923, 0, + 0, 0, 0, 368, 0, 333, 199, 227, 0, 0, + 416, 467, 479, 0, 0, 0, 976, 0, 477, 430, + 611, 235, 287, 464, 437, 475, 445, 290, 0, 0, + 476, 375, 592, 455, 608, 637, 638, 266, 410, 622, + 528, 630, 655, 228, 263, 424, 512, 614, 500, 401, + 588, 589, 332, 499, 298, 203, 372, 643, 226, 485, + 374, 244, 233, 594, 619, 302, 254, 292, 462, 650, + 215, 523, 605, 241, 489, 0, 0, 658, 249, 510, + 617, 606, 217, 601, 509, 397, 329, 330, 216, 0, + 463, 271, 296, 0, 0, 261, 419, 977, 978, 259, + 659, 822, 629, 222, 0, 628, 412, 591, 602, 398, + 386, 221, 600, 396, 385, 337, 830, 831, 283, 310, + 907, 906, 905, 309, 311, 903, 904, 902, 209, 615, + 633, 0, 210, 0, 505, 618, 660, 457, 214, 236, + 237, 239, 0, 282, 286, 294, 297, 306, 307, 316, + 370, 423, 451, 447, 456, 0, 585, 609, 623, 635, + 641, 642, 644, 645, 646, 647, 648, 651, 649, 411, + 314, 501, 336, 376, 0, 0, 429, 478, 242, 613, + 502, 913, 935, 924, 788, 789, 914, 915, 939, 916, + 791, 792, 936, 937, 785, 786, 790, 938, 940, 661, + 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, + 672, 673, 674, 675, 676, 677, 678, 656, 514, 520, + 515, 516, 517, 518, 519, 0, 521, 927, 774, 773, + 0, 780, 781, 0, 810, 811, 813, 819, 820, 821, + 832, 879, 880, 888, 890, 891, 889, 892, 893, 894, + 897, 898, 899, 900, 895, 896, 901, 793, 797, 794, + 795, 796, 808, 798, 799, 800, 801, 802, 803, 804, + 805, 806, 807, 809, 950, 951, 952, 953, 954, 955, + 825, 829, 828, 826, 827, 823, 824, 851, 850, 852, + 853, 854, 855, 856, 857, 859, 858, 860, 861, 862, + 863, 864, 865, 833, 834, 837, 838, 836, 835, 839, + 848, 849, 840, 841, 842, 843, 844, 845, 847, 846, + 866, 867, 868, 869, 870, 872, 871, 875, 876, 874, + 873, 878, 877, 772, 198, 223, 371, 0, 460, 291, + 657, 625, 490, 620, 208, 225, 941, 265, 942, 0, + 0, 946, 0, 0, 0, 948, 947, 0, 949, 911, + 910, 0, 0, 943, 944, 0, 945, 0, 0, 200, + 202, 211, 224, 234, 238, 245, 264, 279, 281, 288, + 301, 313, 321, 322, 325, 331, 383, 390, 391, 392, + 393, 413, 414, 415, 418, 421, 422, 425, 427, 428, + 431, 436, 440, 441, 442, 444, 446, 448, 461, 466, + 480, 481, 482, 483, 484, 487, 488, 494, 495, 496, + 497, 498, 506, 507, 522, 593, 595, 612, 632, 639, + 486, 388, 434, 458, 586, 956, 957, 958, 959, 960, + 961, 962, 963, 303, 607, 640, 604, 652, 634, 443, + 381, 0, 0, 384, 284, 308, 323, 0, 624, 508, + 229, 472, 293, 253, 1031, 0, 213, 248, 232, 262, + 277, 280, 327, 395, 404, 433, 439, 299, 274, 246, + 465, 243, 491, 525, 526, 527, 529, 399, 269, 438, + 400, 0, 379, 582, 583, 319, 0, 0, 0, 534, + 0, 784, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 420, 0, 0, 0, 771, 0, 0, 0, 273, + 776, 0, 0, 0, 369, 270, 0, 0, 206, 511, + 0, 435, 0, 205, 0, 493, 255, 380, 377, 590, + 285, 276, 272, 252, 320, 389, 432, 524, 426, 783, + 373, 0, 0, 503, 405, 0, 0, 0, 0, 0, + 0, 0, 0, 778, 779, 0, 0, 0, 0, 0, + 0, 0, 0, 326, 250, 328, 204, 417, 504, 289, + 0, 95, 0, 0, 1032, 513, 966, 755, 932, 970, + 1033, 984, 985, 986, 971, 0, 240, 972, 973, 247, + 974, 0, 931, 814, 816, 815, 881, 882, 883, 884, + 885, 886, 887, 817, 818, 812, 979, 616, 987, 988, + 0, 268, 324, 275, 267, 587, 0, 0, 0, 0, + 0, 0, 603, 0, 0, 231, 0, 0, 0, 0, + 0, 0, 0, 751, 768, 0, 782, 0, 0, 0, + 278, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 765, 766, 0, + 0, 0, 0, 926, 0, 767, 0, 0, 775, 989, + 990, 991, 992, 993, 994, 995, 996, 997, 998, 999, + 1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, + 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018, 1019, + 1020, 1021, 1022, 1023, 1024, 1025, 1026, 1027, 1028, 1029, + 1030, 3189, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 300, 0, 406, 260, 0, 459, 925, 0, + 0, 636, 0, 0, 923, 0, 0, 0, 0, 368, + 0, 333, 199, 227, 0, 0, 416, 467, 479, 0, + 0, 0, 976, 0, 477, 430, 611, 235, 287, 464, + 437, 475, 445, 290, 0, 0, 476, 375, 592, 455, + 608, 637, 638, 266, 410, 622, 528, 630, 655, 228, + 263, 424, 512, 614, 500, 401, 588, 589, 332, 499, + 298, 203, 372, 643, 226, 485, 374, 244, 233, 594, + 619, 302, 254, 292, 462, 650, 215, 523, 605, 241, + 489, 0, 0, 658, 249, 510, 617, 606, 217, 601, + 509, 397, 329, 330, 216, 0, 463, 271, 296, 0, + 0, 261, 419, 977, 978, 259, 659, 822, 629, 222, + 0, 628, 412, 591, 602, 398, 386, 221, 600, 396, + 385, 337, 830, 831, 283, 310, 907, 906, 905, 309, + 311, 903, 904, 902, 209, 615, 633, 0, 210, 0, + 505, 618, 660, 457, 214, 236, 237, 239, 0, 282, + 286, 294, 297, 306, 307, 316, 370, 423, 451, 447, + 456, 0, 585, 609, 623, 635, 641, 642, 644, 645, + 646, 647, 648, 651, 649, 411, 314, 501, 336, 376, + 0, 0, 429, 478, 242, 613, 502, 913, 935, 924, + 788, 789, 914, 915, 939, 916, 791, 792, 936, 937, + 785, 786, 790, 938, 940, 661, 662, 663, 664, 665, + 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, + 676, 677, 678, 656, 514, 520, 515, 516, 517, 518, + 519, 0, 521, 927, 774, 773, 0, 780, 781, 0, + 810, 811, 813, 819, 820, 821, 832, 879, 880, 888, + 890, 891, 889, 892, 893, 894, 897, 898, 899, 900, + 895, 896, 901, 793, 797, 794, 795, 796, 808, 798, + 799, 800, 801, 802, 803, 804, 805, 806, 807, 809, + 950, 951, 952, 953, 954, 955, 825, 829, 828, 826, + 827, 823, 824, 851, 850, 852, 853, 854, 855, 856, + 857, 859, 858, 860, 861, 862, 863, 864, 865, 833, + 834, 837, 838, 836, 835, 839, 848, 849, 840, 841, + 842, 843, 844, 845, 847, 846, 866, 867, 868, 869, + 870, 872, 871, 875, 876, 874, 873, 878, 877, 772, + 198, 223, 371, 0, 460, 291, 657, 625, 490, 620, + 208, 225, 941, 265, 942, 0, 0, 946, 0, 0, + 0, 948, 947, 0, 949, 911, 910, 0, 0, 943, + 944, 0, 945, 0, 0, 200, 202, 211, 224, 234, + 238, 245, 264, 279, 281, 288, 301, 313, 321, 322, + 325, 331, 383, 390, 391, 392, 393, 413, 414, 415, + 418, 421, 422, 425, 427, 428, 431, 436, 440, 441, + 442, 444, 446, 448, 461, 466, 480, 481, 482, 483, + 484, 487, 488, 494, 495, 496, 497, 498, 506, 507, + 522, 593, 595, 612, 632, 639, 486, 388, 434, 458, + 586, 956, 957, 958, 959, 960, 961, 962, 963, 303, + 607, 640, 604, 652, 634, 443, 381, 0, 0, 384, + 284, 308, 323, 0, 624, 508, 229, 472, 293, 253, + 1031, 0, 213, 248, 232, 262, 277, 280, 327, 395, + 404, 433, 439, 299, 274, 246, 465, 243, 491, 525, + 526, 527, 529, 399, 269, 438, 400, 0, 379, 582, + 583, 319, 0, 0, 0, 534, 0, 784, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 420, 0, 0, + 0, 771, 0, 0, 0, 273, 776, 0, 0, 0, + 369, 270, 0, 0, 206, 511, 0, 435, 0, 205, + 0, 493, 255, 380, 377, 590, 285, 276, 272, 252, + 320, 389, 432, 524, 426, 783, 373, 0, 0, 503, + 405, 0, 0, 0, 0, 0, 0, 0, 0, 778, + 779, 0, 0, 0, 0, 0, 0, 0, 0, 326, + 250, 328, 204, 417, 504, 289, 0, 95, 0, 0, + 1032, 513, 966, 1100, 932, 970, 1033, 984, 985, 986, + 971, 0, 240, 972, 973, 247, 974, 0, 931, 814, + 816, 815, 881, 882, 883, 884, 885, 886, 887, 817, + 818, 812, 979, 616, 987, 988, 0, 268, 324, 275, + 267, 587, 0, 0, 0, 0, 0, 0, 603, 0, + 0, 231, 0, 0, 0, 0, 0, 0, 0, 0, + 768, 0, 782, 0, 0, 0, 278, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 765, 766, 0, 0, 0, 0, 926, + 0, 767, 0, 0, 775, 989, 990, 991, 992, 993, + 994, 995, 996, 997, 998, 999, 1000, 1001, 1002, 1003, + 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011, 1012, 1013, + 1014, 1015, 1016, 1017, 1018, 1019, 1020, 1021, 1022, 1023, + 1024, 1025, 1026, 1027, 1028, 1029, 1030, 777, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 300, 0, + 406, 260, 0, 459, 925, 0, 0, 636, 0, 0, + 923, 0, 0, 0, 0, 368, 0, 333, 199, 227, + 0, 0, 416, 467, 479, 0, 0, 0, 976, 0, + 477, 430, 611, 235, 287, 464, 437, 475, 445, 290, + 0, 0, 476, 375, 592, 455, 608, 637, 638, 266, + 410, 622, 528, 630, 655, 228, 263, 424, 512, 614, + 500, 401, 588, 589, 332, 499, 298, 203, 372, 643, + 226, 485, 374, 244, 233, 594, 619, 302, 254, 292, + 462, 650, 215, 523, 605, 241, 489, 0, 0, 658, + 249, 510, 617, 606, 217, 601, 509, 397, 329, 330, + 216, 0, 463, 271, 296, 0, 0, 261, 419, 977, + 978, 259, 659, 822, 629, 222, 0, 628, 412, 591, + 602, 398, 386, 221, 600, 396, 385, 337, 830, 831, + 283, 310, 907, 906, 905, 309, 311, 903, 904, 902, + 209, 615, 633, 0, 210, 0, 505, 618, 660, 457, + 214, 236, 237, 239, 0, 282, 286, 294, 297, 306, + 307, 316, 370, 423, 451, 447, 456, 0, 585, 609, + 623, 635, 641, 642, 644, 645, 646, 647, 648, 651, + 649, 411, 314, 501, 336, 376, 0, 0, 429, 478, + 242, 613, 502, 913, 935, 924, 788, 789, 914, 915, + 939, 916, 791, 792, 936, 937, 785, 786, 790, 938, + 940, 661, 662, 663, 664, 665, 666, 667, 668, 669, + 670, 671, 672, 673, 674, 675, 676, 677, 678, 656, + 514, 520, 515, 516, 517, 518, 519, 0, 521, 927, + 774, 773, 0, 780, 781, 0, 810, 811, 813, 819, + 820, 821, 832, 879, 880, 888, 890, 891, 889, 892, + 893, 894, 897, 898, 899, 900, 895, 896, 901, 793, + 797, 794, 795, 796, 808, 798, 799, 800, 801, 802, + 803, 804, 805, 806, 807, 809, 950, 951, 952, 953, + 954, 955, 825, 829, 828, 826, 827, 823, 824, 851, + 850, 852, 853, 854, 855, 856, 857, 859, 858, 860, + 861, 862, 863, 864, 865, 833, 834, 837, 838, 836, + 835, 839, 848, 849, 840, 841, 842, 843, 844, 845, + 847, 846, 866, 867, 868, 869, 870, 872, 871, 875, + 876, 874, 873, 878, 877, 772, 198, 223, 371, 0, + 460, 291, 657, 625, 490, 620, 208, 225, 941, 265, + 942, 0, 0, 946, 0, 0, 0, 948, 947, 0, + 949, 911, 910, 0, 0, 943, 944, 0, 945, 0, + 0, 200, 202, 211, 224, 234, 238, 245, 264, 279, + 281, 288, 301, 313, 321, 322, 325, 331, 383, 390, + 391, 392, 393, 413, 414, 415, 418, 421, 422, 425, + 427, 428, 431, 436, 440, 441, 442, 444, 446, 448, + 461, 466, 480, 481, 482, 483, 484, 487, 488, 494, + 495, 496, 497, 498, 506, 507, 522, 593, 595, 612, + 632, 639, 486, 388, 434, 458, 586, 956, 957, 958, + 959, 960, 961, 962, 963, 303, 607, 640, 604, 652, + 634, 443, 381, 0, 0, 384, 284, 308, 323, 0, + 624, 508, 229, 472, 293, 253, 1031, 0, 213, 248, + 232, 262, 277, 280, 327, 395, 404, 433, 439, 299, + 274, 246, 465, 243, 491, 525, 526, 527, 529, 399, + 269, 438, 400, 0, 379, 582, 583, 319, 0, 0, + 0, 534, 0, 784, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 420, 0, 0, 0, 771, 0, 0, + 0, 273, 776, 0, 0, 0, 369, 270, 0, 0, + 206, 511, 0, 435, 0, 205, 0, 493, 255, 380, + 377, 590, 285, 276, 272, 252, 320, 389, 432, 524, + 426, 783, 373, 0, 0, 503, 405, 0, 0, 0, + 0, 0, 0, 0, 0, 778, 779, 0, 0, 0, + 0, 0, 0, 0, 0, 326, 250, 328, 204, 417, + 504, 289, 0, 95, 0, 0, 1032, 513, 966, 1100, + 932, 970, 1033, 984, 985, 986, 971, 0, 240, 972, + 973, 247, 974, 0, 931, 814, 816, 815, 881, 882, + 883, 884, 885, 886, 887, 817, 818, 812, 979, 616, + 987, 988, 0, 268, 324, 275, 267, 587, 0, 0, + 0, 0, 0, 0, 603, 0, 0, 231, 0, 0, + 0, 0, 0, 0, 0, 0, 768, 0, 782, 0, + 0, 0, 278, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 765, + 766, 0, 0, 0, 0, 926, 0, 767, 0, 0, + 775, 989, 990, 991, 992, 993, 994, 995, 996, 997, + 998, 999, 1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, + 1008, 1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017, + 1018, 1019, 1020, 1021, 1022, 1023, 1024, 1025, 1026, 1027, + 1028, 1029, 1030, 2139, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 300, 0, 406, 260, 0, 459, + 925, 0, 0, 636, 0, 0, 923, 0, 0, 0, + 0, 368, 0, 333, 199, 227, 0, 0, 416, 467, + 479, 0, 0, 0, 976, 0, 477, 430, 611, 235, + 287, 464, 437, 475, 445, 290, 0, 0, 476, 375, + 592, 455, 608, 637, 638, 266, 410, 622, 528, 630, + 655, 228, 263, 424, 512, 614, 500, 401, 588, 589, + 332, 499, 298, 203, 372, 643, 226, 485, 374, 244, + 233, 594, 619, 302, 254, 292, 462, 650, 215, 523, + 605, 241, 489, 0, 0, 658, 249, 510, 617, 606, + 217, 601, 509, 397, 329, 330, 216, 0, 463, 271, + 296, 0, 0, 261, 419, 977, 978, 259, 659, 822, + 629, 222, 0, 628, 412, 591, 602, 398, 386, 221, + 600, 396, 385, 337, 830, 831, 283, 310, 907, 906, + 905, 309, 311, 903, 904, 902, 209, 615, 633, 0, + 210, 0, 505, 618, 660, 457, 214, 236, 237, 239, + 0, 282, 286, 294, 297, 306, 307, 316, 370, 423, + 451, 447, 456, 0, 585, 609, 623, 635, 641, 642, + 644, 645, 646, 647, 648, 651, 649, 411, 314, 501, + 336, 376, 0, 0, 429, 478, 242, 613, 502, 913, + 935, 924, 788, 789, 914, 915, 939, 916, 791, 792, + 936, 937, 785, 786, 790, 938, 940, 661, 662, 663, + 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, + 674, 675, 676, 677, 678, 656, 514, 520, 515, 516, + 517, 518, 519, 0, 521, 927, 774, 773, 0, 780, + 781, 0, 810, 811, 813, 819, 820, 821, 832, 879, + 880, 888, 890, 891, 889, 892, 893, 894, 897, 898, + 899, 900, 895, 896, 901, 793, 797, 794, 795, 796, + 808, 798, 799, 800, 801, 802, 803, 804, 805, 806, + 807, 809, 950, 951, 952, 953, 954, 955, 825, 829, + 828, 826, 827, 823, 824, 851, 850, 852, 853, 854, + 855, 856, 857, 859, 858, 860, 861, 862, 863, 864, + 865, 833, 834, 837, 838, 836, 835, 839, 848, 849, + 840, 841, 842, 843, 844, 845, 847, 846, 866, 867, + 868, 869, 870, 872, 871, 875, 876, 874, 873, 878, + 877, 772, 198, 223, 371, 0, 460, 291, 657, 625, + 490, 620, 208, 225, 941, 265, 942, 0, 0, 946, + 0, 0, 0, 948, 947, 0, 949, 911, 910, 0, + 0, 943, 944, 0, 945, 0, 0, 200, 202, 211, + 224, 234, 238, 245, 264, 279, 281, 288, 301, 313, + 321, 322, 325, 331, 383, 390, 391, 392, 393, 413, + 414, 415, 418, 421, 422, 425, 427, 428, 431, 436, + 440, 441, 442, 444, 446, 448, 461, 466, 480, 481, + 482, 483, 484, 487, 488, 494, 495, 496, 497, 498, + 506, 507, 522, 593, 595, 612, 632, 639, 486, 388, + 434, 458, 586, 956, 957, 958, 959, 960, 961, 962, + 963, 303, 607, 640, 604, 652, 634, 443, 381, 0, + 0, 384, 284, 308, 323, 0, 624, 508, 229, 472, + 293, 253, 1031, 0, 213, 248, 232, 262, 277, 280, + 327, 395, 404, 433, 439, 299, 274, 246, 465, 243, + 491, 525, 526, 527, 529, 399, 269, 438, 400, 0, + 379, 582, 583, 319, 0, 0, 0, 534, 0, 784, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 420, + 0, 0, 0, 771, 0, 0, 0, 273, 776, 0, + 0, 0, 369, 270, 0, 0, 206, 511, 0, 435, + 0, 205, 0, 493, 255, 380, 377, 590, 285, 276, + 272, 252, 320, 389, 432, 524, 426, 783, 373, 0, + 0, 503, 405, 0, 0, 0, 0, 0, 0, 0, + 0, 778, 779, 0, 0, 0, 0, 0, 0, 0, + 0, 326, 250, 328, 204, 417, 504, 289, 0, 95, + 0, 0, 1032, 513, 966, 1100, 932, 970, 1033, 984, + 985, 986, 971, 0, 240, 972, 973, 247, 974, 0, + 931, 814, 816, 815, 881, 882, 883, 884, 885, 886, + 887, 817, 818, 812, 979, 616, 987, 988, 0, 268, + 324, 275, 267, 587, 0, 0, 0, 0, 0, 0, + 603, 0, 0, 231, 0, 0, 0, 0, 0, 0, + 0, 0, 768, 0, 782, 0, 0, 0, 278, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 765, 766, 0, 0, 0, + 0, 926, 0, 767, 0, 0, 775, 989, 990, 991, + 992, 993, 994, 995, 996, 997, 998, 999, 1000, 1001, + 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010, 1011, + 1012, 1013, 1014, 1015, 1016, 1017, 1018, 1019, 1020, 1021, + 1022, 1023, 1024, 1025, 1026, 1027, 1028, 1029, 1030, 2137, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 300, 0, 406, 260, 0, 459, 925, 0, 0, 636, + 0, 0, 923, 0, 0, 0, 0, 368, 0, 333, + 199, 227, 0, 0, 416, 467, 479, 0, 0, 0, + 976, 0, 477, 430, 611, 235, 287, 464, 437, 475, + 445, 290, 0, 0, 476, 375, 592, 455, 608, 637, + 638, 266, 410, 622, 528, 630, 655, 228, 263, 424, + 512, 614, 500, 401, 588, 589, 332, 499, 298, 203, + 372, 643, 226, 485, 374, 244, 233, 594, 619, 302, + 254, 292, 462, 650, 215, 523, 605, 241, 489, 0, + 0, 658, 249, 510, 617, 606, 217, 601, 509, 397, + 329, 330, 216, 0, 463, 271, 296, 0, 0, 261, + 419, 977, 978, 259, 659, 822, 629, 222, 0, 628, + 412, 591, 602, 398, 386, 221, 600, 396, 385, 337, + 830, 831, 283, 310, 907, 906, 905, 309, 311, 903, + 904, 902, 209, 615, 633, 0, 210, 0, 505, 618, + 660, 457, 214, 236, 237, 239, 0, 282, 286, 294, + 297, 306, 307, 316, 370, 423, 451, 447, 456, 0, + 585, 609, 623, 635, 641, 642, 644, 645, 646, 647, + 648, 651, 649, 411, 314, 501, 336, 376, 0, 0, + 429, 478, 242, 613, 502, 913, 935, 924, 788, 789, + 914, 915, 939, 916, 791, 792, 936, 937, 785, 786, + 790, 938, 940, 661, 662, 663, 664, 665, 666, 667, + 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, + 678, 656, 514, 520, 515, 516, 517, 518, 519, 0, + 521, 927, 774, 773, 0, 780, 781, 0, 810, 811, + 813, 819, 820, 821, 832, 879, 880, 888, 890, 891, + 889, 892, 893, 894, 897, 898, 899, 900, 895, 896, + 901, 793, 797, 794, 795, 796, 808, 798, 799, 800, + 801, 802, 803, 804, 805, 806, 807, 809, 950, 951, + 952, 953, 954, 955, 825, 829, 828, 826, 827, 823, + 824, 851, 850, 852, 853, 854, 855, 856, 857, 859, + 858, 860, 861, 862, 863, 864, 865, 833, 834, 837, + 838, 836, 835, 839, 848, 849, 840, 841, 842, 843, + 844, 845, 847, 846, 866, 867, 868, 869, 870, 872, + 871, 875, 876, 874, 873, 878, 877, 772, 198, 223, + 371, 0, 460, 291, 657, 625, 490, 620, 208, 225, + 941, 265, 942, 0, 0, 946, 0, 0, 0, 948, + 947, 0, 949, 911, 910, 0, 0, 943, 944, 0, + 945, 0, 0, 200, 202, 211, 224, 234, 238, 245, + 264, 279, 281, 288, 301, 313, 321, 322, 325, 331, + 383, 390, 391, 392, 393, 413, 414, 415, 418, 421, + 422, 425, 427, 428, 431, 436, 440, 441, 442, 444, + 446, 448, 461, 466, 480, 481, 482, 483, 484, 487, + 488, 494, 495, 496, 497, 498, 506, 507, 522, 593, + 595, 612, 632, 639, 486, 388, 434, 458, 586, 956, + 957, 958, 959, 960, 961, 962, 963, 303, 607, 640, + 604, 652, 634, 443, 381, 0, 0, 384, 284, 308, + 323, 0, 624, 508, 229, 472, 293, 253, 1031, 0, + 213, 248, 232, 262, 277, 280, 327, 395, 404, 433, + 439, 299, 274, 246, 465, 243, 491, 525, 526, 527, + 529, 399, 269, 438, 400, 0, 379, 582, 583, 319, + 0, 0, 0, 534, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 420, 0, 0, 0, 0, + 0, 0, 0, 273, 0, 0, 0, 0, 369, 270, + 0, 0, 206, 511, 0, 435, 0, 205, 0, 493, + 255, 380, 377, 590, 285, 276, 272, 252, 320, 389, + 432, 524, 426, 0, 373, 0, 0, 503, 405, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 326, 250, 328, + 204, 417, 504, 289, 0, 0, 0, 0, 0, 513, + 731, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 240, 0, 0, 247, 0, 0, 0, 354, 363, 362, + 342, 343, 345, 347, 353, 360, 366, 339, 348, 0, + 0, 616, 0, 0, 0, 268, 324, 275, 267, 587, + 0, 0, 0, 0, 0, 0, 603, 0, 0, 231, + 0, 1151, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 278, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 300, 0, 406, 260, + 0, 459, 0, 0, 1150, 636, 0, 0, 0, 0, + 0, 1147, 1148, 368, 1108, 333, 199, 227, 1141, 1145, + 416, 467, 479, 0, 0, 0, 256, 0, 477, 430, + 611, 235, 287, 464, 437, 475, 445, 290, 0, 0, + 476, 375, 592, 455, 608, 637, 638, 266, 410, 622, + 528, 630, 655, 228, 263, 424, 512, 614, 500, 401, + 588, 589, 332, 499, 298, 203, 372, 643, 226, 485, + 374, 244, 233, 594, 619, 302, 254, 292, 462, 650, + 215, 523, 605, 241, 489, 0, 0, 658, 249, 510, + 617, 606, 217, 601, 509, 397, 329, 330, 216, 0, + 463, 271, 296, 0, 0, 261, 419, 596, 597, 259, + 659, 230, 629, 222, 0, 628, 412, 591, 602, 398, + 386, 221, 600, 396, 385, 337, 358, 359, 283, 310, + 452, 378, 453, 309, 311, 408, 407, 409, 209, 615, + 633, 0, 210, 0, 505, 618, 660, 457, 214, 236, + 237, 239, 0, 282, 286, 294, 297, 306, 307, 316, + 370, 423, 451, 447, 456, 0, 585, 609, 623, 635, + 641, 642, 644, 645, 646, 647, 648, 651, 649, 411, + 314, 501, 336, 376, 0, 0, 429, 478, 242, 613, + 502, 201, 0, 0, 0, 0, 257, 258, 0, 581, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 661, + 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, + 672, 673, 674, 675, 676, 677, 678, 656, 514, 520, + 515, 516, 517, 518, 519, 0, 521, 0, 0, 0, + 0, 0, 402, 0, 598, 599, 679, 387, 492, 610, + 338, 352, 355, 344, 364, 0, 365, 340, 341, 346, + 349, 350, 351, 356, 357, 361, 367, 251, 212, 394, + 403, 584, 315, 218, 219, 220, 530, 531, 532, 533, + 626, 627, 631, 207, 468, 469, 470, 471, 295, 621, + 312, 474, 473, 334, 335, 382, 454, 546, 548, 559, + 563, 565, 567, 573, 576, 547, 549, 560, 564, 566, + 568, 574, 577, 536, 538, 540, 542, 555, 554, 551, + 579, 580, 557, 562, 541, 553, 558, 571, 578, 575, + 535, 539, 543, 552, 570, 569, 550, 561, 572, 556, + 544, 537, 545, 0, 198, 223, 371, 0, 460, 291, + 657, 625, 490, 620, 208, 225, 0, 265, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 200, + 202, 211, 224, 234, 238, 245, 264, 279, 281, 288, + 301, 313, 321, 322, 325, 331, 383, 390, 391, 392, + 393, 413, 414, 415, 418, 421, 422, 425, 427, 428, + 431, 436, 440, 441, 442, 444, 446, 448, 461, 466, + 480, 481, 482, 483, 484, 487, 488, 494, 495, 496, + 497, 498, 506, 507, 522, 593, 595, 612, 632, 639, + 486, 388, 434, 458, 586, 304, 305, 449, 450, 317, + 318, 653, 654, 303, 607, 640, 604, 652, 634, 443, + 381, 0, 0, 384, 284, 308, 323, 0, 624, 508, + 229, 472, 293, 253, 0, 0, 213, 248, 232, 262, + 277, 280, 327, 395, 404, 433, 439, 299, 274, 246, + 465, 243, 491, 525, 526, 527, 529, 399, 269, 438, + 400, 0, 379, 582, 583, 319, 0, 0, 86, 534, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 420, 0, 0, 0, 0, 0, 0, 0, 273, + 0, 0, 0, 0, 369, 270, 0, 0, 206, 511, + 0, 435, 0, 205, 0, 493, 255, 380, 377, 590, + 285, 276, 272, 252, 320, 389, 432, 524, 426, 97, + 373, 0, 0, 503, 405, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 326, 250, 328, 204, 417, 504, 289, + 0, 95, 0, 0, 0, 513, 196, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 240, 0, 0, 247, + 0, 0, 0, 354, 363, 362, 342, 343, 345, 347, + 353, 360, 366, 339, 348, 0, 0, 616, 0, 0, + 0, 268, 324, 275, 267, 587, 0, 0, 0, 0, + 0, 0, 603, 0, 0, 231, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 278, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 300, 0, 406, 260, 0, 459, 0, 0, + 0, 636, 0, 0, 0, 0, 0, 0, 0, 368, + 0, 333, 199, 227, 0, 0, 416, 467, 479, 0, + 0, 0, 256, 0, 477, 430, 611, 235, 287, 464, + 437, 475, 445, 290, 0, 0, 476, 375, 592, 455, + 608, 637, 638, 266, 410, 622, 528, 630, 655, 228, + 263, 424, 512, 614, 500, 401, 588, 589, 332, 499, + 298, 203, 372, 643, 226, 485, 374, 244, 233, 594, + 619, 302, 254, 292, 462, 650, 215, 523, 605, 241, + 489, 0, 0, 658, 249, 510, 617, 606, 217, 601, + 509, 397, 329, 330, 216, 0, 463, 271, 296, 0, + 0, 261, 419, 596, 597, 259, 659, 230, 629, 222, + 0, 628, 412, 591, 602, 398, 386, 221, 600, 396, + 385, 337, 358, 359, 283, 310, 452, 378, 453, 309, + 311, 408, 407, 409, 209, 615, 633, 0, 210, 0, + 505, 618, 660, 457, 214, 236, 237, 239, 0, 282, + 286, 294, 297, 306, 307, 316, 370, 423, 451, 447, + 456, 0, 585, 609, 623, 635, 641, 642, 644, 645, + 646, 647, 648, 651, 649, 411, 314, 501, 336, 376, + 0, 0, 429, 478, 242, 613, 502, 201, 0, 0, + 0, 0, 257, 258, 0, 581, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 661, 662, 663, 664, 665, + 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, + 676, 677, 678, 656, 514, 520, 515, 516, 517, 518, + 519, 0, 521, 0, 0, 0, 0, 0, 402, 0, + 598, 599, 679, 387, 492, 610, 338, 352, 355, 344, + 364, 0, 365, 340, 341, 346, 349, 350, 351, 356, + 357, 361, 367, 251, 212, 394, 403, 584, 315, 218, + 219, 220, 530, 531, 532, 533, 626, 627, 631, 207, + 468, 469, 470, 471, 295, 621, 312, 474, 473, 334, + 335, 382, 454, 546, 548, 559, 563, 565, 567, 573, + 576, 547, 549, 560, 564, 566, 568, 574, 577, 536, + 538, 540, 542, 555, 554, 551, 579, 580, 557, 562, + 541, 553, 558, 571, 578, 575, 535, 539, 543, 552, + 570, 569, 550, 561, 572, 556, 544, 537, 545, 0, + 198, 223, 371, 94, 460, 291, 657, 625, 490, 620, + 208, 225, 0, 265, 0, 0, 0, 0, 0, 0, + 2444, 0, 0, 2443, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 200, 202, 211, 224, 234, + 238, 245, 264, 279, 281, 288, 301, 313, 321, 322, + 325, 331, 383, 390, 391, 392, 393, 413, 414, 415, + 418, 421, 422, 425, 427, 428, 431, 436, 440, 441, + 442, 444, 446, 448, 461, 466, 480, 481, 482, 483, + 484, 487, 488, 494, 495, 496, 497, 498, 506, 507, + 522, 593, 595, 612, 632, 639, 486, 388, 434, 458, + 586, 304, 305, 449, 450, 317, 318, 653, 654, 303, + 607, 640, 604, 652, 634, 443, 381, 0, 0, 384, + 284, 308, 323, 0, 624, 508, 229, 472, 293, 253, + 0, 0, 213, 248, 232, 262, 277, 280, 327, 395, + 404, 433, 439, 299, 274, 246, 465, 243, 491, 525, + 526, 527, 529, 399, 269, 438, 400, 0, 379, 582, + 583, 319, 0, 0, 86, 534, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 420, 0, 0, + 0, 0, 0, 0, 0, 273, 0, 0, 0, 0, + 369, 270, 0, 0, 206, 511, 0, 435, 0, 205, + 0, 493, 255, 380, 377, 590, 285, 276, 272, 252, + 320, 389, 432, 524, 426, 97, 373, 0, 0, 503, + 405, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 326, + 250, 328, 204, 417, 504, 289, 0, 95, 0, 1764, + 0, 513, 731, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 240, 0, 0, 247, 0, 0, 0, 354, + 363, 362, 342, 343, 345, 347, 353, 360, 366, 339, + 348, 0, 0, 616, 0, 0, 0, 268, 324, 275, + 267, 587, 0, 0, 0, 0, 0, 0, 603, 0, + 0, 231, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 278, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 300, 0, + 406, 260, 0, 459, 0, 0, 0, 636, 0, 0, + 0, 0, 0, 0, 0, 368, 0, 333, 199, 227, + 0, 0, 416, 467, 479, 0, 0, 0, 256, 0, + 477, 430, 611, 235, 287, 464, 437, 475, 445, 290, + 0, 0, 476, 375, 592, 455, 608, 637, 638, 266, + 410, 622, 528, 630, 655, 228, 263, 424, 512, 614, + 500, 401, 588, 589, 332, 499, 298, 203, 372, 643, + 226, 485, 374, 244, 233, 594, 619, 302, 254, 292, + 462, 650, 215, 523, 605, 241, 489, 0, 0, 658, + 249, 510, 617, 606, 217, 601, 509, 397, 329, 330, + 216, 0, 463, 271, 296, 0, 0, 261, 419, 596, + 597, 259, 659, 230, 629, 222, 0, 628, 412, 591, + 602, 398, 386, 221, 600, 396, 385, 337, 358, 359, + 283, 310, 452, 378, 453, 309, 311, 408, 407, 409, + 209, 615, 633, 0, 210, 0, 505, 618, 660, 457, + 214, 236, 237, 239, 0, 282, 286, 294, 297, 306, + 307, 316, 370, 423, 451, 447, 456, 0, 585, 609, + 623, 635, 641, 642, 644, 645, 646, 647, 648, 651, + 649, 411, 314, 501, 336, 376, 0, 0, 429, 478, + 242, 613, 502, 201, 0, 0, 0, 0, 257, 258, + 0, 581, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 661, 662, 663, 664, 665, 666, 667, 668, 669, + 670, 671, 672, 673, 674, 675, 676, 677, 678, 656, + 514, 520, 515, 516, 517, 518, 519, 0, 521, 0, + 0, 0, 0, 0, 402, 0, 598, 599, 679, 387, + 492, 610, 338, 352, 355, 344, 364, 0, 365, 340, + 341, 346, 349, 350, 351, 356, 357, 361, 367, 251, + 212, 394, 403, 584, 315, 218, 219, 220, 530, 531, + 532, 533, 626, 627, 631, 207, 468, 469, 470, 471, + 295, 621, 312, 474, 473, 334, 335, 382, 454, 546, + 548, 559, 563, 565, 567, 573, 576, 547, 549, 560, + 564, 566, 568, 574, 577, 536, 538, 540, 542, 555, + 554, 551, 579, 580, 557, 562, 541, 553, 558, 571, + 578, 575, 535, 539, 543, 552, 570, 569, 550, 561, + 572, 556, 544, 537, 545, 0, 198, 223, 371, 94, + 460, 291, 657, 625, 490, 620, 208, 225, 0, 265, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 200, 202, 211, 224, 234, 238, 245, 264, 279, + 281, 288, 301, 313, 321, 322, 325, 331, 383, 390, + 391, 392, 393, 413, 414, 415, 418, 421, 422, 425, + 427, 428, 431, 436, 440, 441, 442, 444, 446, 448, + 461, 466, 480, 481, 482, 483, 484, 487, 488, 494, + 495, 496, 497, 498, 506, 507, 522, 593, 595, 612, + 632, 639, 486, 388, 434, 458, 586, 304, 305, 449, + 450, 317, 318, 653, 654, 303, 607, 640, 604, 652, + 634, 443, 381, 0, 0, 384, 284, 308, 323, 0, + 624, 508, 229, 472, 293, 253, 0, 0, 213, 248, + 232, 262, 277, 280, 327, 395, 404, 433, 439, 299, + 274, 246, 465, 243, 491, 525, 526, 527, 529, 399, + 269, 438, 1792, 0, 379, 582, 583, 319, 0, 0, + 0, 534, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 420, 0, 0, 1794, 0, 0, 0, + 0, 273, 0, 0, 0, 0, 369, 270, 0, 0, + 206, 511, 0, 435, 0, 205, 0, 493, 255, 380, + 377, 590, 285, 276, 272, 252, 320, 389, 432, 524, + 426, 0, 373, 0, 0, 503, 405, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 326, 250, 328, 204, 417, + 504, 289, 0, 0, 0, 0, 1796, 513, 731, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 240, 0, + 0, 247, 0, 0, 0, 354, 363, 362, 342, 343, + 345, 347, 353, 360, 366, 339, 348, 0, 0, 616, + 0, 0, 0, 268, 324, 275, 267, 587, 0, 0, + 0, 0, 0, 0, 603, 0, 0, 231, 0, 0, + 0, 1489, 0, 1490, 1491, 0, 0, 0, 0, 0, + 0, 0, 278, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 300, 0, 406, 260, 0, 459, + 0, 0, 0, 636, 0, 0, 0, 0, 0, 0, + 0, 368, 0, 333, 199, 227, 0, 0, 416, 467, + 479, 0, 0, 0, 256, 0, 477, 430, 611, 235, + 287, 464, 437, 475, 445, 290, 0, 0, 476, 375, + 592, 455, 608, 637, 638, 266, 410, 622, 528, 630, + 655, 228, 263, 424, 512, 614, 500, 401, 588, 589, + 332, 499, 298, 203, 372, 643, 226, 485, 374, 244, + 233, 594, 619, 302, 254, 292, 462, 650, 215, 523, + 605, 241, 489, 0, 0, 658, 249, 510, 617, 606, + 217, 601, 509, 397, 329, 330, 216, 0, 463, 271, + 296, 0, 0, 261, 419, 596, 597, 259, 659, 230, + 629, 222, 0, 628, 412, 591, 602, 398, 386, 221, + 600, 396, 385, 337, 358, 359, 283, 310, 452, 378, + 453, 309, 311, 408, 407, 409, 209, 615, 633, 0, + 210, 0, 505, 618, 660, 457, 214, 236, 237, 239, + 0, 282, 286, 294, 297, 306, 307, 316, 370, 423, + 451, 447, 456, 0, 585, 609, 623, 635, 641, 642, + 644, 645, 646, 647, 648, 651, 649, 411, 314, 501, + 336, 376, 0, 0, 429, 478, 242, 613, 502, 201, + 0, 0, 0, 0, 257, 258, 0, 581, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 661, 662, 663, + 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, + 674, 675, 676, 677, 678, 656, 514, 520, 515, 516, + 517, 518, 519, 0, 521, 0, 0, 0, 0, 0, + 402, 0, 598, 599, 679, 387, 492, 610, 338, 352, + 355, 344, 364, 0, 365, 340, 341, 346, 349, 350, + 351, 356, 357, 361, 367, 251, 212, 394, 403, 584, + 315, 218, 219, 220, 530, 531, 532, 533, 626, 627, + 631, 207, 468, 469, 470, 471, 295, 621, 312, 474, + 473, 334, 335, 382, 454, 546, 548, 559, 563, 565, + 567, 573, 576, 547, 549, 560, 564, 566, 568, 574, + 577, 536, 538, 540, 542, 555, 554, 551, 579, 580, + 557, 562, 541, 553, 558, 571, 578, 575, 535, 539, + 543, 552, 570, 569, 550, 561, 572, 556, 544, 537, + 545, 0, 198, 223, 371, 0, 460, 291, 657, 625, + 490, 620, 208, 225, 0, 265, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 200, 202, 211, + 224, 234, 238, 245, 264, 279, 281, 288, 301, 313, + 321, 322, 325, 331, 383, 390, 391, 392, 393, 413, + 414, 415, 418, 421, 422, 425, 427, 428, 431, 436, + 440, 441, 442, 444, 446, 448, 461, 466, 480, 481, + 482, 483, 484, 487, 488, 494, 495, 496, 497, 498, + 506, 507, 522, 593, 595, 612, 632, 639, 486, 388, + 434, 458, 586, 304, 305, 449, 450, 317, 318, 653, + 654, 303, 607, 640, 604, 652, 634, 443, 381, 0, + 0, 384, 284, 308, 323, 0, 624, 508, 229, 472, + 293, 253, 0, 0, 213, 248, 232, 262, 277, 280, + 327, 395, 404, 433, 439, 299, 274, 246, 465, 243, + 491, 525, 526, 527, 529, 399, 269, 438, 400, 0, + 379, 582, 583, 319, 0, 0, 0, 534, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 420, + 0, 0, 0, 0, 0, 0, 0, 273, 0, 0, + 0, 0, 369, 270, 0, 0, 206, 511, 0, 435, + 0, 205, 0, 493, 255, 380, 377, 590, 285, 276, + 272, 252, 320, 389, 432, 524, 426, 0, 373, 0, + 0, 503, 405, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 326, 250, 328, 204, 417, 504, 289, 0, 95, + 0, 0, 0, 513, 196, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 240, 0, 0, 247, 0, 0, + 0, 354, 363, 362, 342, 343, 345, 347, 353, 360, + 366, 339, 348, 0, 0, 616, 0, 0, 0, 268, + 324, 275, 267, 587, 0, 0, 0, 0, 0, 0, + 603, 0, 0, 231, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 278, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 300, 0, 406, 260, 0, 459, 0, 0, 0, 636, + 0, 0, 0, 0, 0, 0, 0, 368, 0, 333, + 199, 227, 0, 0, 416, 467, 479, 0, 0, 0, + 256, 0, 477, 430, 611, 235, 287, 464, 437, 475, + 445, 290, 0, 0, 476, 375, 592, 455, 608, 637, + 638, 266, 410, 622, 528, 630, 655, 228, 263, 424, + 512, 614, 500, 401, 588, 589, 332, 499, 298, 203, + 372, 643, 226, 485, 374, 244, 233, 594, 619, 302, + 254, 292, 462, 650, 215, 523, 605, 241, 489, 0, + 0, 658, 249, 510, 617, 606, 217, 601, 509, 397, + 329, 330, 216, 0, 463, 271, 296, 0, 0, 261, + 419, 596, 597, 259, 659, 230, 629, 222, 0, 628, + 412, 591, 602, 398, 386, 221, 600, 396, 385, 337, + 358, 359, 283, 310, 452, 378, 453, 309, 311, 408, + 407, 409, 209, 615, 633, 0, 210, 0, 505, 618, + 660, 457, 214, 236, 237, 239, 0, 282, 286, 294, + 297, 306, 307, 316, 370, 423, 451, 447, 456, 0, + 585, 609, 623, 635, 641, 642, 644, 645, 646, 647, + 648, 651, 649, 411, 314, 501, 336, 376, 0, 0, + 429, 478, 242, 613, 502, 201, 0, 0, 0, 0, + 257, 258, 0, 581, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 661, 662, 663, 664, 665, 666, 667, + 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, + 678, 656, 514, 520, 515, 516, 517, 518, 519, 0, + 521, 0, 0, 0, 0, 0, 402, 0, 598, 599, + 679, 387, 492, 610, 338, 352, 355, 344, 364, 0, + 365, 340, 341, 346, 349, 350, 351, 356, 357, 361, + 367, 251, 212, 394, 403, 584, 315, 218, 219, 220, + 530, 531, 532, 533, 626, 627, 631, 207, 468, 469, + 470, 471, 295, 621, 312, 474, 473, 334, 335, 382, + 454, 546, 548, 559, 563, 565, 567, 573, 576, 547, + 549, 560, 564, 566, 568, 574, 577, 536, 538, 540, + 542, 555, 554, 551, 579, 580, 557, 562, 541, 553, + 558, 571, 578, 575, 535, 539, 543, 552, 570, 569, + 550, 561, 572, 556, 544, 537, 545, 0, 198, 223, + 371, 0, 460, 291, 657, 625, 490, 620, 208, 225, + 0, 265, 0, 0, 0, 0, 0, 0, 2444, 0, + 0, 2443, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 200, 202, 211, 224, 234, 238, 245, + 264, 279, 281, 288, 301, 313, 321, 322, 325, 331, + 383, 390, 391, 392, 393, 413, 414, 415, 418, 421, + 422, 425, 427, 428, 431, 436, 440, 441, 442, 444, + 446, 448, 461, 466, 480, 481, 482, 483, 484, 487, + 488, 494, 495, 496, 497, 498, 506, 507, 522, 593, + 595, 612, 632, 639, 486, 388, 434, 458, 586, 304, + 305, 449, 450, 317, 318, 653, 654, 303, 607, 640, + 604, 652, 634, 443, 381, 0, 0, 384, 284, 308, + 323, 0, 624, 508, 229, 472, 293, 253, 0, 0, + 213, 248, 232, 262, 277, 280, 327, 395, 404, 433, + 439, 299, 274, 246, 465, 243, 491, 525, 526, 527, + 529, 399, 269, 438, 400, 0, 379, 582, 583, 319, + 0, 0, 0, 534, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 420, 0, 0, 2389, 0, + 0, 0, 0, 273, 0, 0, 0, 0, 369, 270, + 0, 0, 206, 511, 0, 435, 0, 205, 0, 493, + 255, 380, 377, 590, 285, 276, 272, 252, 320, 389, + 432, 524, 426, 0, 373, 0, 0, 503, 405, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 326, 250, 328, + 204, 417, 504, 289, 0, 0, 0, 0, 1977, 513, + 196, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 240, 0, 0, 247, 0, 0, 0, 354, 363, 362, + 342, 343, 345, 347, 353, 360, 366, 339, 348, 0, + 0, 616, 0, 0, 0, 268, 324, 275, 267, 587, + 0, 0, 0, 0, 0, 0, 603, 0, 0, 231, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 278, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 300, 0, 406, 260, + 0, 459, 0, 0, 0, 636, 0, 0, 0, 0, + 0, 0, 0, 368, 0, 333, 199, 227, 0, 0, + 416, 467, 479, 0, 0, 0, 256, 0, 477, 430, + 611, 235, 287, 464, 437, 475, 445, 290, 0, 2387, + 476, 375, 592, 455, 608, 637, 638, 266, 410, 622, + 528, 630, 655, 228, 263, 424, 512, 614, 500, 401, + 588, 589, 332, 499, 298, 203, 372, 643, 226, 485, + 374, 244, 233, 594, 619, 302, 254, 292, 462, 650, + 215, 523, 605, 241, 489, 0, 0, 658, 249, 510, + 617, 606, 217, 601, 509, 397, 329, 330, 216, 0, + 463, 271, 296, 0, 0, 261, 419, 596, 597, 259, + 659, 230, 629, 222, 0, 628, 412, 591, 602, 398, + 386, 221, 600, 396, 385, 337, 358, 359, 283, 310, + 452, 378, 453, 309, 311, 408, 407, 409, 209, 615, + 633, 0, 210, 0, 505, 618, 660, 457, 214, 236, + 237, 239, 0, 282, 286, 294, 297, 306, 307, 316, + 370, 423, 451, 447, 456, 0, 585, 609, 623, 635, + 641, 642, 644, 645, 646, 647, 648, 651, 649, 411, + 314, 501, 336, 376, 0, 0, 429, 478, 242, 613, + 502, 201, 0, 0, 0, 0, 257, 258, 0, 581, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 661, + 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, + 672, 673, 674, 675, 676, 677, 678, 656, 514, 520, + 515, 516, 517, 518, 519, 0, 521, 0, 0, 0, + 0, 0, 402, 0, 598, 599, 679, 387, 492, 610, + 338, 352, 355, 344, 364, 0, 365, 340, 341, 346, + 349, 350, 351, 356, 357, 361, 367, 251, 212, 394, + 403, 584, 315, 218, 219, 220, 530, 531, 532, 533, + 626, 627, 631, 207, 468, 469, 470, 471, 295, 621, + 312, 474, 473, 334, 335, 382, 454, 546, 548, 559, + 563, 565, 567, 573, 576, 547, 549, 560, 564, 566, + 568, 574, 577, 536, 538, 540, 542, 555, 554, 551, + 579, 580, 557, 562, 541, 553, 558, 571, 578, 575, + 535, 539, 543, 552, 570, 569, 550, 561, 572, 556, + 544, 537, 545, 0, 198, 223, 371, 0, 460, 291, + 657, 625, 490, 620, 208, 225, 0, 265, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 200, + 202, 211, 224, 234, 238, 245, 264, 279, 281, 288, + 301, 313, 321, 322, 325, 331, 383, 390, 391, 392, + 393, 413, 414, 415, 418, 421, 422, 425, 427, 428, + 431, 436, 440, 441, 442, 444, 446, 448, 461, 466, + 480, 481, 482, 483, 484, 487, 488, 494, 495, 496, + 497, 498, 506, 507, 522, 593, 595, 612, 632, 639, + 486, 388, 434, 458, 586, 304, 305, 449, 450, 317, + 318, 653, 654, 303, 607, 640, 604, 652, 634, 443, + 381, 0, 0, 384, 284, 308, 323, 0, 624, 508, + 229, 472, 293, 253, 0, 0, 213, 248, 232, 262, + 277, 280, 327, 395, 404, 433, 439, 299, 274, 246, + 465, 243, 491, 525, 526, 527, 529, 399, 269, 438, + 400, 0, 379, 582, 583, 319, 0, 0, 0, 534, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 420, 0, 0, 0, 0, 0, 0, 0, 273, + 0, 0, 0, 0, 369, 270, 0, 0, 206, 511, + 0, 435, 0, 205, 0, 493, 255, 380, 377, 590, + 285, 276, 272, 252, 320, 389, 432, 524, 426, 0, + 373, 0, 0, 503, 405, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 326, 250, 328, 204, 417, 504, 289, + 0, 0, 0, 0, 0, 513, 731, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 240, 0, 0, 247, + 0, 0, 0, 354, 363, 362, 342, 343, 345, 347, + 353, 360, 366, 339, 348, 0, 0, 616, 0, 0, + 0, 268, 324, 275, 267, 587, 0, 0, 0, 0, + 0, 0, 603, 0, 0, 231, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 278, 0, 0, 0, 0, 0, 0, 0, 0, 1102, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 300, 0, 406, 260, 0, 459, 0, 0, + 0, 636, 0, 0, 0, 0, 0, 0, 0, 368, + 1108, 333, 199, 227, 1106, 0, 416, 467, 479, 0, + 0, 0, 256, 0, 477, 430, 611, 235, 287, 464, + 437, 475, 445, 290, 0, 0, 476, 375, 592, 455, + 608, 637, 638, 266, 410, 622, 528, 630, 655, 228, + 263, 424, 512, 614, 500, 401, 588, 589, 332, 499, + 298, 203, 372, 643, 226, 485, 374, 244, 233, 594, + 619, 302, 254, 292, 462, 650, 215, 523, 605, 241, + 489, 0, 0, 658, 249, 510, 617, 606, 217, 601, + 509, 397, 329, 330, 216, 0, 463, 271, 296, 0, + 0, 261, 419, 596, 597, 259, 659, 230, 629, 222, + 0, 628, 412, 591, 602, 398, 386, 221, 600, 396, + 385, 337, 358, 359, 283, 310, 452, 378, 453, 309, + 311, 408, 407, 409, 209, 615, 633, 0, 210, 0, + 505, 618, 660, 457, 214, 236, 237, 239, 0, 282, + 286, 294, 297, 306, 307, 316, 370, 423, 451, 447, + 456, 0, 585, 609, 623, 635, 641, 642, 644, 645, + 646, 647, 648, 651, 649, 411, 314, 501, 336, 376, + 0, 0, 429, 478, 242, 613, 502, 201, 0, 0, + 0, 0, 257, 258, 0, 581, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 661, 662, 663, 664, 665, + 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, + 676, 677, 678, 656, 514, 520, 515, 516, 517, 518, + 519, 0, 521, 0, 0, 0, 0, 0, 402, 0, + 598, 599, 679, 387, 492, 610, 338, 352, 355, 344, + 364, 0, 365, 340, 341, 346, 349, 350, 351, 356, + 357, 361, 367, 251, 212, 394, 403, 584, 315, 218, + 219, 220, 530, 531, 532, 533, 626, 627, 631, 207, + 468, 469, 470, 471, 295, 621, 312, 474, 473, 334, + 335, 382, 454, 546, 548, 559, 563, 565, 567, 573, + 576, 547, 549, 560, 564, 566, 568, 574, 577, 536, + 538, 540, 542, 555, 554, 551, 579, 580, 557, 562, + 541, 553, 558, 571, 578, 575, 535, 539, 543, 552, + 570, 569, 550, 561, 572, 556, 544, 537, 545, 0, + 198, 223, 371, 0, 460, 291, 657, 625, 490, 620, + 208, 225, 0, 265, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 200, 202, 211, 224, 234, + 238, 245, 264, 279, 281, 288, 301, 313, 321, 322, + 325, 331, 383, 390, 391, 392, 393, 413, 414, 415, + 418, 421, 422, 425, 427, 428, 431, 436, 440, 441, + 442, 444, 446, 448, 461, 466, 480, 481, 482, 483, + 484, 487, 488, 494, 495, 496, 497, 498, 506, 507, + 522, 593, 595, 612, 632, 639, 486, 388, 434, 458, + 586, 304, 305, 449, 450, 317, 318, 653, 654, 303, + 607, 640, 604, 652, 634, 443, 381, 0, 0, 384, + 284, 308, 323, 0, 624, 508, 229, 472, 293, 253, + 0, 0, 213, 248, 232, 262, 277, 280, 327, 395, + 404, 433, 439, 299, 274, 246, 465, 243, 491, 525, + 526, 527, 529, 399, 269, 438, 400, 0, 379, 582, + 583, 319, 0, 0, 0, 534, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 420, 0, 0, + 2389, 0, 0, 0, 0, 273, 0, 0, 0, 0, + 369, 270, 0, 0, 206, 511, 0, 435, 0, 205, + 0, 493, 255, 380, 377, 590, 285, 276, 272, 252, + 320, 389, 432, 524, 426, 0, 373, 0, 0, 503, + 405, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 326, + 250, 328, 204, 417, 504, 289, 0, 0, 0, 0, + 1977, 513, 196, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 240, 0, 0, 247, 0, 0, 0, 354, + 363, 362, 342, 343, 345, 347, 353, 360, 366, 339, + 348, 0, 0, 616, 0, 0, 0, 268, 324, 275, + 267, 587, 0, 0, 0, 0, 0, 0, 603, 0, + 0, 231, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 278, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 300, 0, + 406, 260, 0, 459, 0, 0, 0, 636, 0, 0, + 0, 0, 0, 0, 0, 368, 0, 333, 199, 227, + 0, 0, 416, 467, 479, 0, 0, 0, 256, 0, + 477, 430, 611, 235, 287, 464, 437, 475, 445, 290, + 0, 0, 476, 375, 592, 455, 608, 637, 638, 266, + 410, 622, 528, 630, 655, 228, 263, 424, 512, 614, + 500, 401, 588, 589, 332, 499, 298, 203, 372, 643, + 226, 485, 374, 244, 233, 594, 619, 302, 254, 292, + 462, 650, 215, 523, 605, 241, 489, 0, 0, 658, + 249, 510, 617, 606, 217, 601, 509, 397, 329, 330, + 216, 0, 463, 271, 296, 0, 0, 261, 419, 596, + 597, 259, 659, 230, 629, 222, 0, 628, 412, 591, + 602, 398, 386, 221, 600, 396, 385, 337, 358, 359, + 283, 310, 452, 378, 453, 309, 311, 408, 407, 409, + 209, 615, 633, 0, 210, 0, 505, 618, 660, 457, + 214, 236, 237, 239, 0, 282, 286, 294, 297, 306, + 307, 316, 370, 423, 451, 447, 456, 0, 585, 609, + 623, 635, 641, 642, 644, 645, 646, 647, 648, 651, + 649, 411, 314, 501, 336, 376, 0, 0, 429, 478, + 242, 613, 502, 201, 0, 0, 0, 0, 257, 258, + 0, 581, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 661, 662, 663, 664, 665, 666, 667, 668, 669, + 670, 671, 672, 673, 674, 675, 676, 677, 678, 656, + 514, 520, 515, 516, 517, 518, 519, 0, 521, 0, + 0, 0, 0, 0, 402, 0, 598, 599, 679, 387, + 492, 610, 338, 352, 355, 344, 364, 0, 365, 340, + 341, 346, 349, 350, 351, 356, 357, 361, 367, 251, + 212, 394, 403, 584, 315, 218, 219, 220, 530, 531, + 532, 533, 626, 627, 631, 207, 468, 469, 470, 471, + 295, 621, 312, 474, 473, 334, 335, 382, 454, 546, + 548, 559, 563, 565, 567, 573, 576, 547, 549, 560, + 564, 566, 568, 574, 577, 536, 538, 540, 542, 555, + 554, 551, 579, 580, 557, 562, 541, 553, 558, 571, + 578, 575, 535, 539, 543, 552, 570, 569, 550, 561, + 572, 556, 544, 537, 545, 0, 198, 223, 371, 0, + 460, 291, 657, 625, 490, 620, 208, 225, 0, 265, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 200, 202, 211, 224, 234, 238, 245, 264, 279, + 281, 288, 301, 313, 321, 322, 325, 331, 383, 390, + 391, 392, 393, 413, 414, 415, 418, 421, 422, 425, + 427, 428, 431, 436, 440, 441, 442, 444, 446, 448, + 461, 466, 480, 481, 482, 483, 484, 487, 488, 494, + 495, 496, 497, 498, 506, 507, 522, 593, 595, 612, + 632, 639, 486, 388, 434, 458, 586, 304, 305, 449, + 450, 317, 318, 653, 654, 303, 607, 640, 604, 652, + 634, 443, 381, 0, 0, 384, 284, 308, 323, 0, + 624, 508, 229, 472, 293, 253, 0, 0, 213, 248, + 232, 262, 277, 280, 327, 395, 404, 433, 439, 299, + 274, 246, 465, 243, 491, 525, 526, 527, 529, 399, + 269, 438, 400, 0, 379, 582, 583, 319, 0, 0, + 0, 534, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 420, 0, 0, 0, 0, 0, 0, + 0, 273, 0, 0, 0, 0, 369, 270, 0, 0, + 206, 511, 0, 435, 0, 205, 0, 493, 255, 380, + 377, 590, 285, 276, 272, 252, 320, 389, 432, 524, + 426, 0, 373, 0, 0, 503, 405, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 326, 250, 328, 204, 417, + 504, 289, 0, 0, 0, 1764, 0, 513, 731, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 240, 0, + 0, 247, 0, 0, 0, 354, 363, 362, 342, 343, + 345, 347, 353, 360, 366, 339, 348, 0, 0, 616, + 0, 0, 0, 268, 324, 275, 267, 587, 0, 0, + 0, 0, 0, 0, 603, 0, 0, 231, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 278, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 300, 0, 406, 260, 0, 459, + 0, 0, 0, 636, 0, 0, 0, 3749, 0, 0, + 0, 368, 0, 333, 199, 227, 0, 0, 416, 467, + 479, 0, 0, 0, 256, 0, 477, 430, 611, 235, + 287, 464, 437, 475, 445, 290, 0, 0, 476, 375, + 592, 455, 608, 637, 638, 266, 410, 622, 528, 630, + 655, 228, 263, 424, 512, 614, 500, 401, 588, 589, + 332, 499, 298, 203, 372, 643, 226, 485, 374, 244, + 233, 594, 619, 302, 254, 292, 462, 650, 215, 523, + 605, 241, 489, 0, 0, 658, 249, 510, 617, 606, + 217, 601, 509, 397, 329, 330, 216, 0, 463, 271, + 296, 0, 0, 261, 419, 596, 597, 259, 659, 230, + 629, 222, 0, 628, 412, 591, 602, 398, 386, 221, + 600, 396, 385, 337, 358, 359, 283, 310, 452, 378, + 453, 309, 311, 408, 407, 409, 209, 615, 633, 0, + 210, 0, 505, 618, 660, 457, 214, 236, 237, 239, + 0, 282, 286, 294, 297, 306, 307, 316, 370, 423, + 451, 447, 456, 0, 585, 609, 623, 635, 641, 642, + 644, 645, 646, 647, 648, 651, 649, 411, 314, 501, + 336, 376, 0, 0, 429, 478, 242, 613, 502, 201, + 0, 0, 0, 0, 257, 258, 0, 581, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 661, 662, 663, + 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, + 674, 675, 676, 677, 678, 656, 514, 520, 515, 516, + 517, 518, 519, 0, 521, 0, 0, 0, 0, 0, + 402, 0, 598, 599, 679, 387, 492, 610, 338, 352, + 355, 344, 364, 0, 365, 340, 341, 346, 349, 350, + 351, 356, 357, 361, 367, 251, 212, 394, 403, 584, + 315, 218, 219, 220, 530, 531, 532, 533, 626, 627, + 631, 207, 468, 469, 470, 471, 295, 621, 312, 474, + 473, 334, 335, 382, 454, 546, 548, 559, 563, 565, + 567, 573, 576, 547, 549, 560, 564, 566, 568, 574, + 577, 536, 538, 540, 542, 555, 554, 551, 579, 580, + 557, 562, 541, 553, 558, 571, 578, 575, 535, 539, + 543, 552, 570, 569, 550, 561, 572, 556, 544, 537, + 545, 0, 198, 223, 371, 0, 460, 291, 657, 625, + 490, 620, 208, 225, 0, 265, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 200, 202, 211, + 224, 234, 238, 245, 264, 279, 281, 288, 301, 313, + 321, 322, 325, 331, 383, 390, 391, 392, 393, 413, + 414, 415, 418, 421, 422, 425, 427, 428, 431, 436, + 440, 441, 442, 444, 446, 448, 461, 466, 480, 481, + 482, 483, 484, 487, 488, 494, 495, 496, 497, 498, + 506, 507, 522, 593, 595, 612, 632, 639, 486, 388, + 434, 458, 586, 304, 305, 449, 450, 317, 318, 653, + 654, 303, 607, 640, 604, 652, 634, 443, 381, 0, + 0, 384, 284, 308, 323, 0, 624, 508, 229, 472, + 293, 253, 0, 0, 213, 248, 232, 262, 277, 280, + 327, 395, 404, 433, 439, 299, 274, 246, 465, 243, + 491, 525, 526, 527, 529, 399, 269, 438, 400, 0, + 379, 582, 583, 319, 0, 0, 0, 534, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 420, + 0, 0, 0, 0, 0, 0, 0, 273, 0, 0, + 0, 0, 369, 270, 0, 0, 206, 511, 0, 435, + 0, 205, 0, 493, 255, 380, 377, 590, 285, 276, + 272, 252, 320, 389, 432, 524, 426, 0, 373, 0, + 0, 503, 405, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 326, 250, 328, 204, 417, 504, 289, 0, 0, + 0, 0, 2148, 513, 731, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 240, 0, 0, 247, 0, 0, + 0, 354, 363, 362, 342, 343, 345, 347, 353, 360, + 366, 339, 348, 0, 0, 616, 0, 0, 0, 268, + 324, 275, 267, 587, 0, 0, 0, 0, 0, 0, + 603, 0, 0, 231, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 278, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 2149, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 300, 0, 406, 260, 0, 459, 0, 0, 0, 636, + 0, 0, 0, 0, 0, 0, 0, 368, 0, 333, + 199, 227, 0, 0, 416, 467, 479, 0, 0, 0, + 256, 0, 477, 430, 611, 235, 287, 464, 437, 475, + 445, 290, 0, 0, 476, 375, 592, 455, 608, 637, + 638, 266, 410, 622, 528, 630, 655, 228, 263, 424, + 512, 614, 500, 401, 588, 589, 332, 499, 298, 203, + 372, 643, 226, 485, 374, 244, 233, 594, 619, 302, + 254, 292, 462, 650, 215, 523, 605, 241, 489, 0, + 0, 658, 249, 510, 617, 606, 217, 601, 509, 397, + 329, 330, 216, 0, 463, 271, 296, 0, 0, 261, + 419, 596, 597, 259, 659, 230, 629, 222, 0, 628, + 412, 591, 602, 398, 386, 221, 600, 396, 385, 337, + 358, 359, 283, 310, 452, 378, 453, 309, 311, 408, + 407, 409, 209, 615, 633, 0, 210, 0, 505, 618, + 660, 457, 214, 236, 237, 239, 0, 282, 286, 294, + 297, 306, 307, 316, 370, 423, 451, 447, 456, 0, + 585, 609, 623, 635, 641, 642, 644, 645, 646, 647, + 648, 651, 649, 411, 314, 501, 336, 376, 0, 0, + 429, 478, 242, 613, 502, 201, 0, 0, 0, 0, + 257, 258, 0, 581, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 661, 662, 663, 664, 665, 666, 667, + 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, + 678, 656, 514, 520, 515, 516, 517, 518, 519, 0, + 521, 0, 0, 0, 0, 0, 402, 0, 598, 599, + 679, 387, 492, 610, 338, 352, 355, 344, 364, 0, + 365, 340, 341, 346, 349, 350, 351, 356, 357, 361, + 367, 251, 212, 394, 403, 584, 315, 218, 219, 220, + 530, 531, 532, 533, 626, 627, 631, 207, 468, 469, + 470, 471, 295, 621, 312, 474, 473, 334, 335, 382, + 454, 546, 548, 559, 563, 565, 567, 573, 576, 547, + 549, 560, 564, 566, 568, 574, 577, 536, 538, 540, + 542, 555, 554, 551, 579, 580, 557, 562, 541, 553, + 558, 571, 578, 575, 535, 539, 543, 552, 570, 569, + 550, 561, 572, 556, 544, 537, 545, 0, 198, 223, + 371, 0, 460, 291, 657, 625, 490, 620, 208, 225, + 0, 265, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 200, 202, 211, 224, 234, 238, 245, + 264, 279, 281, 288, 301, 313, 321, 322, 325, 331, + 383, 390, 391, 392, 393, 413, 414, 415, 418, 421, + 422, 425, 427, 428, 431, 436, 440, 441, 442, 444, + 446, 448, 461, 466, 480, 481, 482, 483, 484, 487, + 488, 494, 495, 496, 497, 498, 506, 507, 522, 593, + 595, 612, 632, 639, 486, 388, 434, 458, 586, 304, + 305, 449, 450, 317, 318, 653, 654, 303, 607, 640, + 604, 652, 634, 443, 381, 0, 0, 384, 284, 308, + 323, 0, 624, 508, 229, 472, 293, 253, 0, 0, + 213, 248, 232, 262, 277, 280, 327, 395, 404, 433, + 439, 299, 274, 246, 465, 243, 491, 525, 526, 527, + 529, 399, 269, 438, 400, 0, 379, 582, 583, 319, + 0, 0, 0, 534, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 420, 0, 0, 0, 0, + 0, 0, 0, 273, 0, 0, 0, 0, 369, 270, + 0, 0, 206, 511, 0, 435, 0, 205, 0, 493, + 255, 380, 377, 590, 285, 276, 272, 252, 320, 389, + 432, 524, 426, 0, 373, 0, 0, 503, 405, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 326, 250, 328, + 204, 417, 504, 289, 0, 0, 0, 0, 2900, 513, + 731, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 240, 0, 0, 247, 0, 0, 0, 354, 363, 362, + 342, 343, 345, 347, 353, 360, 366, 339, 348, 0, + 0, 616, 0, 0, 0, 268, 324, 275, 267, 587, + 0, 0, 0, 0, 0, 0, 603, 0, 0, 231, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 278, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2901, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 300, 0, 406, 260, + 0, 459, 0, 0, 0, 636, 0, 0, 0, 0, + 0, 0, 0, 368, 0, 333, 199, 227, 0, 0, + 416, 467, 479, 0, 0, 0, 256, 0, 477, 430, + 611, 235, 287, 464, 437, 475, 445, 290, 0, 0, + 476, 375, 592, 455, 608, 637, 638, 266, 410, 622, + 528, 630, 655, 228, 263, 424, 512, 614, 500, 401, + 588, 589, 332, 499, 298, 203, 372, 643, 226, 485, + 374, 244, 233, 594, 619, 302, 254, 292, 462, 650, + 215, 523, 605, 241, 489, 0, 0, 658, 249, 510, + 617, 606, 217, 601, 509, 397, 329, 330, 216, 0, + 463, 271, 296, 0, 0, 261, 419, 596, 597, 259, + 659, 230, 629, 222, 0, 628, 412, 591, 602, 398, + 386, 221, 600, 396, 385, 337, 358, 359, 283, 310, + 452, 378, 453, 309, 311, 408, 407, 409, 209, 615, + 633, 0, 210, 0, 505, 618, 660, 457, 214, 236, + 237, 239, 0, 282, 286, 294, 297, 306, 307, 316, + 370, 423, 451, 447, 456, 0, 585, 609, 623, 635, + 641, 642, 644, 645, 646, 647, 648, 651, 649, 411, + 314, 501, 336, 376, 0, 0, 429, 478, 242, 613, + 502, 201, 0, 0, 0, 0, 257, 258, 0, 581, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 661, + 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, + 672, 673, 674, 675, 676, 677, 678, 656, 514, 520, + 515, 516, 517, 518, 519, 0, 521, 0, 0, 0, + 0, 0, 402, 0, 598, 599, 679, 387, 492, 610, + 338, 352, 355, 344, 364, 0, 365, 340, 341, 346, + 349, 350, 351, 356, 357, 361, 367, 251, 212, 394, + 403, 584, 315, 218, 219, 220, 530, 531, 532, 533, + 626, 627, 631, 207, 468, 469, 470, 471, 295, 621, + 312, 474, 473, 334, 335, 382, 454, 546, 548, 559, + 563, 565, 567, 573, 576, 547, 549, 560, 564, 566, + 568, 574, 577, 536, 538, 540, 542, 555, 554, 551, + 579, 580, 557, 562, 541, 553, 558, 571, 578, 575, + 535, 539, 543, 552, 570, 569, 550, 561, 572, 556, + 544, 537, 545, 0, 198, 223, 371, 0, 460, 291, + 657, 625, 490, 620, 208, 225, 0, 265, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 200, + 202, 211, 224, 234, 238, 245, 264, 279, 281, 288, + 301, 313, 321, 322, 325, 331, 383, 390, 391, 392, + 393, 413, 414, 415, 418, 421, 422, 425, 427, 428, + 431, 436, 440, 441, 442, 444, 446, 448, 461, 466, + 480, 481, 482, 483, 484, 487, 488, 494, 495, 496, + 497, 498, 506, 507, 522, 593, 595, 612, 632, 639, + 486, 388, 434, 458, 586, 304, 305, 449, 450, 317, + 318, 653, 654, 303, 607, 640, 604, 652, 634, 443, + 381, 0, 0, 384, 284, 308, 323, 0, 624, 508, + 229, 472, 293, 253, 0, 0, 213, 248, 232, 262, + 277, 280, 327, 395, 404, 433, 439, 299, 274, 246, + 465, 243, 491, 525, 526, 527, 529, 399, 269, 438, + 400, 0, 379, 582, 583, 319, 0, 0, 0, 534, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 420, 0, 0, 0, 0, 0, 0, 0, 273, + 0, 0, 0, 0, 369, 270, 0, 0, 206, 511, + 0, 435, 0, 205, 0, 493, 255, 380, 377, 590, + 285, 276, 272, 252, 320, 389, 432, 524, 426, 0, + 373, 0, 0, 503, 405, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 326, 250, 328, 204, 417, 504, 289, + 0, 0, 0, 0, 0, 513, 731, 0, 0, 0, + 0, 2883, 0, 0, 0, 0, 240, 0, 0, 247, + 2884, 0, 0, 354, 363, 362, 342, 343, 345, 347, + 353, 360, 366, 339, 348, 0, 0, 616, 0, 0, + 0, 268, 324, 275, 267, 587, 0, 0, 0, 0, + 0, 0, 603, 0, 0, 231, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 278, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 300, 0, 406, 260, 0, 459, 0, 0, + 0, 636, 0, 0, 0, 0, 0, 0, 0, 368, + 0, 333, 199, 227, 0, 0, 416, 467, 479, 0, + 0, 0, 256, 0, 477, 430, 611, 235, 287, 464, + 437, 475, 445, 290, 0, 0, 476, 375, 592, 455, + 608, 637, 638, 266, 410, 622, 528, 630, 655, 228, + 263, 424, 512, 614, 500, 401, 588, 589, 332, 499, + 298, 203, 372, 643, 226, 485, 374, 244, 233, 594, + 619, 302, 254, 292, 462, 650, 215, 523, 605, 241, + 489, 0, 0, 658, 249, 510, 617, 606, 217, 601, + 509, 397, 329, 330, 216, 0, 463, 271, 296, 0, + 0, 261, 419, 596, 597, 259, 659, 230, 629, 222, + 0, 628, 412, 591, 602, 398, 386, 221, 600, 396, + 385, 337, 358, 359, 283, 310, 452, 378, 453, 309, + 311, 408, 407, 409, 209, 615, 633, 0, 210, 0, + 505, 618, 660, 457, 214, 236, 237, 239, 0, 282, + 286, 294, 297, 306, 307, 316, 370, 423, 451, 447, + 456, 0, 585, 609, 623, 635, 641, 642, 644, 645, + 646, 647, 648, 651, 649, 411, 314, 501, 336, 376, + 0, 0, 429, 478, 242, 613, 502, 201, 0, 0, + 0, 0, 257, 258, 0, 581, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 661, 662, 663, 664, 665, + 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, + 676, 677, 678, 656, 514, 520, 515, 516, 517, 518, + 519, 0, 521, 0, 0, 0, 0, 0, 402, 0, + 598, 599, 679, 387, 492, 610, 338, 352, 355, 344, + 364, 0, 365, 340, 341, 346, 349, 350, 351, 356, + 357, 361, 367, 251, 212, 394, 403, 584, 315, 218, + 219, 220, 530, 531, 532, 533, 626, 627, 631, 207, + 468, 469, 470, 471, 295, 621, 312, 474, 473, 334, + 335, 382, 454, 546, 548, 559, 563, 565, 567, 573, + 576, 547, 549, 560, 564, 566, 568, 574, 577, 536, + 538, 540, 542, 555, 554, 551, 579, 580, 557, 562, + 541, 553, 558, 571, 578, 575, 535, 539, 543, 552, + 570, 569, 550, 561, 572, 556, 544, 537, 545, 0, + 198, 223, 371, 0, 460, 291, 657, 625, 490, 620, + 208, 225, 0, 265, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 200, 202, 211, 224, 234, + 238, 245, 264, 279, 281, 288, 301, 313, 321, 322, + 325, 331, 383, 390, 391, 392, 393, 413, 414, 415, + 418, 421, 422, 425, 427, 428, 431, 436, 440, 441, + 442, 444, 446, 448, 461, 466, 480, 481, 482, 483, + 484, 487, 488, 494, 495, 496, 497, 498, 506, 507, + 522, 593, 595, 612, 632, 639, 486, 388, 434, 458, + 586, 304, 305, 449, 450, 317, 318, 653, 654, 303, + 607, 640, 604, 652, 634, 443, 381, 0, 0, 384, + 284, 308, 323, 0, 624, 508, 229, 472, 293, 253, + 0, 0, 213, 248, 232, 262, 277, 280, 327, 395, + 404, 433, 439, 299, 274, 246, 465, 243, 491, 525, + 526, 527, 529, 399, 269, 438, 400, 0, 379, 582, + 583, 319, 0, 0, 0, 534, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 420, 0, 0, + 0, 0, 0, 0, 0, 273, 1815, 0, 0, 0, + 369, 270, 0, 0, 206, 511, 0, 435, 0, 205, + 0, 493, 255, 380, 377, 590, 285, 276, 272, 252, + 320, 389, 432, 524, 426, 0, 373, 0, 0, 503, + 405, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 326, + 250, 328, 204, 417, 504, 289, 0, 0, 0, 0, + 1814, 513, 731, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 240, 0, 0, 247, 0, 0, 0, 354, + 363, 362, 342, 343, 345, 347, 353, 360, 366, 339, + 348, 0, 0, 616, 0, 0, 0, 268, 324, 275, + 267, 587, 0, 0, 0, 0, 0, 0, 603, 0, + 0, 231, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 278, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 300, 0, + 406, 260, 0, 459, 0, 0, 0, 636, 0, 0, + 0, 0, 0, 0, 0, 368, 0, 333, 199, 227, + 0, 0, 416, 467, 479, 0, 0, 0, 256, 0, + 477, 430, 611, 235, 287, 464, 437, 475, 445, 290, + 0, 0, 476, 375, 592, 455, 608, 637, 638, 266, + 410, 622, 528, 630, 655, 228, 263, 424, 512, 614, + 500, 401, 588, 589, 332, 499, 298, 203, 372, 643, + 226, 485, 374, 244, 233, 594, 619, 302, 254, 292, + 462, 650, 215, 523, 605, 241, 489, 0, 0, 658, + 249, 510, 617, 606, 217, 601, 509, 397, 329, 330, + 216, 0, 463, 271, 296, 0, 0, 261, 419, 596, + 597, 259, 659, 230, 629, 222, 0, 628, 412, 591, + 602, 398, 386, 221, 600, 396, 385, 337, 358, 359, + 283, 310, 452, 378, 453, 309, 311, 408, 407, 409, + 209, 615, 633, 0, 210, 0, 505, 618, 660, 457, + 214, 236, 237, 239, 0, 282, 286, 294, 297, 306, + 307, 316, 370, 423, 451, 447, 456, 0, 585, 609, + 623, 635, 641, 642, 644, 645, 646, 647, 648, 651, + 649, 411, 314, 501, 336, 376, 0, 0, 429, 478, + 242, 613, 502, 201, 0, 0, 0, 0, 257, 258, + 0, 581, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 661, 662, 663, 664, 665, 666, 667, 668, 669, + 670, 671, 672, 673, 674, 675, 676, 677, 678, 656, + 514, 520, 515, 516, 517, 518, 519, 0, 521, 0, + 0, 0, 0, 0, 402, 0, 598, 599, 679, 387, + 492, 610, 338, 352, 355, 344, 364, 0, 365, 340, + 341, 346, 349, 350, 351, 356, 357, 361, 367, 251, + 212, 394, 403, 584, 315, 218, 219, 220, 530, 531, + 532, 533, 626, 627, 631, 207, 468, 469, 470, 471, + 295, 621, 312, 474, 473, 334, 335, 382, 454, 546, + 548, 559, 563, 565, 567, 573, 576, 547, 549, 560, + 564, 566, 568, 574, 577, 536, 538, 540, 542, 555, + 554, 551, 579, 580, 557, 562, 541, 553, 558, 571, + 578, 575, 535, 539, 543, 552, 570, 569, 550, 561, + 572, 556, 544, 537, 545, 0, 198, 223, 371, 0, + 460, 291, 657, 625, 490, 620, 208, 225, 0, 265, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 200, 202, 211, 224, 234, 238, 245, 264, 279, + 281, 288, 301, 313, 321, 322, 325, 331, 383, 390, + 391, 392, 393, 413, 414, 415, 418, 421, 422, 425, + 427, 428, 431, 436, 440, 441, 442, 444, 446, 448, + 461, 466, 480, 481, 482, 483, 484, 487, 488, 494, + 495, 496, 497, 498, 506, 507, 522, 593, 595, 612, + 632, 639, 486, 388, 434, 458, 586, 304, 305, 449, + 450, 317, 318, 653, 654, 303, 607, 640, 604, 652, + 634, 443, 381, 0, 0, 384, 284, 308, 323, 0, + 624, 508, 229, 472, 293, 253, 0, 0, 213, 248, + 232, 262, 277, 280, 327, 395, 404, 433, 439, 299, + 274, 246, 465, 243, 491, 525, 526, 527, 529, 399, + 269, 438, 400, 0, 379, 582, 583, 319, 0, 0, + 0, 534, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 420, 0, 0, 0, 0, 0, 0, + 0, 273, 0, 0, 0, 0, 369, 270, 0, 0, + 206, 511, 0, 435, 0, 205, 0, 493, 255, 380, + 377, 590, 285, 276, 272, 252, 320, 389, 432, 524, + 426, 0, 373, 0, 0, 503, 405, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 326, 250, 328, 204, 417, + 504, 289, 0, 0, 0, 0, 0, 513, 733, 734, + 735, 0, 0, 0, 0, 0, 0, 0, 240, 0, + 0, 247, 0, 0, 0, 354, 363, 362, 342, 343, + 345, 347, 353, 360, 366, 339, 348, 0, 0, 616, + 0, 0, 0, 268, 324, 275, 267, 587, 0, 0, + 0, 0, 0, 0, 603, 0, 0, 231, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 278, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 300, 0, 406, 260, 0, 459, + 0, 0, 0, 636, 0, 0, 0, 0, 0, 0, + 0, 368, 0, 333, 199, 227, 0, 0, 416, 467, + 479, 0, 0, 0, 256, 0, 477, 430, 611, 235, + 287, 464, 437, 475, 445, 290, 0, 0, 476, 375, + 592, 455, 608, 637, 638, 266, 410, 622, 528, 630, + 655, 228, 263, 424, 512, 614, 500, 401, 588, 589, + 332, 499, 298, 203, 372, 643, 226, 485, 374, 244, + 233, 594, 619, 302, 254, 292, 462, 650, 215, 523, + 605, 241, 489, 0, 0, 658, 249, 510, 617, 606, + 217, 601, 509, 397, 329, 330, 216, 0, 463, 271, + 296, 0, 0, 261, 419, 596, 597, 259, 659, 230, + 629, 222, 0, 628, 412, 591, 602, 398, 386, 221, + 600, 396, 385, 337, 358, 359, 283, 310, 452, 378, + 453, 309, 311, 408, 407, 409, 209, 615, 633, 0, + 210, 0, 505, 618, 660, 457, 214, 236, 237, 239, + 0, 282, 286, 294, 297, 306, 307, 316, 370, 423, + 451, 447, 456, 0, 585, 609, 623, 635, 641, 642, + 644, 645, 646, 647, 648, 651, 649, 411, 314, 501, + 336, 376, 0, 0, 429, 478, 242, 613, 502, 201, + 0, 0, 0, 0, 257, 258, 0, 581, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 661, 662, 663, + 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, + 674, 675, 676, 677, 678, 656, 514, 520, 515, 516, + 517, 518, 519, 0, 521, 0, 0, 0, 0, 0, + 402, 0, 598, 599, 679, 387, 492, 610, 338, 352, + 355, 344, 364, 0, 365, 340, 341, 346, 349, 350, + 351, 356, 357, 361, 367, 251, 212, 394, 403, 584, + 315, 218, 219, 220, 530, 531, 532, 533, 626, 627, + 631, 207, 468, 469, 470, 471, 295, 621, 312, 474, + 473, 334, 335, 382, 454, 546, 548, 559, 563, 565, + 567, 573, 576, 547, 549, 560, 564, 566, 568, 574, + 577, 536, 538, 540, 542, 555, 554, 551, 579, 580, + 557, 562, 541, 553, 558, 571, 578, 575, 535, 539, + 543, 552, 570, 569, 550, 561, 572, 556, 544, 537, + 545, 0, 198, 223, 371, 0, 460, 291, 657, 625, + 490, 620, 208, 225, 0, 265, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 200, 202, 211, + 224, 234, 238, 245, 264, 279, 281, 288, 301, 313, + 321, 322, 325, 331, 383, 390, 391, 392, 393, 413, + 414, 415, 418, 421, 422, 425, 427, 428, 431, 436, + 440, 441, 442, 444, 446, 448, 461, 466, 480, 481, + 482, 483, 484, 487, 488, 494, 495, 496, 497, 498, + 506, 507, 522, 593, 595, 612, 632, 639, 486, 388, + 434, 458, 586, 304, 305, 449, 450, 317, 318, 653, + 654, 303, 607, 640, 604, 652, 634, 443, 381, 0, + 0, 384, 284, 308, 323, 0, 624, 508, 229, 472, + 293, 253, 0, 0, 213, 248, 232, 262, 277, 280, + 327, 395, 404, 433, 439, 299, 274, 246, 465, 243, + 491, 525, 526, 527, 529, 399, 269, 438, 400, 0, + 379, 582, 583, 319, 0, 0, 0, 534, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 420, + 0, 0, 0, 0, 0, 0, 0, 273, 0, 0, + 0, 0, 369, 270, 0, 0, 206, 511, 0, 435, + 0, 205, 0, 493, 255, 380, 377, 590, 285, 276, + 272, 252, 320, 389, 432, 524, 426, 0, 373, 0, + 0, 503, 405, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 326, 250, 328, 204, 417, 504, 289, 0, 0, + 0, 0, 0, 513, 731, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 240, 0, 0, 247, 0, 0, + 0, 354, 363, 362, 342, 343, 345, 347, 353, 360, + 366, 339, 348, 0, 0, 616, 0, 0, 0, 268, + 324, 275, 267, 587, 0, 0, 0, 0, 0, 0, + 603, 0, 0, 231, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 278, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 300, 0, 406, 260, 0, 459, 0, 0, 0, 636, + 0, 0, 0, 4093, 0, 0, 0, 368, 0, 333, + 199, 227, 0, 0, 416, 467, 479, 0, 0, 0, + 256, 0, 477, 430, 611, 235, 287, 464, 437, 475, + 445, 290, 0, 0, 476, 375, 592, 455, 608, 637, + 638, 266, 410, 622, 528, 630, 655, 228, 263, 424, + 512, 614, 500, 401, 588, 589, 332, 499, 298, 203, + 372, 643, 226, 485, 374, 244, 233, 594, 619, 302, + 254, 292, 462, 650, 215, 523, 605, 241, 489, 0, + 0, 658, 249, 510, 617, 606, 217, 601, 509, 397, + 329, 330, 216, 0, 463, 271, 296, 0, 0, 261, + 419, 596, 597, 259, 659, 230, 629, 222, 0, 628, + 412, 591, 602, 398, 386, 221, 600, 396, 385, 337, + 358, 359, 283, 310, 452, 378, 453, 309, 311, 408, + 407, 409, 209, 615, 633, 0, 210, 0, 505, 618, + 660, 457, 214, 236, 237, 239, 0, 282, 286, 294, + 297, 306, 307, 316, 370, 423, 451, 447, 456, 0, + 585, 609, 623, 635, 641, 642, 644, 645, 646, 647, + 648, 651, 649, 411, 314, 501, 336, 376, 0, 0, + 429, 478, 242, 613, 502, 201, 0, 0, 0, 0, + 257, 258, 0, 581, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 661, 662, 663, 664, 665, 666, 667, + 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, + 678, 656, 514, 520, 515, 516, 517, 518, 519, 0, + 521, 0, 0, 0, 0, 0, 402, 0, 598, 599, + 679, 387, 492, 610, 338, 352, 355, 344, 364, 0, + 365, 340, 341, 346, 349, 350, 351, 356, 357, 361, + 367, 251, 212, 394, 403, 584, 315, 218, 219, 220, + 530, 531, 532, 533, 626, 627, 631, 207, 468, 469, + 470, 471, 295, 621, 312, 474, 473, 334, 335, 382, + 454, 546, 548, 559, 563, 565, 567, 573, 576, 547, + 549, 560, 564, 566, 568, 574, 577, 536, 538, 540, + 542, 555, 554, 551, 579, 580, 557, 562, 541, 553, + 558, 571, 578, 575, 535, 539, 543, 552, 570, 569, + 550, 561, 572, 556, 544, 537, 545, 0, 198, 223, + 371, 0, 460, 291, 657, 625, 490, 620, 208, 225, + 0, 265, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 200, 202, 211, 224, 234, 238, 245, + 264, 279, 281, 288, 301, 313, 321, 322, 325, 331, + 383, 390, 391, 392, 393, 413, 414, 415, 418, 421, + 422, 425, 427, 428, 431, 436, 440, 441, 442, 444, + 446, 448, 461, 466, 480, 481, 482, 483, 484, 487, + 488, 494, 495, 496, 497, 498, 506, 507, 522, 593, + 595, 612, 632, 639, 486, 388, 434, 458, 586, 304, + 305, 449, 450, 317, 318, 653, 654, 303, 607, 640, + 604, 652, 634, 443, 381, 0, 0, 384, 284, 308, + 323, 0, 624, 508, 229, 472, 293, 253, 0, 0, + 213, 248, 232, 262, 277, 280, 327, 395, 404, 433, + 439, 299, 274, 246, 465, 243, 491, 525, 526, 527, + 529, 399, 269, 438, 400, 0, 379, 582, 583, 319, + 0, 0, 0, 534, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 420, 0, 0, 0, 0, + 0, 0, 0, 273, 0, 0, 0, 0, 369, 270, + 0, 0, 206, 511, 0, 435, 0, 205, 0, 493, + 255, 380, 377, 590, 285, 276, 272, 252, 320, 389, + 432, 524, 426, 0, 373, 0, 0, 503, 405, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 326, 250, 328, + 204, 417, 504, 289, 0, 0, 0, 0, 1977, 513, + 196, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 240, 0, 0, 247, 0, 0, 0, 354, 363, 362, + 342, 343, 345, 347, 353, 360, 366, 339, 348, 0, + 0, 616, 0, 0, 0, 268, 324, 275, 267, 587, + 0, 0, 0, 0, 0, 0, 603, 0, 0, 231, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 278, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 300, 0, 406, 260, + 0, 459, 0, 0, 0, 636, 0, 0, 0, 0, + 0, 0, 0, 368, 0, 333, 199, 227, 0, 0, + 416, 467, 479, 0, 0, 0, 256, 0, 477, 430, + 611, 235, 287, 464, 437, 475, 445, 290, 0, 0, + 476, 375, 592, 455, 608, 637, 638, 266, 410, 622, + 528, 630, 655, 228, 263, 424, 512, 614, 500, 401, + 588, 589, 332, 499, 298, 203, 372, 643, 226, 485, + 374, 244, 233, 594, 619, 302, 254, 292, 462, 650, + 215, 523, 605, 241, 489, 0, 0, 658, 249, 510, + 617, 606, 217, 601, 509, 397, 329, 330, 216, 0, + 463, 271, 296, 0, 0, 261, 419, 596, 597, 259, + 659, 230, 629, 222, 0, 628, 412, 591, 602, 398, + 386, 221, 600, 396, 385, 337, 358, 359, 283, 310, + 452, 378, 453, 309, 311, 408, 407, 409, 209, 615, + 633, 0, 210, 0, 505, 618, 660, 457, 214, 236, + 237, 239, 0, 282, 286, 294, 297, 306, 307, 316, + 370, 423, 451, 447, 456, 0, 585, 609, 623, 635, + 641, 642, 644, 645, 646, 647, 648, 651, 649, 411, + 314, 501, 336, 376, 0, 0, 429, 478, 242, 613, + 502, 201, 0, 0, 0, 0, 257, 258, 0, 581, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 661, + 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, + 672, 673, 674, 675, 676, 677, 678, 656, 514, 520, + 515, 516, 517, 518, 519, 0, 521, 0, 0, 0, + 0, 0, 402, 0, 598, 599, 679, 387, 492, 610, + 338, 352, 355, 344, 364, 0, 365, 340, 341, 346, + 349, 350, 351, 356, 357, 361, 367, 251, 212, 394, + 403, 584, 315, 218, 219, 220, 530, 531, 532, 533, + 626, 627, 631, 207, 468, 469, 470, 471, 295, 621, + 312, 474, 473, 334, 335, 382, 454, 546, 548, 559, + 563, 565, 567, 573, 576, 547, 549, 560, 564, 566, + 568, 574, 577, 536, 538, 540, 542, 555, 554, 551, + 579, 580, 557, 562, 541, 553, 558, 571, 578, 575, + 535, 539, 543, 552, 570, 569, 550, 561, 572, 556, + 544, 537, 545, 0, 198, 223, 371, 0, 460, 291, + 657, 625, 490, 620, 208, 225, 0, 265, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 200, + 202, 211, 224, 234, 238, 245, 264, 279, 281, 288, + 301, 313, 321, 322, 325, 331, 383, 390, 391, 392, + 393, 413, 414, 415, 418, 421, 422, 425, 427, 428, + 431, 436, 440, 441, 442, 444, 446, 448, 461, 466, + 480, 481, 482, 483, 484, 487, 488, 494, 495, 496, + 497, 498, 506, 507, 522, 593, 595, 612, 632, 639, + 486, 388, 434, 458, 586, 304, 305, 449, 450, 317, + 318, 653, 654, 303, 607, 640, 604, 652, 634, 443, + 381, 0, 0, 384, 284, 308, 323, 0, 624, 508, + 229, 472, 293, 253, 0, 0, 213, 248, 232, 262, + 277, 280, 327, 395, 404, 433, 439, 299, 274, 246, + 465, 243, 491, 525, 526, 527, 529, 399, 269, 438, + 400, 0, 379, 582, 583, 319, 0, 0, 0, 534, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 420, 0, 0, 0, 0, 0, 0, 0, 273, + 0, 0, 0, 0, 369, 270, 0, 0, 206, 511, + 0, 435, 0, 205, 0, 493, 255, 380, 377, 590, + 285, 276, 272, 252, 320, 389, 432, 524, 426, 0, + 373, 0, 0, 503, 405, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 326, 250, 328, 204, 417, 504, 289, + 0, 0, 0, 0, 0, 513, 731, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 240, 0, 0, 247, + 0, 0, 0, 354, 363, 362, 342, 343, 345, 347, + 353, 360, 366, 339, 348, 0, 0, 616, 0, 0, + 0, 268, 324, 275, 267, 587, 0, 0, 0, 0, + 0, 0, 603, 0, 0, 231, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 278, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 300, 0, 406, 260, 0, 459, 0, 0, + 0, 636, 0, 0, 0, 3749, 0, 0, 0, 368, + 0, 333, 199, 227, 0, 0, 416, 467, 479, 0, + 0, 0, 256, 0, 477, 430, 611, 235, 287, 464, + 437, 475, 445, 290, 0, 0, 476, 375, 592, 455, + 608, 637, 638, 266, 410, 622, 528, 630, 655, 228, + 263, 424, 512, 614, 500, 401, 588, 589, 332, 499, + 298, 203, 372, 643, 226, 485, 374, 244, 233, 594, + 619, 302, 254, 292, 462, 650, 215, 523, 605, 241, + 489, 0, 0, 658, 249, 510, 617, 606, 217, 601, + 509, 397, 329, 330, 216, 0, 463, 271, 296, 0, + 0, 261, 419, 596, 597, 259, 659, 230, 629, 222, + 0, 628, 412, 591, 602, 398, 386, 221, 600, 396, + 385, 337, 358, 359, 283, 310, 452, 378, 453, 309, + 311, 408, 407, 409, 209, 615, 633, 0, 210, 0, + 505, 618, 660, 457, 214, 236, 237, 239, 0, 282, + 286, 294, 297, 306, 307, 316, 370, 423, 451, 447, + 456, 0, 585, 609, 623, 635, 641, 642, 644, 645, + 646, 647, 648, 651, 649, 411, 314, 501, 336, 376, + 0, 0, 429, 478, 242, 613, 502, 201, 0, 0, + 0, 0, 257, 258, 0, 581, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 661, 662, 663, 664, 665, + 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, + 676, 677, 678, 656, 514, 520, 515, 516, 517, 518, + 519, 0, 521, 0, 0, 0, 0, 0, 402, 0, + 598, 599, 679, 387, 492, 610, 338, 352, 355, 344, + 364, 0, 365, 340, 341, 346, 349, 350, 351, 356, + 357, 361, 367, 251, 212, 394, 403, 584, 315, 218, + 219, 220, 530, 531, 532, 533, 626, 627, 631, 207, + 468, 469, 470, 471, 295, 621, 312, 474, 473, 334, + 335, 382, 454, 546, 548, 559, 563, 565, 567, 573, + 576, 547, 549, 560, 564, 566, 568, 574, 577, 536, + 538, 540, 542, 555, 554, 551, 579, 580, 557, 562, + 541, 553, 558, 571, 578, 575, 535, 539, 543, 552, + 570, 569, 550, 561, 572, 556, 544, 537, 545, 0, + 198, 223, 371, 0, 460, 291, 657, 625, 490, 620, + 208, 225, 0, 265, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 200, 202, 211, 224, 234, + 238, 245, 264, 279, 281, 288, 301, 313, 321, 322, + 325, 331, 383, 390, 391, 392, 393, 413, 414, 415, + 418, 421, 422, 425, 427, 428, 431, 436, 440, 441, + 442, 444, 446, 448, 461, 466, 480, 481, 482, 483, + 484, 487, 488, 494, 495, 496, 497, 498, 506, 507, + 522, 593, 595, 612, 632, 639, 486, 388, 434, 458, + 586, 304, 305, 449, 450, 317, 318, 653, 654, 303, + 607, 640, 604, 652, 634, 443, 381, 0, 0, 384, + 284, 308, 323, 0, 624, 508, 229, 472, 293, 253, + 0, 0, 213, 248, 232, 262, 277, 280, 327, 395, + 404, 433, 439, 299, 274, 246, 465, 243, 491, 525, + 526, 527, 529, 399, 269, 438, 400, 0, 379, 582, + 583, 319, 0, 0, 0, 534, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 420, 0, 0, + 0, 0, 0, 0, 0, 273, 0, 0, 0, 0, + 369, 270, 0, 0, 206, 511, 0, 435, 0, 205, + 0, 493, 255, 380, 377, 590, 285, 276, 272, 252, + 320, 389, 432, 524, 426, 0, 373, 0, 0, 503, + 405, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 326, + 250, 328, 204, 417, 504, 289, 0, 95, 0, 0, + 0, 513, 731, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 240, 0, 0, 247, 0, 0, 0, 354, + 363, 362, 342, 343, 345, 347, 353, 360, 366, 339, + 348, 0, 0, 616, 0, 0, 0, 268, 324, 275, + 267, 587, 0, 0, 0, 0, 0, 0, 603, 0, + 0, 231, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 278, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 300, 0, + 406, 260, 0, 459, 0, 0, 0, 636, 0, 0, + 0, 0, 0, 0, 0, 368, 0, 333, 199, 227, + 0, 0, 416, 467, 479, 0, 0, 0, 256, 0, + 477, 430, 611, 235, 287, 464, 437, 475, 445, 290, + 0, 0, 476, 375, 592, 455, 608, 637, 638, 266, + 410, 622, 528, 630, 655, 228, 263, 424, 512, 614, + 500, 401, 588, 589, 332, 499, 298, 203, 372, 643, + 226, 485, 374, 244, 233, 594, 619, 302, 254, 292, + 462, 650, 215, 523, 605, 241, 489, 0, 0, 658, + 249, 510, 617, 606, 217, 601, 509, 397, 329, 330, + 216, 0, 463, 271, 296, 0, 0, 261, 419, 596, + 597, 259, 659, 230, 629, 222, 0, 628, 412, 591, + 602, 398, 386, 221, 600, 396, 385, 337, 358, 359, + 283, 310, 452, 378, 453, 309, 311, 408, 407, 409, + 209, 615, 633, 0, 210, 0, 505, 618, 660, 457, + 214, 236, 237, 239, 0, 282, 286, 294, 297, 306, + 307, 316, 370, 423, 451, 447, 456, 0, 585, 609, + 623, 635, 641, 642, 644, 645, 646, 647, 648, 651, + 649, 411, 314, 501, 336, 376, 0, 0, 429, 478, + 242, 613, 502, 201, 0, 0, 0, 0, 257, 258, + 0, 581, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 661, 662, 663, 664, 665, 666, 667, 668, 669, + 670, 671, 672, 673, 674, 675, 676, 677, 678, 656, + 514, 520, 515, 516, 517, 518, 519, 0, 521, 0, + 0, 0, 0, 0, 402, 0, 598, 599, 679, 387, + 492, 610, 338, 352, 355, 344, 364, 0, 365, 340, + 341, 346, 349, 350, 351, 356, 357, 361, 367, 251, + 212, 394, 403, 584, 315, 218, 219, 220, 530, 531, + 532, 533, 626, 627, 631, 207, 468, 469, 470, 471, + 295, 621, 312, 474, 473, 334, 335, 382, 454, 546, + 548, 559, 563, 565, 567, 573, 576, 547, 549, 560, + 564, 566, 568, 574, 577, 536, 538, 540, 542, 555, + 554, 551, 579, 580, 557, 562, 541, 553, 558, 571, + 578, 575, 535, 539, 543, 552, 570, 569, 550, 561, + 572, 556, 544, 537, 545, 0, 198, 223, 371, 0, + 460, 291, 657, 625, 490, 620, 208, 225, 0, 265, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 200, 202, 211, 224, 234, 238, 245, 264, 279, + 281, 288, 301, 313, 321, 322, 325, 331, 383, 390, + 391, 392, 393, 413, 414, 415, 418, 421, 422, 425, + 427, 428, 431, 436, 440, 441, 442, 444, 446, 448, + 461, 466, 480, 481, 482, 483, 484, 487, 488, 494, + 495, 496, 497, 498, 506, 507, 522, 593, 595, 612, + 632, 639, 486, 388, 434, 458, 586, 304, 305, 449, + 450, 317, 318, 653, 654, 303, 607, 640, 604, 652, + 634, 443, 381, 0, 0, 384, 284, 308, 323, 0, + 624, 508, 229, 472, 293, 253, 0, 0, 213, 248, + 232, 262, 277, 280, 327, 395, 404, 433, 439, 299, + 274, 246, 465, 243, 491, 525, 526, 527, 529, 399, + 269, 438, 400, 0, 379, 582, 583, 319, 0, 0, + 0, 534, 0, 0, 0, 0, 2445, 0, 0, 0, + 0, 0, 0, 420, 0, 0, 0, 0, 0, 0, + 0, 273, 0, 0, 0, 0, 369, 270, 0, 0, + 206, 511, 0, 435, 0, 205, 0, 493, 255, 380, + 377, 590, 285, 276, 272, 252, 320, 389, 432, 524, + 426, 0, 373, 0, 0, 503, 405, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 326, 250, 328, 204, 417, + 504, 289, 0, 0, 0, 0, 0, 513, 196, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 240, 0, + 0, 247, 0, 0, 0, 354, 363, 362, 342, 343, + 345, 347, 353, 360, 366, 339, 348, 0, 0, 616, + 0, 0, 0, 268, 324, 275, 267, 587, 0, 0, + 0, 0, 0, 0, 603, 0, 0, 231, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 278, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 300, 0, 406, 260, 0, 459, + 0, 0, 0, 636, 0, 0, 0, 0, 0, 0, + 0, 368, 0, 333, 199, 227, 0, 0, 416, 467, + 479, 0, 0, 0, 256, 0, 477, 430, 611, 235, + 287, 464, 437, 475, 445, 290, 0, 0, 476, 375, + 592, 455, 608, 637, 638, 266, 410, 622, 528, 630, + 655, 228, 263, 424, 512, 614, 500, 401, 588, 589, + 332, 499, 298, 203, 372, 643, 226, 485, 374, 244, + 233, 594, 619, 302, 254, 292, 462, 650, 215, 523, + 605, 241, 489, 0, 0, 658, 249, 510, 617, 606, + 217, 601, 509, 397, 329, 330, 216, 0, 463, 271, + 296, 0, 0, 261, 419, 596, 597, 259, 659, 230, + 629, 222, 0, 628, 412, 591, 602, 398, 386, 221, + 600, 396, 385, 337, 358, 359, 283, 310, 452, 378, + 453, 309, 311, 408, 407, 409, 209, 615, 633, 0, + 210, 0, 505, 618, 660, 457, 214, 236, 237, 239, + 0, 282, 286, 294, 297, 306, 307, 316, 370, 423, + 451, 447, 456, 0, 585, 609, 623, 635, 641, 642, + 644, 645, 646, 647, 648, 651, 649, 411, 314, 501, + 336, 376, 0, 0, 429, 478, 242, 613, 502, 201, + 0, 0, 0, 0, 257, 258, 0, 581, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 661, 662, 663, + 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, + 674, 675, 676, 677, 678, 656, 514, 520, 515, 516, + 517, 518, 519, 0, 521, 0, 0, 0, 0, 0, + 402, 0, 598, 599, 679, 387, 492, 610, 338, 352, + 355, 344, 364, 0, 365, 340, 341, 346, 349, 350, + 351, 356, 357, 361, 367, 251, 212, 394, 403, 584, + 315, 218, 219, 220, 530, 531, 532, 533, 626, 627, + 631, 207, 468, 469, 470, 471, 295, 621, 312, 474, + 473, 334, 335, 382, 454, 546, 548, 559, 563, 565, + 567, 573, 576, 547, 549, 560, 564, 566, 568, 574, + 577, 536, 538, 540, 542, 555, 554, 551, 579, 580, + 557, 562, 541, 553, 558, 571, 578, 575, 535, 539, + 543, 552, 570, 569, 550, 561, 572, 556, 544, 537, + 545, 0, 198, 223, 371, 0, 460, 291, 657, 625, + 490, 620, 208, 225, 0, 265, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 200, 202, 211, + 224, 234, 238, 245, 264, 279, 281, 288, 301, 313, + 321, 322, 325, 331, 383, 390, 391, 392, 393, 413, + 414, 415, 418, 421, 422, 425, 427, 428, 431, 436, + 440, 441, 442, 444, 446, 448, 461, 466, 480, 481, + 482, 483, 484, 487, 488, 494, 495, 496, 497, 498, + 506, 507, 522, 593, 595, 612, 632, 639, 486, 388, + 434, 458, 586, 304, 305, 449, 450, 317, 318, 653, + 654, 303, 607, 640, 604, 652, 634, 443, 381, 0, + 0, 384, 284, 308, 323, 0, 624, 508, 229, 472, + 293, 253, 0, 0, 213, 248, 232, 262, 277, 280, + 327, 395, 404, 433, 439, 299, 274, 246, 465, 243, + 491, 525, 526, 527, 529, 399, 269, 438, 400, 0, + 379, 582, 583, 319, 0, 0, 0, 534, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 420, + 0, 0, 0, 0, 0, 0, 0, 273, 0, 0, + 0, 0, 369, 270, 0, 0, 206, 511, 0, 435, + 0, 205, 0, 493, 255, 380, 377, 590, 285, 276, + 272, 252, 320, 389, 432, 524, 426, 0, 373, 0, + 0, 503, 405, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 326, 250, 328, 204, 417, 504, 289, 0, 0, + 0, 0, 1796, 513, 731, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 240, 0, 0, 247, 0, 0, + 0, 354, 363, 362, 342, 343, 345, 347, 353, 360, + 366, 339, 348, 0, 0, 616, 0, 0, 0, 268, + 324, 275, 267, 587, 0, 0, 0, 0, 0, 0, + 603, 0, 0, 231, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 278, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 300, 0, 406, 260, 0, 459, 0, 0, 0, 636, + 0, 0, 0, 0, 0, 0, 0, 368, 0, 333, + 199, 227, 0, 0, 416, 467, 479, 0, 0, 0, + 256, 0, 477, 430, 611, 235, 287, 464, 437, 475, + 445, 290, 0, 0, 476, 375, 592, 455, 608, 637, + 638, 266, 410, 622, 528, 630, 655, 228, 263, 424, + 512, 614, 500, 401, 588, 589, 332, 499, 298, 203, + 372, 643, 226, 485, 374, 244, 233, 594, 619, 302, + 254, 292, 462, 650, 215, 523, 605, 241, 489, 0, + 0, 658, 249, 510, 617, 606, 217, 601, 509, 397, + 329, 330, 216, 0, 463, 271, 296, 0, 0, 261, + 419, 596, 597, 259, 659, 230, 629, 222, 0, 628, + 412, 591, 602, 398, 386, 221, 600, 396, 385, 337, + 358, 359, 283, 310, 452, 378, 453, 309, 311, 408, + 407, 409, 209, 615, 633, 0, 210, 0, 505, 618, + 660, 457, 214, 236, 237, 239, 0, 282, 286, 294, + 297, 306, 307, 316, 370, 423, 451, 447, 456, 0, + 585, 609, 623, 635, 641, 642, 644, 645, 646, 647, + 648, 651, 649, 411, 314, 501, 336, 376, 0, 0, + 429, 478, 242, 613, 502, 201, 0, 0, 0, 0, + 257, 258, 0, 581, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 661, 662, 663, 664, 665, 666, 667, + 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, + 678, 656, 514, 520, 515, 516, 517, 518, 519, 0, + 521, 0, 0, 0, 0, 0, 402, 0, 598, 599, + 679, 387, 492, 610, 338, 352, 355, 344, 364, 0, + 365, 340, 341, 346, 349, 350, 351, 356, 357, 361, + 367, 251, 212, 394, 403, 584, 315, 218, 219, 220, + 530, 531, 532, 533, 626, 627, 631, 207, 468, 469, + 470, 471, 295, 621, 312, 474, 473, 334, 335, 382, + 454, 546, 548, 559, 563, 565, 567, 573, 576, 547, + 549, 560, 564, 566, 568, 574, 577, 536, 538, 540, + 542, 555, 554, 551, 579, 580, 557, 562, 541, 553, + 558, 571, 578, 575, 535, 539, 543, 552, 570, 569, + 550, 561, 572, 556, 544, 537, 545, 0, 198, 223, + 371, 0, 460, 291, 657, 625, 490, 620, 208, 225, + 0, 265, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 200, 202, 211, 224, 234, 238, 245, + 264, 279, 281, 288, 301, 313, 321, 322, 325, 331, + 383, 390, 391, 392, 393, 413, 414, 415, 418, 421, + 422, 425, 427, 428, 431, 436, 440, 441, 442, 444, + 446, 448, 461, 466, 480, 481, 482, 483, 484, 487, + 488, 494, 495, 496, 497, 498, 506, 507, 522, 593, + 595, 612, 632, 639, 486, 388, 434, 458, 586, 304, + 305, 449, 450, 317, 318, 653, 654, 303, 607, 640, + 604, 652, 634, 443, 381, 0, 0, 384, 284, 308, + 323, 0, 624, 508, 229, 472, 293, 253, 0, 0, + 213, 248, 232, 262, 277, 280, 327, 395, 404, 433, + 439, 299, 274, 246, 465, 243, 491, 525, 526, 527, + 529, 399, 269, 438, 400, 0, 379, 582, 583, 319, + 0, 0, 0, 534, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 420, 0, 0, 0, 0, + 0, 0, 0, 273, 0, 0, 0, 0, 369, 270, + 0, 0, 206, 511, 0, 435, 0, 205, 0, 493, + 255, 380, 377, 590, 285, 276, 272, 252, 320, 389, + 432, 524, 426, 0, 373, 0, 0, 503, 405, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 326, 250, 328, + 204, 417, 504, 289, 0, 0, 0, 0, 0, 513, + 196, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 240, 0, 0, 247, 0, 0, 0, 354, 363, 362, + 342, 343, 345, 347, 353, 360, 366, 339, 348, 0, + 0, 616, 0, 0, 0, 268, 324, 275, 267, 587, + 0, 0, 0, 0, 0, 0, 603, 0, 0, 231, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 278, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 300, 0, 406, 260, + 0, 459, 0, 0, 0, 636, 0, 0, 0, 0, + 0, 0, 0, 368, 0, 333, 199, 227, 0, 0, + 416, 467, 479, 0, 0, 0, 256, 0, 477, 430, + 611, 235, 287, 464, 437, 475, 445, 290, 0, 0, + 476, 375, 592, 455, 608, 637, 638, 266, 410, 622, + 528, 630, 655, 228, 263, 424, 512, 614, 500, 401, + 588, 589, 332, 499, 298, 203, 372, 643, 226, 485, + 374, 244, 233, 594, 619, 302, 254, 292, 462, 650, + 215, 523, 605, 241, 489, 0, 0, 658, 249, 510, + 617, 606, 217, 601, 509, 397, 329, 330, 216, 0, + 463, 271, 296, 0, 0, 261, 419, 596, 597, 259, + 659, 230, 629, 222, 0, 628, 412, 591, 602, 398, + 386, 221, 600, 396, 385, 337, 358, 359, 283, 310, + 452, 378, 453, 309, 311, 408, 407, 409, 209, 615, + 633, 0, 210, 0, 505, 618, 660, 457, 214, 236, + 237, 239, 0, 282, 286, 294, 297, 306, 307, 316, + 370, 423, 451, 447, 456, 0, 585, 609, 623, 635, + 641, 642, 644, 645, 646, 647, 648, 651, 649, 411, + 314, 501, 336, 376, 0, 0, 429, 478, 242, 613, + 502, 201, 0, 0, 0, 0, 257, 258, 0, 581, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 661, + 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, + 672, 673, 674, 675, 676, 677, 678, 656, 514, 520, + 515, 516, 517, 518, 519, 0, 521, 0, 0, 0, + 0, 0, 402, 0, 598, 599, 679, 387, 492, 610, + 338, 352, 355, 344, 364, 0, 365, 340, 341, 346, + 349, 350, 351, 356, 357, 361, 367, 251, 212, 394, + 403, 584, 315, 218, 219, 220, 530, 531, 532, 533, + 626, 627, 631, 207, 468, 469, 470, 471, 295, 621, + 312, 474, 473, 334, 335, 382, 454, 546, 548, 559, + 563, 565, 567, 573, 576, 547, 549, 560, 564, 566, + 568, 574, 577, 536, 538, 540, 542, 555, 554, 551, + 579, 580, 557, 562, 541, 553, 558, 571, 578, 575, + 535, 539, 543, 552, 570, 569, 550, 561, 572, 556, + 544, 537, 545, 0, 198, 223, 371, 2095, 460, 291, + 657, 625, 490, 620, 208, 225, 0, 265, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 200, + 202, 211, 224, 234, 238, 245, 264, 279, 281, 288, + 301, 313, 321, 322, 325, 331, 383, 390, 391, 392, + 393, 413, 414, 415, 418, 421, 422, 425, 427, 428, + 431, 436, 440, 441, 442, 444, 446, 448, 461, 466, + 480, 481, 482, 483, 484, 487, 488, 494, 495, 496, + 497, 498, 506, 507, 522, 593, 595, 612, 632, 639, + 486, 388, 434, 458, 586, 304, 305, 449, 450, 317, + 318, 653, 654, 303, 607, 640, 604, 652, 634, 443, + 381, 0, 0, 384, 284, 308, 323, 0, 624, 508, + 229, 472, 293, 253, 0, 0, 213, 248, 232, 262, + 277, 280, 327, 395, 404, 433, 439, 299, 274, 246, + 465, 243, 491, 525, 526, 527, 529, 399, 269, 438, + 400, 0, 379, 582, 583, 319, 0, 0, 0, 534, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 420, 0, 0, 0, 0, 0, 0, 0, 273, + 0, 0, 0, 0, 369, 270, 0, 0, 206, 511, + 0, 435, 0, 205, 0, 493, 255, 380, 377, 590, + 285, 276, 272, 252, 320, 389, 432, 524, 426, 0, + 373, 0, 0, 503, 405, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 326, 250, 328, 204, 417, 504, 289, + 0, 0, 0, 0, 2086, 513, 731, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 240, 0, 0, 247, + 0, 0, 0, 354, 363, 362, 342, 343, 345, 347, + 353, 360, 366, 339, 348, 0, 0, 616, 0, 0, + 0, 268, 324, 275, 267, 587, 0, 0, 0, 0, + 0, 0, 603, 0, 0, 231, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 278, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 300, 0, 406, 260, 0, 459, 0, 0, + 0, 636, 0, 0, 0, 0, 0, 0, 0, 368, + 0, 333, 199, 227, 0, 0, 416, 467, 479, 0, + 0, 0, 256, 0, 477, 430, 611, 235, 287, 464, + 437, 475, 445, 290, 0, 0, 476, 375, 592, 455, + 608, 637, 638, 266, 410, 622, 528, 630, 655, 228, + 263, 424, 512, 614, 500, 401, 588, 589, 332, 499, + 298, 203, 372, 643, 226, 485, 374, 244, 233, 594, + 619, 302, 254, 292, 462, 650, 215, 523, 605, 241, + 489, 0, 0, 658, 249, 510, 617, 606, 217, 601, + 509, 397, 329, 330, 216, 0, 463, 271, 296, 0, + 0, 261, 419, 596, 597, 259, 659, 230, 629, 222, + 0, 628, 412, 591, 602, 398, 386, 221, 600, 396, + 385, 337, 358, 359, 283, 310, 452, 378, 453, 309, + 311, 408, 407, 409, 209, 615, 633, 0, 210, 0, + 505, 618, 660, 457, 214, 236, 237, 239, 0, 282, + 286, 294, 297, 306, 307, 316, 370, 423, 451, 447, + 456, 0, 585, 609, 623, 635, 641, 642, 644, 645, + 646, 647, 648, 651, 649, 411, 314, 501, 336, 376, + 0, 0, 429, 478, 242, 613, 502, 201, 0, 0, + 0, 0, 257, 258, 0, 581, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 661, 662, 663, 664, 665, + 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, + 676, 677, 678, 656, 514, 520, 515, 516, 517, 518, + 519, 0, 521, 0, 0, 0, 0, 0, 402, 0, + 598, 599, 679, 387, 492, 610, 338, 352, 355, 344, + 364, 0, 365, 340, 341, 346, 349, 350, 351, 356, + 357, 361, 367, 251, 212, 394, 403, 584, 315, 218, + 219, 220, 530, 531, 532, 533, 626, 627, 631, 207, + 468, 469, 470, 471, 295, 621, 312, 474, 473, 334, + 335, 382, 454, 546, 548, 559, 563, 565, 567, 573, + 576, 547, 549, 560, 564, 566, 568, 574, 577, 536, + 538, 540, 542, 555, 554, 551, 579, 580, 557, 562, + 541, 553, 558, 571, 578, 575, 535, 539, 543, 552, + 570, 569, 550, 561, 572, 556, 544, 537, 545, 0, + 198, 223, 371, 0, 460, 291, 657, 625, 490, 620, + 208, 225, 0, 265, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 200, 202, 211, 224, 234, + 238, 245, 264, 279, 281, 288, 301, 313, 321, 322, + 325, 331, 383, 390, 391, 392, 393, 413, 414, 415, + 418, 421, 422, 425, 427, 428, 431, 436, 440, 441, + 442, 444, 446, 448, 461, 466, 480, 481, 482, 483, + 484, 487, 488, 494, 495, 496, 497, 498, 506, 507, + 522, 593, 595, 612, 632, 639, 486, 388, 434, 458, + 586, 304, 305, 449, 450, 317, 318, 653, 654, 303, + 607, 640, 604, 652, 634, 443, 381, 0, 0, 384, + 284, 308, 323, 0, 624, 508, 229, 472, 293, 253, + 0, 0, 213, 248, 232, 262, 277, 280, 327, 395, + 404, 433, 439, 299, 274, 246, 465, 243, 491, 525, + 526, 527, 529, 399, 269, 438, 400, 0, 379, 582, + 583, 319, 0, 0, 0, 534, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 420, 0, 0, + 0, 0, 0, 0, 0, 273, 0, 0, 0, 0, + 369, 270, 0, 1944, 206, 511, 0, 435, 0, 205, + 0, 493, 255, 380, 377, 590, 285, 276, 272, 252, + 320, 389, 432, 524, 426, 0, 373, 0, 0, 503, + 405, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 326, + 250, 328, 204, 417, 504, 289, 0, 0, 0, 0, + 0, 513, 731, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 240, 0, 0, 247, 0, 0, 0, 354, + 363, 362, 342, 343, 345, 347, 353, 360, 366, 339, + 348, 0, 0, 616, 0, 0, 0, 268, 324, 275, + 267, 587, 0, 0, 0, 0, 0, 0, 603, 0, + 0, 231, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 278, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 300, 0, + 406, 260, 0, 459, 0, 0, 0, 636, 0, 0, + 0, 0, 0, 0, 0, 368, 0, 333, 199, 227, + 0, 0, 416, 467, 479, 0, 0, 0, 256, 0, + 477, 430, 611, 235, 287, 464, 437, 475, 445, 290, + 0, 0, 476, 375, 592, 455, 608, 637, 638, 266, + 410, 622, 528, 630, 655, 228, 263, 424, 512, 614, + 500, 401, 588, 589, 332, 499, 298, 203, 372, 643, + 226, 485, 374, 244, 233, 594, 619, 302, 254, 292, + 462, 650, 215, 523, 605, 241, 489, 0, 0, 658, + 249, 510, 617, 606, 217, 601, 509, 397, 329, 330, + 216, 0, 463, 271, 296, 0, 0, 261, 419, 596, + 597, 259, 659, 230, 629, 222, 0, 628, 412, 591, + 602, 398, 386, 221, 600, 396, 385, 337, 358, 359, + 283, 310, 452, 378, 453, 309, 311, 408, 407, 409, + 209, 615, 633, 0, 210, 0, 505, 618, 660, 457, + 214, 236, 237, 239, 0, 282, 286, 294, 297, 306, + 307, 316, 370, 423, 451, 447, 456, 0, 585, 609, + 623, 635, 641, 642, 644, 645, 646, 647, 648, 651, + 649, 411, 314, 501, 336, 376, 0, 0, 429, 478, + 242, 613, 502, 201, 0, 0, 0, 0, 257, 258, + 0, 581, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 661, 662, 663, 664, 665, 666, 667, 668, 669, + 670, 671, 672, 673, 674, 675, 676, 677, 678, 656, + 514, 520, 515, 516, 517, 518, 519, 0, 521, 0, + 0, 0, 0, 0, 402, 0, 598, 599, 679, 387, + 492, 610, 338, 352, 355, 344, 364, 0, 365, 340, + 341, 346, 349, 350, 351, 356, 357, 361, 367, 251, + 212, 394, 403, 584, 315, 218, 219, 220, 530, 531, + 532, 533, 626, 627, 631, 207, 468, 469, 470, 471, + 295, 621, 312, 474, 473, 334, 335, 382, 454, 546, + 548, 559, 563, 565, 567, 573, 576, 547, 549, 560, + 564, 566, 568, 574, 577, 536, 538, 540, 542, 555, + 554, 551, 579, 580, 557, 562, 541, 553, 558, 571, + 578, 575, 535, 539, 543, 552, 570, 569, 550, 561, + 572, 556, 544, 537, 545, 0, 198, 223, 371, 0, + 460, 291, 657, 625, 490, 620, 208, 225, 0, 265, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 200, 202, 211, 224, 234, 238, 245, 264, 279, + 281, 288, 301, 313, 321, 322, 325, 331, 383, 390, + 391, 392, 393, 413, 414, 415, 418, 421, 422, 425, + 427, 428, 431, 436, 440, 441, 442, 444, 446, 448, + 461, 466, 480, 481, 482, 483, 484, 487, 488, 494, + 495, 496, 497, 498, 506, 507, 522, 593, 595, 612, + 632, 639, 486, 388, 434, 458, 586, 304, 305, 449, + 450, 317, 318, 653, 654, 303, 607, 640, 604, 652, + 634, 443, 381, 0, 0, 384, 284, 308, 323, 0, + 624, 508, 229, 472, 293, 253, 0, 0, 213, 248, + 232, 262, 277, 280, 327, 395, 404, 433, 439, 299, + 274, 246, 465, 243, 491, 525, 526, 527, 529, 399, + 269, 438, 400, 0, 379, 582, 583, 319, 0, 0, + 0, 534, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 420, 0, 0, 0, 0, 0, 0, + 0, 273, 0, 0, 0, 0, 369, 270, 0, 1942, + 206, 511, 0, 435, 0, 205, 0, 493, 255, 380, + 377, 590, 285, 276, 272, 252, 320, 389, 432, 524, + 426, 0, 373, 0, 0, 503, 405, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 326, 250, 328, 204, 417, + 504, 289, 0, 0, 0, 0, 0, 513, 731, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 240, 0, + 0, 247, 0, 0, 0, 354, 363, 362, 342, 343, + 345, 347, 353, 360, 366, 339, 348, 0, 0, 616, + 0, 0, 0, 268, 324, 275, 267, 587, 0, 0, + 0, 0, 0, 0, 603, 0, 0, 231, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 278, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 300, 0, 406, 260, 0, 459, + 0, 0, 0, 636, 0, 0, 0, 0, 0, 0, + 0, 368, 0, 333, 199, 227, 0, 0, 416, 467, + 479, 0, 0, 0, 256, 0, 477, 430, 611, 235, + 287, 464, 437, 475, 445, 290, 0, 0, 476, 375, + 592, 455, 608, 637, 638, 266, 410, 622, 528, 630, + 655, 228, 263, 424, 512, 614, 500, 401, 588, 589, + 332, 499, 298, 203, 372, 643, 226, 485, 374, 244, + 233, 594, 619, 302, 254, 292, 462, 650, 215, 523, + 605, 241, 489, 0, 0, 658, 249, 510, 617, 606, + 217, 601, 509, 397, 329, 330, 216, 0, 463, 271, + 296, 0, 0, 261, 419, 596, 597, 259, 659, 230, + 629, 222, 0, 628, 412, 591, 602, 398, 386, 221, + 600, 396, 385, 337, 358, 359, 283, 310, 452, 378, + 453, 309, 311, 408, 407, 409, 209, 615, 633, 0, + 210, 0, 505, 618, 660, 457, 214, 236, 237, 239, + 0, 282, 286, 294, 297, 306, 307, 316, 370, 423, + 451, 447, 456, 0, 585, 609, 623, 635, 641, 642, + 644, 645, 646, 647, 648, 651, 649, 411, 314, 501, + 336, 376, 0, 0, 429, 478, 242, 613, 502, 201, + 0, 0, 0, 0, 257, 258, 0, 581, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 661, 662, 663, + 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, + 674, 675, 676, 677, 678, 656, 514, 520, 515, 516, + 517, 518, 519, 0, 521, 0, 0, 0, 0, 0, + 402, 0, 598, 599, 679, 387, 492, 610, 338, 352, + 355, 344, 364, 0, 365, 340, 341, 346, 349, 350, + 351, 356, 357, 361, 367, 251, 212, 394, 403, 584, + 315, 218, 219, 220, 530, 531, 532, 533, 626, 627, + 631, 207, 468, 469, 470, 471, 295, 621, 312, 474, + 473, 334, 335, 382, 454, 546, 548, 559, 563, 565, + 567, 573, 576, 547, 549, 560, 564, 566, 568, 574, + 577, 536, 538, 540, 542, 555, 554, 551, 579, 580, + 557, 562, 541, 553, 558, 571, 578, 575, 535, 539, + 543, 552, 570, 569, 550, 561, 572, 556, 544, 537, + 545, 0, 198, 223, 371, 0, 460, 291, 657, 625, + 490, 620, 208, 225, 0, 265, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 200, 202, 211, + 224, 234, 238, 245, 264, 279, 281, 288, 301, 313, + 321, 322, 325, 331, 383, 390, 391, 392, 393, 413, + 414, 415, 418, 421, 422, 425, 427, 428, 431, 436, + 440, 441, 442, 444, 446, 448, 461, 466, 480, 481, + 482, 483, 484, 487, 488, 494, 495, 496, 497, 498, + 506, 507, 522, 593, 595, 612, 632, 639, 486, 388, + 434, 458, 586, 304, 305, 449, 450, 317, 318, 653, + 654, 303, 607, 640, 604, 652, 634, 443, 381, 0, + 0, 384, 284, 308, 323, 0, 624, 508, 229, 472, + 293, 253, 0, 0, 213, 248, 232, 262, 277, 280, + 327, 395, 404, 433, 439, 299, 274, 246, 465, 243, + 491, 525, 526, 527, 529, 399, 269, 438, 400, 0, + 379, 582, 583, 319, 0, 0, 0, 534, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 420, + 0, 0, 0, 0, 0, 0, 0, 273, 0, 0, + 0, 0, 369, 270, 0, 1940, 206, 511, 0, 435, + 0, 205, 0, 493, 255, 380, 377, 590, 285, 276, + 272, 252, 320, 389, 432, 524, 426, 0, 373, 0, + 0, 503, 405, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 326, 250, 328, 204, 417, 504, 289, 0, 0, + 0, 0, 0, 513, 731, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 240, 0, 0, 247, 0, 0, + 0, 354, 363, 362, 342, 343, 345, 347, 353, 360, + 366, 339, 348, 0, 0, 616, 0, 0, 0, 268, + 324, 275, 267, 587, 0, 0, 0, 0, 0, 0, + 603, 0, 0, 231, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 278, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 300, 0, 406, 260, 0, 459, 0, 0, 0, 636, + 0, 0, 0, 0, 0, 0, 0, 368, 0, 333, + 199, 227, 0, 0, 416, 467, 479, 0, 0, 0, + 256, 0, 477, 430, 611, 235, 287, 464, 437, 475, + 445, 290, 0, 0, 476, 375, 592, 455, 608, 637, + 638, 266, 410, 622, 528, 630, 655, 228, 263, 424, + 512, 614, 500, 401, 588, 589, 332, 499, 298, 203, + 372, 643, 226, 485, 374, 244, 233, 594, 619, 302, + 254, 292, 462, 650, 215, 523, 605, 241, 489, 0, + 0, 658, 249, 510, 617, 606, 217, 601, 509, 397, + 329, 330, 216, 0, 463, 271, 296, 0, 0, 261, + 419, 596, 597, 259, 659, 230, 629, 222, 0, 628, + 412, 591, 602, 398, 386, 221, 600, 396, 385, 337, + 358, 359, 283, 310, 452, 378, 453, 309, 311, 408, + 407, 409, 209, 615, 633, 0, 210, 0, 505, 618, + 660, 457, 214, 236, 237, 239, 0, 282, 286, 294, + 297, 306, 307, 316, 370, 423, 451, 447, 456, 0, + 585, 609, 623, 635, 641, 642, 644, 645, 646, 647, + 648, 651, 649, 411, 314, 501, 336, 376, 0, 0, + 429, 478, 242, 613, 502, 201, 0, 0, 0, 0, + 257, 258, 0, 581, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 661, 662, 663, 664, 665, 666, 667, + 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, + 678, 656, 514, 520, 515, 516, 517, 518, 519, 0, + 521, 0, 0, 0, 0, 0, 402, 0, 598, 599, + 679, 387, 492, 610, 338, 352, 355, 344, 364, 0, + 365, 340, 341, 346, 349, 350, 351, 356, 357, 361, + 367, 251, 212, 394, 403, 584, 315, 218, 219, 220, + 530, 531, 532, 533, 626, 627, 631, 207, 468, 469, + 470, 471, 295, 621, 312, 474, 473, 334, 335, 382, + 454, 546, 548, 559, 563, 565, 567, 573, 576, 547, + 549, 560, 564, 566, 568, 574, 577, 536, 538, 540, + 542, 555, 554, 551, 579, 580, 557, 562, 541, 553, + 558, 571, 578, 575, 535, 539, 543, 552, 570, 569, + 550, 561, 572, 556, 544, 537, 545, 0, 198, 223, + 371, 0, 460, 291, 657, 625, 490, 620, 208, 225, + 0, 265, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 200, 202, 211, 224, 234, 238, 245, + 264, 279, 281, 288, 301, 313, 321, 322, 325, 331, + 383, 390, 391, 392, 393, 413, 414, 415, 418, 421, + 422, 425, 427, 428, 431, 436, 440, 441, 442, 444, + 446, 448, 461, 466, 480, 481, 482, 483, 484, 487, + 488, 494, 495, 496, 497, 498, 506, 507, 522, 593, + 595, 612, 632, 639, 486, 388, 434, 458, 586, 304, + 305, 449, 450, 317, 318, 653, 654, 303, 607, 640, + 604, 652, 634, 443, 381, 0, 0, 384, 284, 308, + 323, 0, 624, 508, 229, 472, 293, 253, 0, 0, + 213, 248, 232, 262, 277, 280, 327, 395, 404, 433, + 439, 299, 274, 246, 465, 243, 491, 525, 526, 527, + 529, 399, 269, 438, 400, 0, 379, 582, 583, 319, + 0, 0, 0, 534, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 420, 0, 0, 0, 0, + 0, 0, 0, 273, 0, 0, 0, 0, 369, 270, + 0, 1938, 206, 511, 0, 435, 0, 205, 0, 493, + 255, 380, 377, 590, 285, 276, 272, 252, 320, 389, + 432, 524, 426, 0, 373, 0, 0, 503, 405, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 326, 250, 328, + 204, 417, 504, 289, 0, 0, 0, 0, 0, 513, + 731, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 240, 0, 0, 247, 0, 0, 0, 354, 363, 362, + 342, 343, 345, 347, 353, 360, 366, 339, 348, 0, + 0, 616, 0, 0, 0, 268, 324, 275, 267, 587, + 0, 0, 0, 0, 0, 0, 603, 0, 0, 231, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 278, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 300, 0, 406, 260, + 0, 459, 0, 0, 0, 636, 0, 0, 0, 0, + 0, 0, 0, 368, 0, 333, 199, 227, 0, 0, + 416, 467, 479, 0, 0, 0, 256, 0, 477, 430, + 611, 235, 287, 464, 437, 475, 445, 290, 0, 0, + 476, 375, 592, 455, 608, 637, 638, 266, 410, 622, + 528, 630, 655, 228, 263, 424, 512, 614, 500, 401, + 588, 589, 332, 499, 298, 203, 372, 643, 226, 485, + 374, 244, 233, 594, 619, 302, 254, 292, 462, 650, + 215, 523, 605, 241, 489, 0, 0, 658, 249, 510, + 617, 606, 217, 601, 509, 397, 329, 330, 216, 0, + 463, 271, 296, 0, 0, 261, 419, 596, 597, 259, + 659, 230, 629, 222, 0, 628, 412, 591, 602, 398, + 386, 221, 600, 396, 385, 337, 358, 359, 283, 310, + 452, 378, 453, 309, 311, 408, 407, 409, 209, 615, + 633, 0, 210, 0, 505, 618, 660, 457, 214, 236, + 237, 239, 0, 282, 286, 294, 297, 306, 307, 316, + 370, 423, 451, 447, 456, 0, 585, 609, 623, 635, + 641, 642, 644, 645, 646, 647, 648, 651, 649, 411, + 314, 501, 336, 376, 0, 0, 429, 478, 242, 613, + 502, 201, 0, 0, 0, 0, 257, 258, 0, 581, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 661, + 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, + 672, 673, 674, 675, 676, 677, 678, 656, 514, 520, + 515, 516, 517, 518, 519, 0, 521, 0, 0, 0, + 0, 0, 402, 0, 598, 599, 679, 387, 492, 610, + 338, 352, 355, 344, 364, 0, 365, 340, 341, 346, + 349, 350, 351, 356, 357, 361, 367, 251, 212, 394, + 403, 584, 315, 218, 219, 220, 530, 531, 532, 533, + 626, 627, 631, 207, 468, 469, 470, 471, 295, 621, + 312, 474, 473, 334, 335, 382, 454, 546, 548, 559, + 563, 565, 567, 573, 576, 547, 549, 560, 564, 566, + 568, 574, 577, 536, 538, 540, 542, 555, 554, 551, + 579, 580, 557, 562, 541, 553, 558, 571, 578, 575, + 535, 539, 543, 552, 570, 569, 550, 561, 572, 556, + 544, 537, 545, 0, 198, 223, 371, 0, 460, 291, + 657, 625, 490, 620, 208, 225, 0, 265, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 200, + 202, 211, 224, 234, 238, 245, 264, 279, 281, 288, + 301, 313, 321, 322, 325, 331, 383, 390, 391, 392, + 393, 413, 414, 415, 418, 421, 422, 425, 427, 428, + 431, 436, 440, 441, 442, 444, 446, 448, 461, 466, + 480, 481, 482, 483, 484, 487, 488, 494, 495, 496, + 497, 498, 506, 507, 522, 593, 595, 612, 632, 639, + 486, 388, 434, 458, 586, 304, 305, 449, 450, 317, + 318, 653, 654, 303, 607, 640, 604, 652, 634, 443, + 381, 0, 0, 384, 284, 308, 323, 0, 624, 508, + 229, 472, 293, 253, 0, 0, 213, 248, 232, 262, + 277, 280, 327, 395, 404, 433, 439, 299, 274, 246, + 465, 243, 491, 525, 526, 527, 529, 399, 269, 438, + 400, 0, 379, 582, 583, 319, 0, 0, 0, 534, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 420, 0, 0, 0, 0, 0, 0, 0, 273, + 0, 0, 0, 0, 369, 270, 0, 1936, 206, 511, + 0, 435, 0, 205, 0, 493, 255, 380, 377, 590, + 285, 276, 272, 252, 320, 389, 432, 524, 426, 0, + 373, 0, 0, 503, 405, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 326, 250, 328, 204, 417, 504, 289, + 0, 0, 0, 0, 0, 513, 731, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 240, 0, 0, 247, + 0, 0, 0, 354, 363, 362, 342, 343, 345, 347, + 353, 360, 366, 339, 348, 0, 0, 616, 0, 0, + 0, 268, 324, 275, 267, 587, 0, 0, 0, 0, + 0, 0, 603, 0, 0, 231, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 278, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 300, 0, 406, 260, 0, 459, 0, 0, + 0, 636, 0, 0, 0, 0, 0, 0, 0, 368, + 0, 333, 199, 227, 0, 0, 416, 467, 479, 0, + 0, 0, 256, 0, 477, 430, 611, 235, 287, 464, + 437, 475, 445, 290, 0, 0, 476, 375, 592, 455, + 608, 637, 638, 266, 410, 622, 528, 630, 655, 228, + 263, 424, 512, 614, 500, 401, 588, 589, 332, 499, + 298, 203, 372, 643, 226, 485, 374, 244, 233, 594, + 619, 302, 254, 292, 462, 650, 215, 523, 605, 241, + 489, 0, 0, 658, 249, 510, 617, 606, 217, 601, + 509, 397, 329, 330, 216, 0, 463, 271, 296, 0, + 0, 261, 419, 596, 597, 259, 659, 230, 629, 222, + 0, 628, 412, 591, 602, 398, 386, 221, 600, 396, + 385, 337, 358, 359, 283, 310, 452, 378, 453, 309, + 311, 408, 407, 409, 209, 615, 633, 0, 210, 0, + 505, 618, 660, 457, 214, 236, 237, 239, 0, 282, + 286, 294, 297, 306, 307, 316, 370, 423, 451, 447, + 456, 0, 585, 609, 623, 635, 641, 642, 644, 645, + 646, 647, 648, 651, 649, 411, 314, 501, 336, 376, + 0, 0, 429, 478, 242, 613, 502, 201, 0, 0, + 0, 0, 257, 258, 0, 581, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 661, 662, 663, 664, 665, + 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, + 676, 677, 678, 656, 514, 520, 515, 516, 517, 518, + 519, 0, 521, 0, 0, 0, 0, 0, 402, 0, + 598, 599, 679, 387, 492, 610, 338, 352, 355, 344, + 364, 0, 365, 340, 341, 346, 349, 350, 351, 356, + 357, 361, 367, 251, 212, 394, 403, 584, 315, 218, + 219, 220, 530, 531, 532, 533, 626, 627, 631, 207, + 468, 469, 470, 471, 295, 621, 312, 474, 473, 334, + 335, 382, 454, 546, 548, 559, 563, 565, 567, 573, + 576, 547, 549, 560, 564, 566, 568, 574, 577, 536, + 538, 540, 542, 555, 554, 551, 579, 580, 557, 562, + 541, 553, 558, 571, 578, 575, 535, 539, 543, 552, + 570, 569, 550, 561, 572, 556, 544, 537, 545, 0, + 198, 223, 371, 0, 460, 291, 657, 625, 490, 620, + 208, 225, 0, 265, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 200, 202, 211, 224, 234, + 238, 245, 264, 279, 281, 288, 301, 313, 321, 322, + 325, 331, 383, 390, 391, 392, 393, 413, 414, 415, + 418, 421, 422, 425, 427, 428, 431, 436, 440, 441, + 442, 444, 446, 448, 461, 466, 480, 481, 482, 483, + 484, 487, 488, 494, 495, 496, 497, 498, 506, 507, + 522, 593, 595, 612, 632, 639, 486, 388, 434, 458, + 586, 304, 305, 449, 450, 317, 318, 653, 654, 303, + 607, 640, 604, 652, 634, 443, 381, 0, 0, 384, + 284, 308, 323, 0, 624, 508, 229, 472, 293, 253, + 0, 0, 213, 248, 232, 262, 277, 280, 327, 395, + 404, 433, 439, 299, 274, 246, 465, 243, 491, 525, + 526, 527, 529, 399, 269, 438, 400, 0, 379, 582, + 583, 319, 0, 0, 0, 534, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 420, 0, 0, + 0, 0, 0, 0, 0, 273, 0, 0, 0, 0, + 369, 270, 0, 1932, 206, 511, 0, 435, 0, 205, + 0, 493, 255, 380, 377, 590, 285, 276, 272, 252, + 320, 389, 432, 524, 426, 0, 373, 0, 0, 503, + 405, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 326, + 250, 328, 204, 417, 504, 289, 0, 0, 0, 0, + 0, 513, 731, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 240, 0, 0, 247, 0, 0, 0, 354, + 363, 362, 342, 343, 345, 347, 353, 360, 366, 339, + 348, 0, 0, 616, 0, 0, 0, 268, 324, 275, + 267, 587, 0, 0, 0, 0, 0, 0, 603, 0, + 0, 231, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 278, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 300, 0, + 406, 260, 0, 459, 0, 0, 0, 636, 0, 0, + 0, 0, 0, 0, 0, 368, 0, 333, 199, 227, + 0, 0, 416, 467, 479, 0, 0, 0, 256, 0, + 477, 430, 611, 235, 287, 464, 437, 475, 445, 290, + 0, 0, 476, 375, 592, 455, 608, 637, 638, 266, + 410, 622, 528, 630, 655, 228, 263, 424, 512, 614, + 500, 401, 588, 589, 332, 499, 298, 203, 372, 643, + 226, 485, 374, 244, 233, 594, 619, 302, 254, 292, + 462, 650, 215, 523, 605, 241, 489, 0, 0, 658, + 249, 510, 617, 606, 217, 601, 509, 397, 329, 330, + 216, 0, 463, 271, 296, 0, 0, 261, 419, 596, + 597, 259, 659, 230, 629, 222, 0, 628, 412, 591, + 602, 398, 386, 221, 600, 396, 385, 337, 358, 359, + 283, 310, 452, 378, 453, 309, 311, 408, 407, 409, + 209, 615, 633, 0, 210, 0, 505, 618, 660, 457, + 214, 236, 237, 239, 0, 282, 286, 294, 297, 306, + 307, 316, 370, 423, 451, 447, 456, 0, 585, 609, + 623, 635, 641, 642, 644, 645, 646, 647, 648, 651, + 649, 411, 314, 501, 336, 376, 0, 0, 429, 478, + 242, 613, 502, 201, 0, 0, 0, 0, 257, 258, + 0, 581, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 661, 662, 663, 664, 665, 666, 667, 668, 669, + 670, 671, 672, 673, 674, 675, 676, 677, 678, 656, + 514, 520, 515, 516, 517, 518, 519, 0, 521, 0, + 0, 0, 0, 0, 402, 0, 598, 599, 679, 387, + 492, 610, 338, 352, 355, 344, 364, 0, 365, 340, + 341, 346, 349, 350, 351, 356, 357, 361, 367, 251, + 212, 394, 403, 584, 315, 218, 219, 220, 530, 531, + 532, 533, 626, 627, 631, 207, 468, 469, 470, 471, + 295, 621, 312, 474, 473, 334, 335, 382, 454, 546, + 548, 559, 563, 565, 567, 573, 576, 547, 549, 560, + 564, 566, 568, 574, 577, 536, 538, 540, 542, 555, + 554, 551, 579, 580, 557, 562, 541, 553, 558, 571, + 578, 575, 535, 539, 543, 552, 570, 569, 550, 561, + 572, 556, 544, 537, 545, 0, 198, 223, 371, 0, + 460, 291, 657, 625, 490, 620, 208, 225, 0, 265, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 200, 202, 211, 224, 234, 238, 245, 264, 279, + 281, 288, 301, 313, 321, 322, 325, 331, 383, 390, + 391, 392, 393, 413, 414, 415, 418, 421, 422, 425, + 427, 428, 431, 436, 440, 441, 442, 444, 446, 448, + 461, 466, 480, 481, 482, 483, 484, 487, 488, 494, + 495, 496, 497, 498, 506, 507, 522, 593, 595, 612, + 632, 639, 486, 388, 434, 458, 586, 304, 305, 449, + 450, 317, 318, 653, 654, 303, 607, 640, 604, 652, + 634, 443, 381, 0, 0, 384, 284, 308, 323, 0, + 624, 508, 229, 472, 293, 253, 0, 0, 213, 248, + 232, 262, 277, 280, 327, 395, 404, 433, 439, 299, + 274, 246, 465, 243, 491, 525, 526, 527, 529, 399, + 269, 438, 400, 0, 379, 582, 583, 319, 0, 0, + 0, 534, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 420, 0, 0, 0, 0, 0, 0, + 0, 273, 0, 0, 0, 0, 369, 270, 0, 1930, + 206, 511, 0, 435, 0, 205, 0, 493, 255, 380, + 377, 590, 285, 276, 272, 252, 320, 389, 432, 524, + 426, 0, 373, 0, 0, 503, 405, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 326, 250, 328, 204, 417, + 504, 289, 0, 0, 0, 0, 0, 513, 731, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 240, 0, + 0, 247, 0, 0, 0, 354, 363, 362, 342, 343, + 345, 347, 353, 360, 366, 339, 348, 0, 0, 616, + 0, 0, 0, 268, 324, 275, 267, 587, 0, 0, + 0, 0, 0, 0, 603, 0, 0, 231, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 278, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 300, 0, 406, 260, 0, 459, + 0, 0, 0, 636, 0, 0, 0, 0, 0, 0, + 0, 368, 0, 333, 199, 227, 0, 0, 416, 467, + 479, 0, 0, 0, 256, 0, 477, 430, 611, 235, + 287, 464, 437, 475, 445, 290, 0, 0, 476, 375, + 592, 455, 608, 637, 638, 266, 410, 622, 528, 630, + 655, 228, 263, 424, 512, 614, 500, 401, 588, 589, + 332, 499, 298, 203, 372, 643, 226, 485, 374, 244, + 233, 594, 619, 302, 254, 292, 462, 650, 215, 523, + 605, 241, 489, 0, 0, 658, 249, 510, 617, 606, + 217, 601, 509, 397, 329, 330, 216, 0, 463, 271, + 296, 0, 0, 261, 419, 596, 597, 259, 659, 230, + 629, 222, 0, 628, 412, 591, 602, 398, 386, 221, + 600, 396, 385, 337, 358, 359, 283, 310, 452, 378, + 453, 309, 311, 408, 407, 409, 209, 615, 633, 0, + 210, 0, 505, 618, 660, 457, 214, 236, 237, 239, + 0, 282, 286, 294, 297, 306, 307, 316, 370, 423, + 451, 447, 456, 0, 585, 609, 623, 635, 641, 642, + 644, 645, 646, 647, 648, 651, 649, 411, 314, 501, + 336, 376, 0, 0, 429, 478, 242, 613, 502, 201, + 0, 0, 0, 0, 257, 258, 0, 581, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 661, 662, 663, + 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, + 674, 675, 676, 677, 678, 656, 514, 520, 515, 516, + 517, 518, 519, 0, 521, 0, 0, 0, 0, 0, + 402, 0, 598, 599, 679, 387, 492, 610, 338, 352, + 355, 344, 364, 0, 365, 340, 341, 346, 349, 350, + 351, 356, 357, 361, 367, 251, 212, 394, 403, 584, + 315, 218, 219, 220, 530, 531, 532, 533, 626, 627, + 631, 207, 468, 469, 470, 471, 295, 621, 312, 474, + 473, 334, 335, 382, 454, 546, 548, 559, 563, 565, + 567, 573, 576, 547, 549, 560, 564, 566, 568, 574, + 577, 536, 538, 540, 542, 555, 554, 551, 579, 580, + 557, 562, 541, 553, 558, 571, 578, 575, 535, 539, + 543, 552, 570, 569, 550, 561, 572, 556, 544, 537, + 545, 0, 198, 223, 371, 0, 460, 291, 657, 625, + 490, 620, 208, 225, 0, 265, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 200, 202, 211, + 224, 234, 238, 245, 264, 279, 281, 288, 301, 313, + 321, 322, 325, 331, 383, 390, 391, 392, 393, 413, + 414, 415, 418, 421, 422, 425, 427, 428, 431, 436, + 440, 441, 442, 444, 446, 448, 461, 466, 480, 481, + 482, 483, 484, 487, 488, 494, 495, 496, 497, 498, + 506, 507, 522, 593, 595, 612, 632, 639, 486, 388, + 434, 458, 586, 304, 305, 449, 450, 317, 318, 653, + 654, 303, 607, 640, 604, 652, 634, 443, 381, 0, + 0, 384, 284, 308, 323, 0, 624, 508, 229, 472, + 293, 253, 0, 0, 213, 248, 232, 262, 277, 280, + 327, 395, 404, 433, 439, 299, 274, 246, 465, 243, + 491, 525, 526, 527, 529, 399, 269, 438, 400, 0, + 379, 582, 583, 319, 0, 0, 0, 534, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 420, + 0, 0, 0, 0, 0, 0, 0, 273, 0, 0, + 0, 0, 369, 270, 0, 1928, 206, 511, 0, 435, + 0, 205, 0, 493, 255, 380, 377, 590, 285, 276, + 272, 252, 320, 389, 432, 524, 426, 0, 373, 0, + 0, 503, 405, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 326, 250, 328, 204, 417, 504, 289, 0, 0, + 0, 0, 0, 513, 731, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 240, 0, 0, 247, 0, 0, + 0, 354, 363, 362, 342, 343, 345, 347, 353, 360, + 366, 339, 348, 0, 0, 616, 0, 0, 0, 268, + 324, 275, 267, 587, 0, 0, 0, 0, 0, 0, + 603, 0, 0, 231, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 278, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 300, 0, 406, 260, 0, 459, 0, 0, 0, 636, + 0, 0, 0, 0, 0, 0, 0, 368, 0, 333, + 199, 227, 0, 0, 416, 467, 479, 0, 0, 0, + 256, 0, 477, 430, 611, 235, 287, 464, 437, 475, + 445, 290, 0, 0, 476, 375, 592, 455, 608, 637, + 638, 266, 410, 622, 528, 630, 655, 228, 263, 424, + 512, 614, 500, 401, 588, 589, 332, 499, 298, 203, + 372, 643, 226, 485, 374, 244, 233, 594, 619, 302, + 254, 292, 462, 650, 215, 523, 605, 241, 489, 0, + 0, 658, 249, 510, 617, 606, 217, 601, 509, 397, + 329, 330, 216, 0, 463, 271, 296, 0, 0, 261, + 419, 596, 597, 259, 659, 230, 629, 222, 0, 628, + 412, 591, 602, 398, 386, 221, 600, 396, 385, 337, + 358, 359, 283, 310, 452, 378, 453, 309, 311, 408, + 407, 409, 209, 615, 633, 0, 210, 0, 505, 618, + 660, 457, 214, 236, 237, 239, 0, 282, 286, 294, + 297, 306, 307, 316, 370, 423, 451, 447, 456, 0, + 585, 609, 623, 635, 641, 642, 644, 645, 646, 647, + 648, 651, 649, 411, 314, 501, 336, 376, 0, 0, + 429, 478, 242, 613, 502, 201, 0, 0, 0, 0, + 257, 258, 0, 581, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 661, 662, 663, 664, 665, 666, 667, + 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, + 678, 656, 514, 520, 515, 516, 517, 518, 519, 0, + 521, 0, 0, 0, 0, 0, 402, 0, 598, 599, + 679, 387, 492, 610, 338, 352, 355, 344, 364, 0, + 365, 340, 341, 346, 349, 350, 351, 356, 357, 361, + 367, 251, 212, 394, 403, 584, 315, 218, 219, 220, + 530, 531, 532, 533, 626, 627, 631, 207, 468, 469, + 470, 471, 295, 621, 312, 474, 473, 334, 335, 382, + 454, 546, 548, 559, 563, 565, 567, 573, 576, 547, + 549, 560, 564, 566, 568, 574, 577, 536, 538, 540, + 542, 555, 554, 551, 579, 580, 557, 562, 541, 553, + 558, 571, 578, 575, 535, 539, 543, 552, 570, 569, + 550, 561, 572, 556, 544, 537, 545, 0, 198, 223, + 371, 0, 460, 291, 657, 625, 490, 620, 208, 225, + 0, 265, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 200, 202, 211, 224, 234, 238, 245, + 264, 279, 281, 288, 301, 313, 321, 322, 325, 331, + 383, 390, 391, 392, 393, 413, 414, 415, 418, 421, + 422, 425, 427, 428, 431, 436, 440, 441, 442, 444, + 446, 448, 461, 466, 480, 481, 482, 483, 484, 487, + 488, 494, 495, 496, 497, 498, 506, 507, 522, 593, + 595, 612, 632, 639, 486, 388, 434, 458, 586, 304, + 305, 449, 450, 317, 318, 653, 654, 303, 607, 640, + 604, 652, 634, 443, 381, 0, 0, 384, 284, 308, + 323, 0, 624, 508, 229, 472, 293, 253, 0, 0, + 213, 248, 232, 262, 277, 280, 327, 395, 404, 433, + 439, 299, 274, 246, 465, 243, 491, 525, 526, 527, + 529, 399, 269, 438, 400, 0, 379, 582, 583, 319, + 0, 0, 0, 534, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 420, 0, 0, 0, 0, + 0, 0, 0, 273, 0, 0, 0, 0, 369, 270, + 0, 0, 206, 511, 0, 435, 0, 205, 0, 493, + 255, 380, 377, 590, 285, 276, 272, 252, 320, 389, + 432, 524, 426, 0, 373, 0, 0, 503, 405, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 326, 250, 328, + 204, 417, 504, 289, 0, 1903, 0, 0, 0, 513, + 731, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 240, 0, 0, 247, 0, 0, 0, 354, 363, 362, + 342, 343, 345, 347, 353, 360, 366, 339, 348, 0, + 0, 616, 0, 0, 0, 268, 324, 275, 267, 587, + 0, 0, 0, 0, 0, 0, 603, 0, 0, 231, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 278, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 300, 0, 406, 260, + 0, 459, 0, 0, 0, 636, 0, 0, 0, 0, + 0, 0, 0, 368, 0, 333, 199, 227, 0, 0, + 416, 467, 479, 0, 0, 0, 256, 0, 477, 430, + 611, 235, 287, 464, 437, 475, 445, 290, 0, 0, + 476, 375, 592, 455, 608, 637, 638, 266, 410, 622, + 528, 630, 655, 228, 263, 424, 512, 614, 500, 401, + 588, 589, 332, 499, 298, 203, 372, 643, 226, 485, + 374, 244, 233, 594, 619, 302, 254, 292, 462, 650, + 215, 523, 605, 241, 489, 0, 0, 658, 249, 510, + 617, 606, 217, 601, 509, 397, 329, 330, 216, 0, + 463, 271, 296, 0, 0, 261, 419, 596, 597, 259, + 659, 230, 629, 222, 0, 628, 412, 591, 602, 398, + 386, 221, 600, 396, 385, 337, 358, 359, 283, 310, + 452, 378, 453, 309, 311, 408, 407, 409, 209, 615, + 633, 0, 210, 0, 505, 618, 660, 457, 214, 236, + 237, 239, 0, 282, 286, 294, 297, 306, 307, 316, + 370, 423, 451, 447, 456, 0, 585, 609, 623, 635, + 641, 642, 644, 645, 646, 647, 648, 651, 649, 411, + 314, 501, 336, 376, 0, 0, 429, 478, 242, 613, + 502, 201, 0, 0, 0, 0, 257, 258, 0, 581, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 661, + 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, + 672, 673, 674, 675, 676, 677, 678, 656, 514, 520, + 515, 516, 517, 518, 519, 0, 521, 0, 0, 0, + 0, 0, 402, 0, 598, 599, 679, 387, 492, 610, + 338, 352, 355, 344, 364, 0, 365, 340, 341, 346, + 349, 350, 351, 356, 357, 361, 367, 251, 212, 394, + 403, 584, 315, 218, 219, 220, 530, 531, 532, 533, + 626, 627, 631, 207, 468, 469, 470, 471, 295, 621, + 312, 474, 473, 334, 335, 382, 454, 546, 548, 559, + 563, 565, 567, 573, 576, 547, 549, 560, 564, 566, + 568, 574, 577, 536, 538, 540, 542, 555, 554, 551, + 579, 580, 557, 562, 541, 553, 558, 571, 578, 575, + 535, 539, 543, 552, 570, 569, 550, 561, 572, 556, + 544, 537, 545, 0, 198, 223, 371, 0, 460, 291, + 657, 625, 490, 620, 208, 225, 0, 265, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 200, + 202, 211, 224, 234, 238, 245, 264, 279, 281, 288, + 301, 313, 321, 322, 325, 331, 383, 390, 391, 392, + 393, 413, 414, 415, 418, 421, 422, 425, 427, 428, + 431, 436, 440, 441, 442, 444, 446, 448, 461, 466, + 480, 481, 482, 483, 484, 487, 488, 494, 495, 496, + 497, 498, 506, 507, 522, 593, 595, 612, 632, 639, + 486, 388, 434, 458, 586, 304, 305, 449, 450, 317, + 318, 653, 654, 303, 607, 640, 604, 652, 634, 443, + 381, 0, 0, 384, 284, 308, 323, 0, 624, 508, + 229, 472, 293, 253, 0, 0, 213, 248, 232, 262, + 277, 280, 327, 395, 404, 433, 439, 299, 274, 246, + 465, 243, 491, 525, 526, 527, 529, 399, 269, 438, + 400, 0, 379, 582, 583, 319, 0, 0, 0, 534, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 420, 0, 0, 0, 0, 0, 0, 1800, 273, + 0, 0, 0, 0, 369, 270, 0, 0, 206, 511, + 0, 435, 0, 205, 0, 493, 255, 380, 377, 590, + 285, 276, 272, 252, 320, 389, 432, 524, 426, 0, + 373, 0, 0, 503, 405, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 326, 250, 328, 204, 417, 504, 289, + 0, 0, 0, 0, 0, 513, 196, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 240, 0, 0, 247, + 0, 0, 0, 354, 363, 362, 342, 343, 345, 347, + 353, 360, 366, 339, 348, 0, 0, 616, 0, 0, + 0, 268, 324, 275, 267, 587, 0, 0, 0, 0, + 0, 0, 603, 0, 0, 231, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 278, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 300, 0, 406, 260, 0, 459, 0, 0, + 0, 636, 0, 0, 0, 0, 0, 0, 0, 368, + 0, 333, 199, 227, 0, 0, 416, 467, 479, 0, + 0, 0, 256, 0, 477, 430, 611, 235, 287, 464, + 437, 475, 445, 290, 0, 0, 476, 375, 592, 455, + 608, 637, 638, 266, 410, 622, 528, 630, 655, 228, + 263, 424, 512, 614, 500, 401, 588, 589, 332, 499, + 298, 203, 372, 643, 226, 485, 374, 244, 233, 594, + 619, 302, 254, 292, 462, 650, 215, 523, 605, 241, + 489, 0, 0, 658, 249, 510, 617, 606, 217, 601, + 509, 397, 329, 330, 216, 0, 463, 271, 296, 0, + 0, 261, 419, 596, 597, 259, 659, 230, 629, 222, + 0, 628, 412, 591, 602, 398, 386, 221, 600, 396, + 385, 337, 358, 359, 283, 310, 452, 378, 453, 309, + 311, 408, 407, 409, 209, 615, 633, 0, 210, 0, + 505, 618, 660, 457, 214, 236, 237, 239, 0, 282, + 286, 294, 297, 306, 307, 316, 370, 423, 451, 447, + 456, 0, 585, 609, 623, 635, 641, 642, 644, 645, + 646, 647, 648, 651, 649, 411, 314, 501, 336, 376, + 0, 0, 429, 478, 242, 613, 502, 201, 0, 0, + 0, 0, 257, 258, 0, 581, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 661, 662, 663, 664, 665, + 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, + 676, 677, 678, 656, 514, 520, 515, 516, 517, 518, + 519, 0, 521, 0, 0, 0, 0, 0, 402, 0, + 598, 599, 679, 387, 492, 610, 338, 352, 355, 344, + 364, 0, 365, 340, 341, 346, 349, 350, 351, 356, + 357, 361, 367, 251, 212, 394, 403, 584, 315, 218, + 219, 220, 530, 531, 532, 533, 626, 627, 631, 207, + 468, 469, 470, 471, 295, 621, 312, 474, 473, 334, + 335, 382, 454, 546, 548, 559, 563, 565, 567, 573, + 576, 547, 549, 560, 564, 566, 568, 574, 577, 536, + 538, 540, 542, 555, 554, 551, 579, 580, 557, 562, + 541, 553, 558, 571, 578, 575, 535, 539, 543, 552, + 570, 569, 550, 561, 572, 556, 544, 537, 545, 0, + 198, 223, 371, 0, 460, 291, 657, 625, 490, 620, + 208, 225, 0, 265, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 200, 202, 211, 224, 234, + 238, 245, 264, 279, 281, 288, 301, 313, 321, 322, + 325, 331, 383, 390, 391, 392, 393, 413, 414, 415, + 418, 421, 422, 425, 427, 428, 431, 436, 440, 441, + 442, 444, 446, 448, 461, 466, 480, 481, 482, 483, + 484, 487, 488, 494, 495, 496, 497, 498, 506, 507, + 522, 593, 595, 612, 632, 639, 486, 388, 434, 458, + 586, 304, 305, 449, 450, 317, 318, 653, 654, 303, + 607, 640, 604, 652, 634, 443, 381, 0, 0, 384, + 284, 308, 323, 0, 624, 508, 229, 472, 293, 253, + 0, 0, 213, 248, 232, 262, 277, 280, 327, 395, + 404, 433, 439, 299, 274, 246, 465, 243, 491, 525, + 526, 527, 529, 399, 269, 438, 400, 0, 379, 582, + 583, 319, 0, 0, 0, 534, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 420, 0, 0, + 0, 0, 0, 0, 0, 273, 0, 0, 0, 0, + 369, 270, 0, 0, 206, 511, 0, 435, 0, 205, + 0, 493, 255, 380, 377, 590, 285, 276, 272, 252, + 320, 389, 432, 524, 426, 0, 373, 0, 0, 503, + 405, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 326, + 250, 328, 204, 417, 504, 289, 0, 95, 0, 0, + 0, 513, 966, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 240, 0, 0, 247, 0, 0, 0, 354, + 363, 362, 342, 343, 345, 347, 353, 360, 366, 339, + 348, 0, 0, 616, 0, 0, 0, 268, 324, 275, + 267, 587, 0, 0, 0, 0, 0, 0, 603, 0, + 0, 231, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 278, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 300, 0, + 406, 260, 0, 459, 0, 0, 0, 636, 0, 0, + 0, 0, 0, 0, 0, 368, 0, 333, 199, 227, + 0, 0, 416, 467, 479, 0, 0, 0, 256, 0, + 477, 430, 611, 235, 287, 464, 437, 475, 445, 290, + 0, 0, 476, 375, 592, 455, 608, 637, 638, 266, + 410, 622, 528, 630, 655, 228, 263, 424, 512, 614, + 500, 401, 588, 589, 332, 499, 298, 203, 372, 643, + 226, 485, 374, 244, 233, 594, 619, 302, 254, 292, + 462, 650, 215, 523, 605, 241, 489, 0, 0, 658, + 249, 510, 617, 606, 217, 601, 509, 397, 329, 330, + 216, 0, 463, 271, 296, 0, 0, 261, 419, 596, + 597, 259, 659, 230, 629, 222, 0, 628, 412, 591, + 602, 398, 386, 221, 600, 396, 385, 337, 358, 359, + 283, 310, 452, 378, 453, 309, 311, 408, 407, 409, + 209, 615, 633, 0, 210, 0, 505, 618, 660, 457, + 214, 236, 237, 239, 0, 282, 286, 294, 297, 306, + 307, 316, 370, 423, 451, 447, 456, 0, 585, 609, + 623, 635, 641, 642, 644, 645, 646, 647, 648, 651, + 649, 411, 314, 501, 336, 376, 0, 0, 429, 478, + 242, 613, 502, 201, 0, 0, 0, 0, 257, 258, + 0, 581, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 661, 662, 663, 664, 665, 666, 667, 668, 669, + 670, 671, 672, 673, 674, 675, 676, 677, 678, 656, + 514, 520, 515, 516, 517, 518, 519, 0, 521, 0, + 0, 0, 0, 0, 402, 0, 598, 599, 679, 387, + 492, 610, 338, 352, 355, 344, 364, 0, 365, 340, + 341, 346, 349, 350, 351, 356, 357, 361, 367, 251, + 212, 394, 403, 584, 315, 218, 219, 220, 530, 531, + 532, 533, 626, 627, 631, 207, 468, 469, 470, 471, + 295, 621, 312, 474, 473, 334, 335, 382, 454, 546, + 548, 559, 563, 565, 567, 573, 576, 547, 549, 560, + 564, 566, 568, 574, 577, 536, 538, 540, 542, 555, + 554, 551, 579, 580, 557, 562, 541, 553, 558, 571, + 578, 575, 535, 539, 543, 552, 570, 569, 550, 561, + 572, 556, 544, 537, 545, 0, 198, 223, 371, 0, + 460, 291, 657, 625, 490, 620, 208, 225, 0, 265, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 200, 202, 211, 224, 234, 238, 245, 264, 279, + 281, 288, 301, 313, 321, 322, 325, 331, 383, 390, + 391, 392, 393, 413, 414, 415, 418, 421, 422, 425, + 427, 428, 431, 436, 440, 441, 442, 444, 446, 448, + 461, 466, 480, 481, 482, 483, 484, 487, 488, 494, + 495, 496, 497, 498, 506, 507, 522, 593, 595, 612, + 632, 639, 486, 388, 434, 458, 586, 304, 305, 449, + 450, 317, 318, 653, 654, 303, 607, 640, 604, 652, + 634, 443, 381, 0, 0, 384, 284, 308, 323, 0, + 624, 508, 229, 472, 293, 253, 0, 0, 213, 248, + 232, 262, 277, 280, 327, 395, 404, 433, 439, 299, + 274, 246, 465, 243, 491, 525, 526, 527, 529, 399, + 269, 438, 400, 0, 379, 582, 583, 319, 0, 0, + 0, 534, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 420, 0, 0, 0, 0, 0, 0, + 0, 273, 0, 0, 0, 0, 369, 270, 0, 0, + 206, 511, 0, 435, 0, 205, 0, 493, 255, 380, + 377, 590, 285, 276, 272, 252, 320, 389, 432, 524, + 426, 0, 373, 0, 0, 503, 405, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 326, 250, 328, 204, 417, + 504, 289, 0, 0, 0, 0, 0, 513, 196, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 240, 0, + 0, 247, 0, 0, 0, 354, 363, 362, 342, 343, + 345, 347, 353, 360, 366, 339, 348, 0, 0, 616, + 0, 0, 0, 268, 324, 275, 267, 587, 0, 0, + 0, 0, 0, 0, 603, 0, 0, 231, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 278, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1466, 0, 300, 0, 406, 260, 0, 459, + 0, 0, 0, 636, 0, 0, 0, 0, 0, 0, + 0, 368, 0, 333, 199, 227, 0, 0, 416, 467, + 479, 0, 0, 0, 256, 0, 477, 430, 611, 235, + 287, 464, 437, 475, 445, 290, 0, 0, 476, 375, + 592, 455, 608, 637, 638, 266, 410, 622, 528, 630, + 655, 228, 263, 424, 512, 614, 500, 401, 588, 589, + 332, 499, 298, 203, 372, 643, 226, 485, 374, 244, + 233, 594, 619, 302, 254, 292, 462, 650, 215, 523, + 605, 241, 489, 0, 0, 658, 249, 510, 617, 606, + 217, 601, 509, 397, 329, 330, 216, 0, 463, 271, + 296, 0, 0, 261, 419, 596, 597, 259, 659, 230, + 629, 222, 0, 628, 412, 591, 602, 398, 386, 221, + 600, 396, 385, 337, 358, 359, 283, 310, 452, 378, + 453, 309, 311, 408, 407, 409, 209, 615, 633, 0, + 210, 0, 505, 618, 660, 457, 214, 236, 237, 239, + 0, 282, 286, 294, 297, 306, 307, 316, 370, 423, + 451, 447, 456, 0, 585, 609, 623, 635, 641, 642, + 644, 645, 646, 647, 648, 651, 649, 411, 314, 501, + 336, 376, 0, 0, 429, 478, 242, 613, 502, 201, + 0, 0, 0, 0, 257, 258, 0, 581, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 661, 662, 663, + 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, + 674, 675, 676, 677, 678, 656, 514, 520, 515, 516, + 517, 518, 519, 0, 521, 0, 0, 0, 0, 0, + 402, 0, 598, 599, 679, 387, 492, 610, 338, 352, + 355, 344, 364, 0, 365, 340, 341, 346, 349, 350, + 351, 356, 357, 361, 367, 251, 212, 394, 403, 584, + 315, 218, 219, 220, 530, 531, 532, 533, 626, 627, + 631, 207, 468, 469, 470, 471, 295, 621, 312, 474, + 473, 334, 335, 382, 454, 546, 548, 559, 563, 565, + 567, 573, 576, 547, 549, 560, 564, 566, 568, 574, + 577, 536, 538, 540, 542, 555, 554, 551, 579, 580, + 557, 562, 541, 553, 558, 571, 578, 575, 535, 539, + 543, 552, 570, 569, 550, 561, 572, 556, 544, 537, + 545, 0, 198, 223, 371, 0, 460, 291, 657, 625, + 490, 620, 208, 225, 0, 265, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 200, 202, 211, + 224, 234, 238, 245, 264, 279, 281, 288, 301, 313, + 321, 322, 325, 331, 383, 390, 391, 392, 393, 413, + 414, 415, 418, 421, 422, 425, 427, 428, 431, 436, + 440, 441, 442, 444, 446, 448, 461, 466, 480, 481, + 482, 483, 484, 487, 488, 494, 495, 496, 497, 498, + 506, 507, 522, 593, 595, 612, 632, 639, 486, 388, + 434, 458, 586, 304, 305, 449, 450, 317, 318, 653, + 654, 1465, 607, 640, 604, 652, 634, 443, 381, 0, + 0, 384, 284, 308, 323, 0, 624, 508, 229, 472, + 293, 253, 0, 0, 213, 248, 232, 262, 277, 280, + 327, 395, 404, 433, 439, 299, 274, 246, 465, 243, + 491, 525, 526, 527, 529, 399, 269, 438, 400, 0, + 379, 582, 583, 319, 0, 0, 0, 534, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 420, + 0, 0, 0, 0, 0, 0, 0, 273, 0, 0, + 0, 0, 369, 270, 0, 0, 206, 511, 0, 435, + 0, 205, 0, 493, 255, 380, 377, 590, 285, 276, + 272, 252, 320, 389, 432, 524, 426, 0, 373, 0, + 0, 503, 405, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 326, 250, 328, 204, 417, 504, 289, 0, 0, + 0, 0, 0, 513, 196, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 240, 0, 0, 247, 0, 0, + 0, 354, 363, 362, 342, 343, 345, 347, 353, 360, + 366, 339, 348, 0, 0, 616, 0, 0, 0, 268, + 324, 275, 267, 587, 0, 0, 0, 0, 0, 0, + 603, 0, 0, 231, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 278, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 300, 0, 406, 260, 0, 459, 0, 0, 0, 636, + 0, 0, 0, 0, 0, 0, 0, 368, 0, 333, + 199, 227, 0, 0, 416, 467, 479, 0, 0, 0, + 256, 0, 477, 430, 611, 235, 287, 464, 437, 475, + 445, 290, 0, 0, 476, 375, 592, 455, 608, 637, + 638, 266, 410, 622, 528, 630, 655, 228, 263, 424, + 512, 614, 500, 401, 588, 589, 332, 499, 298, 203, + 372, 643, 226, 485, 374, 244, 233, 594, 619, 302, + 254, 292, 462, 650, 215, 523, 605, 241, 489, 0, + 0, 658, 249, 510, 617, 606, 217, 601, 509, 397, + 329, 330, 216, 0, 463, 271, 296, 0, 0, 261, + 419, 596, 597, 259, 659, 230, 629, 222, 0, 628, + 412, 591, 602, 398, 386, 221, 600, 396, 385, 337, + 358, 359, 283, 310, 452, 378, 453, 309, 311, 408, + 407, 409, 209, 615, 633, 0, 210, 0, 505, 618, + 660, 457, 214, 236, 237, 239, 0, 282, 286, 294, + 297, 306, 307, 316, 370, 423, 451, 447, 456, 0, + 585, 609, 623, 635, 641, 642, 644, 645, 646, 647, + 648, 651, 649, 411, 314, 501, 336, 376, 0, 0, + 429, 478, 242, 613, 502, 201, 0, 0, 0, 0, + 257, 258, 0, 581, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 661, 662, 663, 664, 665, 666, 667, + 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, + 678, 656, 514, 520, 515, 516, 517, 518, 519, 0, + 521, 0, 0, 0, 0, 0, 402, 0, 598, 599, + 679, 387, 492, 610, 338, 352, 355, 344, 364, 0, + 365, 340, 341, 346, 349, 350, 351, 356, 357, 361, + 367, 251, 212, 394, 403, 584, 315, 218, 219, 220, + 530, 531, 532, 533, 626, 627, 631, 207, 468, 469, + 470, 471, 295, 621, 312, 474, 473, 334, 335, 382, + 454, 546, 548, 559, 563, 565, 567, 573, 576, 547, + 549, 560, 564, 566, 568, 574, 577, 536, 538, 540, + 542, 555, 554, 551, 579, 580, 557, 562, 541, 553, + 558, 571, 578, 575, 535, 539, 543, 552, 570, 569, + 550, 561, 572, 556, 544, 537, 545, 0, 198, 223, + 371, 0, 460, 291, 657, 625, 490, 620, 208, 225, + 0, 265, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1058, + 0, 0, 0, 200, 202, 211, 224, 234, 238, 245, + 264, 279, 281, 288, 301, 313, 321, 322, 325, 331, + 383, 390, 391, 392, 393, 413, 414, 415, 418, 421, + 422, 425, 427, 428, 431, 436, 440, 441, 442, 444, + 446, 448, 461, 466, 480, 481, 482, 483, 484, 487, + 488, 494, 495, 496, 497, 498, 506, 507, 522, 593, + 595, 612, 632, 639, 486, 388, 434, 458, 586, 304, + 305, 449, 450, 317, 318, 653, 654, 303, 607, 640, + 604, 652, 634, 443, 381, 0, 0, 384, 284, 308, + 323, 0, 624, 508, 229, 472, 293, 253, 0, 0, + 213, 248, 232, 262, 277, 280, 327, 395, 404, 433, + 439, 299, 274, 246, 465, 243, 491, 525, 526, 527, + 529, 399, 269, 438, 400, 0, 379, 582, 583, 319, + 0, 0, 0, 534, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 420, 0, 0, 0, 0, + 0, 0, 0, 273, 0, 0, 0, 0, 369, 270, + 0, 0, 206, 511, 0, 435, 0, 205, 0, 493, + 255, 380, 377, 590, 285, 276, 272, 252, 320, 389, + 432, 524, 426, 0, 373, 0, 0, 503, 405, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 326, 250, 328, + 204, 417, 504, 289, 0, 0, 0, 0, 0, 513, + 196, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 240, 0, 0, 247, 0, 0, 0, 354, 363, 362, + 342, 343, 345, 347, 353, 360, 366, 339, 348, 0, + 0, 616, 0, 0, 0, 268, 324, 275, 267, 587, + 0, 0, 0, 0, 0, 0, 603, 0, 0, 231, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 278, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 300, 0, 406, 260, + 0, 459, 0, 682, 0, 636, 0, 0, 0, 0, + 0, 0, 0, 368, 0, 333, 199, 227, 0, 0, + 416, 467, 479, 0, 0, 0, 256, 0, 477, 430, + 611, 235, 287, 464, 437, 475, 445, 290, 0, 0, + 476, 375, 592, 455, 608, 637, 638, 266, 410, 622, + 528, 630, 655, 228, 263, 424, 512, 614, 500, 401, + 588, 589, 332, 499, 298, 203, 372, 643, 226, 485, + 374, 244, 233, 594, 619, 302, 254, 292, 462, 650, + 215, 523, 605, 241, 489, 0, 0, 658, 249, 510, + 617, 606, 217, 601, 509, 397, 329, 330, 216, 0, + 463, 271, 296, 0, 0, 261, 419, 596, 597, 259, + 659, 230, 629, 222, 0, 628, 412, 591, 602, 398, + 386, 221, 600, 396, 385, 337, 358, 359, 283, 310, + 452, 378, 453, 309, 311, 408, 407, 409, 209, 615, + 633, 0, 210, 0, 505, 618, 660, 457, 214, 236, + 237, 239, 0, 282, 286, 294, 297, 306, 307, 316, + 370, 423, 451, 447, 456, 0, 585, 609, 623, 635, + 641, 642, 644, 645, 646, 647, 648, 651, 649, 411, + 314, 501, 336, 376, 0, 0, 429, 478, 242, 613, + 502, 201, 0, 0, 0, 0, 257, 258, 0, 581, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 661, + 662, 663, 664, 665, 666, 667, 668, 669, 670, 671, + 672, 673, 674, 675, 676, 677, 678, 656, 514, 520, + 515, 516, 517, 518, 519, 0, 521, 0, 0, 0, + 0, 0, 402, 0, 598, 599, 679, 387, 492, 610, + 338, 352, 355, 344, 364, 0, 365, 340, 341, 346, + 349, 350, 351, 356, 357, 361, 367, 251, 212, 394, + 403, 584, 315, 218, 219, 220, 530, 531, 532, 533, + 626, 627, 631, 207, 468, 469, 470, 471, 295, 621, + 312, 474, 473, 334, 335, 382, 454, 546, 548, 559, + 563, 565, 567, 573, 576, 547, 549, 560, 564, 566, + 568, 574, 577, 536, 538, 540, 542, 555, 554, 551, + 579, 580, 557, 562, 541, 553, 558, 571, 578, 575, + 535, 539, 543, 552, 570, 569, 550, 561, 572, 556, + 544, 537, 545, 0, 198, 223, 371, 0, 460, 291, + 657, 625, 490, 620, 208, 225, 0, 265, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 200, + 202, 211, 224, 234, 238, 245, 264, 279, 281, 288, + 301, 313, 321, 322, 325, 331, 383, 390, 391, 392, + 393, 413, 414, 415, 418, 421, 422, 425, 427, 428, + 431, 436, 440, 441, 442, 444, 446, 448, 461, 466, + 480, 481, 482, 483, 484, 487, 488, 494, 495, 496, + 497, 498, 506, 507, 522, 593, 595, 612, 632, 639, + 486, 388, 434, 458, 586, 304, 305, 449, 450, 317, + 318, 653, 654, 303, 607, 640, 604, 652, 634, 443, + 381, 0, 0, 384, 284, 308, 323, 0, 624, 508, + 229, 472, 293, 253, 0, 0, 213, 248, 232, 262, + 277, 280, 327, 395, 404, 433, 439, 299, 274, 246, + 465, 243, 491, 525, 526, 527, 529, 399, 269, 438, + 400, 0, 379, 582, 583, 319, 0, 0, 0, 534, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 420, 0, 0, 0, 0, 0, 0, 0, 273, + 0, 0, 0, 0, 369, 270, 0, 0, 206, 511, + 0, 435, 0, 205, 0, 493, 255, 380, 377, 590, + 285, 276, 272, 252, 320, 389, 432, 524, 426, 0, + 373, 0, 0, 503, 405, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 326, 250, 328, 204, 417, 504, 289, + 0, 0, 0, 0, 0, 513, 731, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 240, 0, 0, 247, + 0, 0, 0, 354, 363, 362, 342, 343, 345, 347, + 353, 360, 366, 339, 348, 0, 0, 616, 0, 0, + 0, 268, 324, 275, 267, 587, 0, 0, 0, 0, + 0, 0, 603, 0, 0, 231, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 278, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 300, 0, 406, 260, 0, 459, 0, 0, + 0, 636, 0, 0, 0, 0, 0, 0, 0, 368, + 0, 333, 199, 227, 0, 0, 416, 467, 479, 0, + 0, 0, 256, 0, 477, 430, 611, 235, 287, 464, + 437, 475, 445, 290, 0, 0, 476, 375, 592, 455, + 608, 637, 638, 266, 410, 622, 528, 630, 655, 228, + 263, 424, 512, 614, 500, 401, 588, 589, 332, 499, + 298, 203, 372, 643, 226, 485, 374, 244, 233, 594, + 619, 302, 254, 292, 462, 650, 215, 523, 605, 241, + 489, 0, 0, 658, 249, 510, 617, 606, 217, 601, + 509, 397, 329, 330, 216, 0, 463, 271, 296, 0, + 0, 261, 419, 596, 597, 259, 659, 230, 629, 222, + 0, 628, 412, 591, 602, 398, 386, 221, 600, 396, + 385, 337, 358, 359, 283, 310, 452, 378, 453, 309, + 311, 408, 407, 409, 209, 615, 633, 0, 210, 0, + 505, 618, 660, 457, 214, 236, 237, 239, 0, 282, + 286, 294, 297, 306, 307, 316, 370, 423, 451, 447, + 456, 0, 585, 609, 623, 635, 641, 642, 644, 645, + 646, 647, 648, 651, 649, 411, 314, 501, 336, 376, + 0, 0, 429, 478, 242, 613, 502, 201, 0, 0, + 0, 0, 257, 258, 0, 581, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 661, 662, 663, 664, 665, + 666, 667, 668, 669, 670, 671, 672, 673, 674, 675, + 676, 677, 678, 656, 514, 520, 515, 516, 517, 518, + 519, 0, 521, 0, 0, 0, 0, 0, 402, 0, + 598, 599, 679, 387, 492, 610, 338, 352, 355, 344, + 364, 0, 365, 340, 341, 346, 349, 350, 351, 356, + 357, 361, 367, 251, 212, 394, 403, 584, 315, 218, + 219, 220, 530, 531, 532, 533, 626, 627, 631, 207, + 468, 469, 470, 471, 295, 621, 312, 474, 473, 334, + 335, 382, 454, 546, 548, 559, 563, 565, 567, 573, + 576, 547, 549, 560, 564, 566, 568, 574, 577, 536, + 538, 540, 542, 555, 554, 551, 579, 580, 557, 562, + 541, 553, 558, 571, 578, 575, 535, 539, 543, 552, + 570, 569, 550, 561, 572, 556, 544, 537, 545, 0, + 198, 223, 371, 0, 460, 291, 657, 625, 490, 620, + 208, 225, 0, 265, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 200, 202, 211, 224, 234, + 238, 245, 264, 279, 281, 288, 301, 313, 321, 322, + 325, 331, 383, 390, 391, 392, 393, 4159, 414, 415, + 418, 421, 422, 425, 427, 428, 431, 436, 440, 441, + 442, 444, 446, 448, 461, 466, 480, 481, 482, 483, + 484, 487, 488, 494, 495, 496, 497, 498, 506, 507, + 522, 593, 595, 612, 632, 639, 486, 388, 434, 458, + 586, 304, 305, 449, 450, 317, 318, 653, 654, 303, + 607, 640, 604, 652, 634, 443, 381, 0, 0, 384, + 284, 308, 323, 0, 624, 508, 229, 472, 293, 253, + 0, 0, 213, 248, 232, 262, 277, 280, 327, 395, + 404, 433, 439, 299, 274, 246, 465, 243, 491, 525, + 526, 527, 529, 399, 269, 438, 400, 0, 379, 582, + 583, 319, 0, 0, 0, 534, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 420, 0, 0, + 0, 0, 0, 0, 0, 273, 0, 0, 0, 0, + 369, 270, 0, 0, 206, 511, 0, 435, 0, 205, + 0, 493, 255, 380, 377, 590, 285, 276, 272, 252, + 320, 389, 432, 524, 426, 0, 373, 0, 0, 503, + 405, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 326, + 250, 328, 204, 417, 504, 289, 0, 0, 0, 0, + 0, 513, 731, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 240, 0, 0, 247, 0, 0, 0, 354, + 363, 362, 342, 343, 345, 347, 353, 360, 366, 339, + 348, 0, 0, 616, 0, 0, 0, 268, 324, 275, + 267, 587, 0, 0, 0, 0, 0, 0, 603, 0, + 0, 231, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 278, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 300, 0, + 406, 260, 0, 459, 0, 0, 0, 636, 0, 0, + 0, 0, 0, 0, 0, 368, 0, 333, 199, 227, + 0, 0, 416, 467, 479, 0, 0, 0, 256, 0, + 477, 430, 611, 235, 287, 464, 437, 475, 445, 290, + 0, 0, 476, 375, 592, 455, 608, 637, 638, 266, + 410, 622, 528, 630, 655, 228, 263, 424, 512, 614, + 500, 401, 588, 589, 332, 499, 298, 203, 372, 643, + 226, 485, 374, 244, 233, 594, 619, 302, 254, 292, + 462, 650, 215, 523, 605, 241, 489, 0, 0, 658, + 249, 510, 617, 606, 217, 601, 509, 397, 329, 330, + 216, 0, 463, 271, 296, 0, 0, 261, 419, 596, + 597, 259, 659, 230, 629, 222, 0, 628, 412, 591, + 602, 398, 386, 221, 600, 396, 385, 337, 358, 359, + 283, 310, 452, 378, 453, 309, 311, 408, 407, 409, + 209, 615, 633, 0, 210, 0, 505, 618, 660, 457, + 214, 236, 237, 239, 0, 282, 286, 294, 297, 306, + 307, 316, 370, 423, 451, 447, 456, 0, 585, 609, + 623, 635, 641, 642, 644, 645, 646, 647, 648, 651, + 649, 411, 314, 501, 336, 376, 0, 0, 429, 478, + 242, 613, 502, 201, 0, 0, 0, 0, 257, 258, + 0, 581, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 661, 662, 663, 664, 665, 666, 667, 668, 669, + 670, 671, 672, 673, 674, 675, 676, 677, 678, 656, + 514, 520, 515, 516, 517, 518, 519, 0, 521, 0, + 0, 0, 0, 0, 402, 0, 598, 599, 679, 387, + 492, 610, 338, 352, 355, 344, 364, 0, 365, 340, + 341, 346, 349, 350, 351, 356, 357, 361, 367, 251, + 212, 394, 403, 584, 315, 218, 219, 220, 530, 531, + 532, 533, 626, 627, 631, 207, 468, 469, 470, 471, + 295, 621, 312, 474, 473, 334, 335, 382, 454, 546, + 548, 559, 563, 565, 567, 573, 576, 547, 549, 560, + 564, 566, 568, 574, 577, 536, 538, 540, 542, 555, + 554, 551, 579, 580, 557, 562, 541, 553, 558, 571, + 578, 575, 535, 539, 543, 552, 570, 569, 550, 561, + 572, 556, 544, 537, 545, 0, 198, 223, 371, 0, + 460, 291, 657, 625, 490, 620, 208, 225, 0, 265, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 200, 202, 211, 224, 234, 238, 245, 264, 279, + 281, 288, 301, 313, 321, 322, 325, 331, 383, 390, + 391, 392, 393, 413, 414, 415, 418, 421, 422, 425, + 427, 428, 431, 436, 440, 441, 442, 444, 446, 448, + 461, 466, 480, 481, 482, 483, 484, 487, 488, 494, + 495, 496, 497, 498, 506, 507, 522, 593, 595, 612, + 632, 639, 486, 388, 434, 458, 586, 304, 305, 449, + 450, 317, 318, 653, 654, 303, 607, 640, 604, 652, + 634, 443, 381, 0, 0, 384, 284, 308, 323, 0, + 624, 508, 229, 472, 293, 253, 0, 0, 213, 248, + 232, 262, 277, 280, 327, 395, 404, 433, 439, 299, + 274, 246, 465, 243, 491, 525, 526, 527, 529, 399, + 269, 438, 400, 0, 379, 582, 583, 319, 0, 0, + 0, 534, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 420, 0, 0, 0, 0, 0, 0, + 0, 273, 0, 0, 0, 0, 369, 270, 0, 0, + 206, 511, 0, 435, 0, 205, 0, 493, 255, 380, + 377, 590, 285, 276, 272, 252, 320, 389, 432, 524, + 426, 0, 373, 0, 0, 503, 405, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 326, 250, 328, 204, 417, + 504, 289, 0, 0, 0, 0, 0, 513, 966, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 240, 0, + 0, 247, 0, 0, 0, 354, 363, 362, 342, 343, + 345, 347, 353, 360, 366, 339, 348, 0, 0, 616, + 0, 0, 0, 268, 324, 275, 267, 587, 0, 0, + 0, 0, 0, 0, 603, 0, 0, 231, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 278, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 300, 0, 406, 260, 0, 459, + 0, 0, 0, 636, 0, 0, 0, 0, 0, 0, + 0, 368, 0, 333, 199, 227, 0, 0, 416, 467, + 479, 0, 0, 0, 256, 0, 477, 430, 611, 235, + 287, 464, 437, 475, 445, 290, 0, 0, 476, 375, + 592, 455, 608, 637, 638, 266, 410, 622, 528, 630, + 655, 228, 263, 424, 512, 614, 500, 401, 588, 589, + 332, 499, 298, 203, 372, 643, 226, 485, 374, 244, + 233, 594, 619, 302, 254, 292, 462, 650, 215, 523, + 605, 241, 489, 0, 0, 658, 249, 510, 617, 606, + 217, 601, 509, 397, 329, 330, 216, 0, 463, 271, + 296, 0, 0, 261, 419, 596, 597, 259, 659, 230, + 629, 222, 0, 628, 412, 591, 602, 398, 386, 221, + 600, 396, 385, 337, 358, 359, 283, 310, 452, 378, + 453, 309, 311, 408, 407, 409, 209, 615, 633, 0, + 210, 0, 505, 618, 660, 457, 214, 236, 237, 239, + 0, 282, 286, 294, 297, 306, 307, 316, 370, 423, + 451, 447, 456, 0, 585, 609, 623, 635, 641, 642, + 644, 645, 646, 647, 648, 651, 649, 411, 314, 501, + 336, 376, 0, 0, 429, 478, 242, 613, 502, 201, + 0, 0, 0, 0, 257, 258, 0, 581, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 661, 662, 663, + 664, 665, 666, 667, 668, 669, 670, 671, 672, 673, + 674, 675, 676, 677, 678, 656, 514, 520, 515, 516, + 517, 518, 519, 0, 521, 0, 0, 0, 0, 0, + 402, 0, 598, 599, 679, 387, 492, 610, 338, 352, + 355, 344, 364, 0, 365, 340, 341, 346, 349, 350, + 351, 356, 357, 361, 367, 251, 212, 394, 403, 584, + 315, 218, 219, 220, 530, 531, 532, 533, 626, 627, + 631, 207, 468, 469, 470, 471, 295, 621, 312, 474, + 473, 334, 335, 382, 454, 546, 548, 559, 563, 565, + 567, 573, 576, 547, 549, 560, 564, 566, 568, 574, + 577, 536, 538, 540, 542, 555, 554, 551, 579, 580, + 557, 562, 541, 553, 558, 571, 578, 575, 535, 539, + 543, 552, 570, 569, 550, 561, 572, 556, 544, 537, + 545, 0, 198, 223, 371, 0, 460, 291, 657, 625, + 490, 620, 208, 225, 0, 265, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 200, 202, 211, + 224, 234, 238, 245, 264, 279, 281, 288, 301, 313, + 321, 322, 325, 331, 383, 390, 391, 392, 393, 413, + 414, 415, 418, 421, 422, 425, 427, 428, 431, 436, + 440, 441, 442, 444, 446, 448, 461, 466, 480, 481, + 482, 483, 484, 487, 488, 494, 495, 496, 497, 498, + 506, 507, 522, 593, 595, 612, 632, 639, 486, 388, + 434, 458, 586, 304, 305, 449, 450, 317, 318, 653, + 654, 303, 607, 640, 604, 652, 634, 443, 381, 0, + 0, 384, 284, 308, 323, 0, 624, 508, 229, 472, + 293, 253, 0, 0, 213, 248, 232, 262, 277, 280, + 327, 395, 404, 433, 439, 299, 274, 246, 465, 243, + 491, 525, 526, 527, 529, 399, 269, 438, 400, 0, + 379, 582, 583, 319, 0, 0, 0, 534, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 420, + 0, 0, 0, 0, 0, 0, 0, 273, 0, 0, + 0, 0, 369, 270, 0, 0, 206, 511, 0, 435, + 0, 205, 0, 493, 255, 380, 377, 590, 285, 276, + 272, 252, 320, 389, 432, 524, 426, 0, 373, 0, + 0, 503, 405, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 326, 250, 328, 204, 417, 504, 289, 0, 0, + 0, 0, 0, 513, 196, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 240, 0, 0, 247, 0, 0, + 0, 354, 363, 362, 342, 343, 345, 347, 353, 360, + 366, 339, 348, 0, 0, 616, 0, 0, 0, 268, + 324, 275, 267, 587, 0, 0, 0, 0, 0, 0, + 603, 0, 0, 231, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 278, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 300, 0, 406, 260, 0, 459, 0, 0, 0, 636, + 0, 0, 0, 0, 0, 0, 0, 368, 0, 333, + 199, 227, 0, 0, 416, 467, 479, 0, 0, 0, + 256, 0, 477, 430, 611, 235, 287, 464, 437, 475, + 445, 290, 0, 0, 476, 375, 592, 455, 608, 637, + 638, 266, 410, 622, 528, 630, 655, 228, 263, 424, + 512, 614, 500, 401, 588, 589, 332, 499, 298, 203, + 372, 643, 226, 485, 374, 244, 233, 594, 619, 302, + 254, 292, 462, 650, 215, 523, 605, 241, 489, 0, + 0, 658, 249, 510, 617, 606, 217, 601, 509, 397, + 329, 330, 216, 0, 463, 271, 296, 0, 0, 261, + 419, 596, 597, 259, 659, 230, 629, 222, 0, 628, + 412, 591, 602, 398, 386, 221, 600, 396, 385, 337, + 358, 359, 283, 310, 452, 378, 453, 309, 311, 408, + 407, 409, 209, 615, 633, 0, 210, 0, 505, 618, + 660, 457, 214, 236, 237, 239, 0, 282, 286, 294, + 297, 306, 307, 316, 370, 423, 451, 447, 456, 0, + 585, 609, 623, 635, 641, 642, 644, 645, 646, 647, + 648, 651, 649, 411, 314, 501, 336, 376, 0, 0, + 429, 478, 242, 613, 502, 201, 0, 0, 0, 0, + 257, 258, 0, 581, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 661, 662, 663, 664, 665, 666, 667, + 668, 669, 670, 671, 672, 673, 674, 675, 676, 677, + 678, 656, 514, 520, 515, 516, 517, 518, 519, 0, + 521, 0, 0, 0, 0, 0, 402, 0, 598, 599, + 679, 387, 492, 610, 338, 352, 355, 344, 364, 0, + 365, 340, 341, 346, 349, 350, 351, 356, 357, 361, + 367, 251, 212, 394, 403, 584, 315, 218, 219, 220, + 530, 531, 532, 533, 626, 627, 631, 207, 468, 469, + 470, 471, 295, 621, 312, 474, 473, 334, 335, 382, + 454, 546, 548, 559, 563, 565, 567, 573, 576, 547, + 549, 560, 564, 566, 568, 574, 577, 536, 538, 540, + 542, 555, 554, 551, 579, 580, 557, 562, 541, 553, + 558, 571, 578, 575, 535, 539, 543, 552, 570, 569, + 550, 561, 572, 556, 544, 537, 545, 0, 198, 223, + 371, 0, 460, 291, 657, 625, 490, 620, 208, 225, + 0, 265, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 200, 202, 211, 224, 234, 238, 245, + 264, 279, 281, 288, 301, 313, 321, 322, 325, 331, + 383, 390, 391, 392, 393, 413, 414, 415, 418, 421, + 422, 425, 427, 428, 431, 436, 440, 441, 442, 444, + 446, 448, 461, 466, 480, 481, 482, 483, 484, 487, + 488, 494, 495, 496, 497, 498, 506, 507, 522, 593, + 595, 612, 632, 639, 486, 388, 434, 458, 586, 304, + 305, 449, 450, 317, 318, 653, 654, 303, 607, 640, + 604, 652, 634, 443, 381, 0, 0, 384, 284, 308, + 323, 0, 624, 508, 229, 472, 293, 253, 0, 0, + 213, 248, 232, 262, 277, 280, 327, 395, 404, 433, + 439, 299, 274, 246, 465, 243, 491, 525, 526, 527, + 529, 399, 269, 438, 0, 0, 379, 582, 583, 319, } var yyPact = [...]int{ - -1000, -1000, 5272, -1000, -551, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, 4559, -1000, -555, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, 2469, 2576, -1000, -1000, -1000, -1000, 2667, -1000, 1033, - 2110, -1000, 2476, 5131, -1000, 55821, 518, -1000, 52837, -455, - 883, 238, 36425, -1000, 185, -1000, 159, 54329, 181, -1000, - -1000, -1000, -1000, -455, 22251, 2336, 37, 35, 55821, -1000, - -1000, -1000, -1000, -370, 2640, 2031, -1000, 400, -1000, -1000, - -1000, -1000, -1000, -1000, 52091, -1000, -1000, -1000, 1120, -1000, - -1000, 2480, 2501, 2332, 946, 2398, -1000, 2565, 2031, -1000, - 22251, 2620, 2438, 21505, 21505, 470, -1000, -1000, 275, -1000, - -1000, 31203, 55821, 39409, 909, -1000, 2476, -1000, -1000, -1000, - 193, -1000, 324, 1990, -1000, 1989, -1000, 913, 964, 387, - 469, 467, 386, 385, 383, 382, 367, 365, 363, 355, - 394, -1000, 962, 962, -241, -242, 1369, 796, 442, 442, - 1140, 483, 2444, 2443, -1000, -1000, 962, 962, 962, 360, - 962, 962, 962, 962, 301, 293, 962, 962, 962, 962, - 962, 962, 962, 962, 962, 962, 962, 962, 962, 962, - 962, 962, 962, 884, 2476, 276, -1000, -1000, -1000, -1000, + -1000, 2542, 2773, -1000, -1000, -1000, -1000, 2685, -1000, 999, + 2121, -1000, 2449, 4217, -1000, 55454, 473, -1000, 52470, -428, + 862, 234, 36058, -1000, 199, -1000, 189, 53962, 200, -1000, + -1000, -1000, -1000, -428, 21884, 2358, 54, 52, 55454, -1000, + -1000, -1000, -1000, -362, 2637, 2002, -1000, 386, -1000, -1000, + -1000, -1000, -1000, -1000, 51724, -1000, -1000, -1000, 1103, -1000, + -1000, 2458, 2456, 2291, 889, 2354, -1000, 2532, 2002, -1000, + 21884, 2621, 2398, 21138, 21138, 446, -1000, -1000, 336, -1000, + -1000, 30836, 55454, 39042, 913, -1000, 2449, -1000, -1000, -1000, + 193, -1000, 340, 2041, -1000, 2040, -1000, 864, 1083, 377, + 863, 487, 374, 363, 361, 351, 346, 344, 343, 342, + 392, -1000, 919, 919, -214, -221, 1470, 431, 434, 434, + 1044, 456, 2436, 2428, -1000, -1000, 919, 919, 919, 365, + 919, 919, 919, 919, 315, 310, 919, 919, 919, 919, + 919, 919, 919, 919, 919, 919, 919, 919, 919, 919, + 919, 919, 919, 884, 2449, 274, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, @@ -7436,67 +7399,67 @@ var yyPact = [...]int{ -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - 55821, 252, 55821, -1000, 835, 517, -1000, -1000, -459, 1107, - 1107, 96, 1107, 1107, 1107, 1107, 172, 1028, 32, -1000, - 160, 294, 167, 277, 1099, 299, -1000, -1000, 265, 1099, - 1868, -1000, 951, 273, 158, -1000, 1107, 1107, -1000, 14767, - 206, 14767, 14767, 269, 147, -1000, 2457, -1000, -1000, -1000, - -1000, -1000, 1365, -1000, -1000, -1000, -1000, -39, 482, -1000, - -1000, -1000, -1000, 54329, 51345, 291, -1000, -1000, 33, 1892, - 1527, 22251, 1574, 944, -1000, -1000, 1428, 906, -1000, -1000, - -1000, -1000, -1000, 816, -1000, 24489, 24489, 24489, 24489, -1000, - -1000, 1998, 50599, 1998, 1998, 24489, 1998, 24489, 1998, 1998, - 1998, 1998, 22251, 1998, 1998, 1998, 1998, -1000, 1998, 1998, - 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, - 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, - 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, - 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, - 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, - 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, - 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, - 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, - 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, - 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, - 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, - 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, - 1998, 1998, 1998, 1998, 1998, 1998, 1998, -1000, -1000, -1000, - -1000, 1998, 834, 1998, 1998, 1998, 1998, 1998, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, 1998, 1998, 1998, 1998, 1998, - 1998, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, - 1998, 1998, 1998, 1998, -1000, -1000, -1000, 1684, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, 1652, 1611, 1609, 1588, -1000, - 19267, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + 55454, 224, 55454, -1000, 813, 472, -1000, -1000, -453, 1084, + 1084, 74, 1084, 1084, 1084, 1084, 201, 1031, 51, -1000, + 198, 271, 196, 268, 1069, 210, -1000, -1000, 254, 1069, + 1875, -1000, 894, 264, 203, -1000, 1084, 1084, -1000, 14400, + 229, 14400, 14400, 259, 180, -1000, 2437, -1000, -1000, -1000, + -1000, -1000, 1319, -1000, -1000, -1000, -1000, -32, 455, -1000, + -1000, -1000, -1000, 53962, 50978, 278, -1000, -1000, 28, 1919, + 1722, 21884, 1323, 887, -1000, -1000, 1343, 870, -1000, -1000, + -1000, -1000, -1000, 512, -1000, 24122, 24122, 24122, 24122, -1000, + -1000, 2003, 50232, 2003, 2003, 24122, 2003, 24122, 2003, 2003, + 2003, 2003, 21884, 2003, 2003, 2003, 2003, -1000, 2003, 2003, + 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, + 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, + 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, + 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, + 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, + 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, + 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, + 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, + 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, + 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, + 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, + 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, + 2003, 2003, 2003, 2003, 2003, 2003, 2003, -1000, -1000, -1000, + -1000, 2003, 809, 2003, 2003, 2003, 2003, 2003, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, 2003, 2003, 2003, 2003, 2003, + 2003, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, + 2003, 2003, 2003, 2003, -1000, -1000, -1000, 1672, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, 1448, 1542, 1525, 1512, -1000, + 18900, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, 1998, -1000, -1000, -1000, 55821, -1000, 1998, 217, 54329, - 54329, 331, 1347, -1000, -1000, 2565, 2031, -1000, 2640, 2644, - 400, -1000, 3901, 1759, 1695, 1378, 2031, 1967, 55821, -1000, - 2015, 211, -1000, -1000, -1000, -309, -330, 2272, 1486, 1864, - -1000, -1000, -1000, -1000, 2347, 22251, -1000, -1000, 2662, -1000, - 28965, 833, 2658, 49853, -1000, 470, 470, 1986, 423, 9, - -1000, -1000, -1000, -1000, 982, 35679, -1000, -1000, -1000, -1000, - -1000, 1878, 55821, -1000, -1000, 5540, 54329, -1000, 2109, -1000, - 1862, -1000, 2072, 22251, 2125, 516, 54329, 513, 509, 499, - 463, -71, -1000, -1000, -1000, -1000, -1000, -1000, 962, 962, - 962, -1000, 393, 2614, 5131, 6483, -1000, -1000, -1000, 49107, - 2107, 54329, -1000, 2102, -1000, 1046, 842, 877, 877, 54329, - -1000, -1000, 55075, 54329, 1043, 1040, 54329, 54329, 54329, 54329, - -1000, 48361, -1000, 47615, 46869, 1346, 54329, 46123, 45377, 44631, - 43885, 43139, -1000, 2527, -1000, 2143, -1000, -1000, -1000, 55075, - 54329, 54329, 55075, 54329, 55075, 55821, 54329, -1000, -1000, 328, - -1000, -1000, 1343, 1340, 1338, 962, 962, 1337, 1857, 1852, - 1831, 962, 962, 1309, 1820, 37917, 1818, 266, 1303, 1296, - 1294, 1290, 1813, 205, 1809, 1288, 1272, 1280, 54329, 2093, - 55821, -1000, 260, 1006, 1015, 980, 2476, 2335, 1984, 480, - 515, 54329, 461, 461, 54329, -1000, 15519, 55821, 213, -1000, - 1770, 22251, -1000, 1102, 1099, 1099, -1000, -1000, -1000, -1000, - -1000, -1000, 1107, 55821, 1102, -1000, -1000, -1000, 1099, 1107, - 55821, 1107, 1107, 1107, 1107, 1099, 1099, 1099, 1107, 55821, - 55821, 55821, 55821, 55821, 55821, 55821, 55821, 55821, 14767, 951, - 1107, -460, -1000, 1757, -1000, -1000, -1000, 2231, -1000, -1000, + -1000, 2003, -1000, -1000, -1000, 55454, -1000, 2003, 221, 53962, + 53962, 383, 1313, -1000, -1000, 2532, 2002, -1000, 2637, 2676, + 386, -1000, 3945, 1695, 1638, 1546, 2002, 2010, 55454, -1000, + 2050, 211, -1000, -1000, -1000, -332, -347, 2262, 1532, 1870, + -1000, -1000, -1000, -1000, 1841, 21884, -1000, -1000, 2681, -1000, + 28598, 803, 2677, 49486, -1000, 446, 446, 2032, 430, -11, + -1000, -1000, -1000, -1000, 956, 35312, -1000, -1000, -1000, -1000, + -1000, 1894, 55454, -1000, -1000, 5606, 53962, -1000, 2116, -1000, + 1887, -1000, 2073, 21884, 2134, 471, 53962, 462, 461, 460, + 443, -67, -1000, -1000, -1000, -1000, -1000, -1000, 919, 919, + 919, -1000, 388, 2620, 4217, 6836, -1000, -1000, -1000, 48740, + 2113, 53962, -1000, 2112, -1000, 1026, 868, 869, 869, 53962, + -1000, -1000, 54708, 53962, 1022, 1020, 53962, 53962, 53962, 53962, + -1000, 47994, -1000, 47248, 46502, 1311, 53962, 45756, 45010, 44264, + 43518, 42772, -1000, 2364, -1000, 2098, -1000, -1000, -1000, 54708, + 53962, 53962, 54708, 53962, 54708, 55454, 53962, -1000, -1000, 368, + -1000, -1000, 1305, 1304, 1297, 919, 919, 1268, 1859, 1856, + 1849, 919, 919, 1266, 1827, 37550, 1817, 276, 1262, 1261, + 1259, 1312, 1815, 269, 1805, 1296, 1254, 1255, 53962, 2100, + 55454, -1000, 249, 985, 995, 955, 2449, 2346, 2027, 452, + 468, 53962, 439, 439, 53962, -1000, 15152, 55454, 250, -1000, + 1791, 21884, -1000, 1079, 1069, 1069, -1000, -1000, -1000, -1000, + -1000, -1000, 1084, 55454, 1079, -1000, -1000, -1000, 1069, 1084, + 55454, 1084, 1084, 1084, 1084, 1069, 1069, 1069, 1084, 55454, + 55454, 55454, 55454, 55454, 55454, 55454, 55454, 55454, 14400, 894, + 1084, -454, -1000, 1752, -1000, -1000, -1000, 2240, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, @@ -7512,338 +7475,338 @@ var yyPact = [...]int{ -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 14767, 14767, - -1000, -1000, 2562, 2560, -1000, -1000, -1000, 1981, -1000, 175, - 4, 179, -1000, 42393, 493, 969, -1000, 493, -1000, -1000, - -1000, -1000, -1000, 1977, 41647, -1000, -463, -464, -468, -470, - -1000, -1000, -1000, -471, -477, -1000, -1000, -1000, 22251, 22251, - 22251, 22251, -276, -1000, 1426, 24489, 2456, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, 22251, 1195, 1144, 24489, 24489, 24489, - 24489, 24489, 24489, 24489, 25981, 25235, 24489, 24489, 24489, 24489, - 24489, 24489, -1000, -1000, 33441, 5242, 5242, 906, 906, 906, - 906, -1000, -181, 1973, 55075, -1000, -1000, -1000, 832, 22251, - 22251, 906, -1000, 1196, 1029, 19267, 22251, 22251, 22251, 22251, - 990, 1527, 55075, 22251, -1000, 1378, -1000, -1000, -1000, -1000, - 1200, -1000, -1000, 1091, 2403, 2403, 2403, 2403, 22251, 22251, - 22251, 22251, 22251, 22251, 22251, 22251, 22251, 22251, 2403, 22251, - 151, 151, 961, 22251, 22251, 22251, 22251, 22251, 22251, 22251, - 22251, 17775, 22251, 22251, 24489, 22251, 22251, 22251, 1378, 22251, - 22251, 22251, 22251, 22251, 22251, 22251, 22251, 22251, 22251, 22251, - 22251, 22251, 22251, 22251, 22251, 22251, 22251, 22251, 22251, 22251, - 22251, 22251, 22251, 22251, 22251, 22251, 22251, 22251, 22251, 22251, - 22251, 22251, 22251, 22251, 22251, 22251, 22251, 22251, 22251, 22251, - 22251, 22251, 22251, 22251, 22251, 22251, 22251, 22251, 22251, 22251, - 22251, 22251, 22251, 22251, 22251, 22251, 22251, 22251, 22251, 22251, - 22251, 22251, 22251, 22251, 22251, 22251, 22251, 22251, 22251, 22251, - 22251, 22251, 22251, 22251, 22251, 22251, 22251, 22251, 1378, 22251, - 1199, 22251, 22251, 22251, 22251, 22251, 22251, 22251, 17023, 22251, - 22251, 22251, 22251, 22251, -1000, -1000, -1000, -1000, -1000, -1000, - 22251, 22251, 22251, 22251, 22251, 22251, 22251, 22251, 1378, 22251, - 22251, 22251, 22251, 22251, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, 1764, 1721, 1554, 1998, 22251, -1000, - 1972, -1000, -183, 30457, 22251, 1755, 2651, 2147, 54329, -1000, - -1000, -1000, -1000, 2565, -1000, 2565, 1764, 3686, 2279, 21505, - -1000, -1000, 3686, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, 1783, -1000, 55821, 1967, - 2544, 54329, -1000, 1958, -1000, -1000, 1998, -1000, -315, -1000, - -343, 2265, 1752, 371, -1000, 22251, 22251, 1951, -1000, 1409, - 55821, -1000, -276, -1000, 40901, -1000, -1000, 14015, 55821, 337, - 55821, -1000, 29711, 40155, 303, -1000, 9, 1923, -1000, 11, - -15, 18521, 901, -1000, -1000, -1000, 1369, 26727, 1879, 901, - 85, -1000, -1000, -1000, 2072, -1000, 2072, 2072, 2072, 2072, - 371, 371, 371, 371, -1000, -1000, -1000, -1000, -1000, 2092, - 2072, 2091, -1000, 2072, 2072, 2072, 2072, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 14400, 14400, + -1000, -1000, 2555, 2545, -1000, -1000, -1000, 2026, -1000, 187, + 15, 197, -1000, 42026, 507, 937, -1000, 507, -1000, -1000, + -1000, -1000, -1000, 2017, 41280, -1000, -459, -463, -465, -466, + -1000, -1000, -1000, -467, -472, -1000, -1000, -1000, 21884, 21884, + 21884, 21884, -251, -1000, 1530, 24122, 2419, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, 21884, 1177, 941, 24122, 24122, 24122, + 24122, 24122, 24122, 24122, 25614, 24868, 24122, 24122, 24122, 24122, + 24122, 24122, -1000, -1000, 33074, 4706, 4706, 870, 870, 870, + 870, -1000, -178, 2016, 54708, -1000, -1000, -1000, 800, 21884, + 21884, 870, -1000, 1334, 4398, 18900, 21884, 21884, 21884, 21884, + 961, 1722, 54708, 21884, -1000, 1546, -1000, -1000, -1000, -1000, + 1192, -1000, -1000, 1139, 2404, 2404, 2404, 2404, 21884, 21884, + 21884, 21884, 21884, 21884, 21884, 21884, 21884, 21884, 2404, 21884, + 725, 725, 917, 21884, 21884, 21884, 21884, 21884, 21884, 21884, + 21884, 17408, 21884, 21884, 24122, 21884, 21884, 21884, 1546, 21884, + 21884, 21884, 21884, 21884, 21884, 21884, 21884, 21884, 21884, 21884, + 21884, 21884, 21884, 21884, 21884, 21884, 21884, 21884, 21884, 21884, + 21884, 21884, 21884, 21884, 21884, 21884, 21884, 21884, 21884, 21884, + 21884, 21884, 21884, 21884, 21884, 21884, 21884, 21884, 21884, 21884, + 21884, 21884, 21884, 21884, 21884, 21884, 21884, 21884, 21884, 21884, + 21884, 21884, 21884, 21884, 21884, 21884, 21884, 21884, 21884, 21884, + 21884, 21884, 21884, 21884, 21884, 21884, 21884, 21884, 21884, 21884, + 21884, 21884, 21884, 21884, 21884, 21884, 21884, 21884, 1546, 21884, + 1244, 21884, 21884, 21884, 21884, 21884, 21884, 21884, 16656, 21884, + 21884, 21884, 21884, 21884, -1000, -1000, -1000, -1000, -1000, -1000, + 21884, 21884, 21884, 21884, 21884, 21884, 21884, 21884, 1546, 21884, + 21884, 21884, 21884, 21884, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, 1668, 1750, 1572, 2003, 21884, -1000, + 2011, -1000, -195, 30090, 21884, 1748, 2675, 2157, 53962, -1000, + -1000, -1000, -1000, 2532, -1000, 2532, 1668, 3937, 2278, 21138, + -1000, -1000, 3937, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, 1775, -1000, 55454, 2010, + 2527, 53962, -1000, 1998, -1000, -1000, 2003, -1000, -306, -1000, + -309, 2232, 1743, 832, -1000, 21884, 21884, 1997, -1000, 1298, + 55454, -1000, -251, -1000, 40534, -1000, -1000, 13648, 55454, 338, + 55454, -1000, 29344, 39788, 307, -1000, -11, 1972, -1000, 26, + -3, 18154, 867, -1000, -1000, -1000, 1470, 26360, 1865, 867, + 113, -1000, -1000, -1000, 2073, -1000, 2073, 2073, 2073, 2073, + 832, 832, 832, 832, -1000, -1000, -1000, -1000, -1000, 2099, + 2073, 2097, -1000, 2073, 2073, 2073, 2073, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, 2089, 2089, 2089, 2088, 2088, 2074, - 2074, 437, -1000, 22251, 384, 39409, 2517, 1279, 1681, 260, - 463, 2144, 54329, 54329, 54329, 55821, 1005, -1000, 1476, 1469, - 1425, -1000, -533, 1950, -1000, -1000, 2606, -1000, -1000, 1105, - 1087, 1082, 1138, 54329, 229, 323, -1000, 429, -1000, 39409, - 54329, 1038, 877, 54329, -1000, 54329, -1000, -1000, -1000, -1000, - -1000, 54329, -1000, -1000, 1949, -1000, 1959, 1103, 1081, 1088, - 1065, 1949, -1000, -1000, -189, 1949, -1000, 1949, -1000, 1949, - -1000, 1949, -1000, 1949, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, 963, 336, -384, 54329, 229, 475, -1000, - 473, 33441, -1000, -1000, -1000, 33441, 33441, -1000, -1000, -1000, - -1000, 1741, 1737, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, 2093, 2093, 2093, 2088, 2088, 2076, + 2076, 432, -1000, 21884, 348, 39042, 2495, 1249, 2137, 249, + 443, 2146, 53962, 53962, 53962, 55454, 982, -1000, 1477, 1435, + 1401, -1000, -539, 1992, -1000, -1000, 2613, -1000, -1000, 1101, + 1043, 1041, 978, 53962, 227, 328, -1000, 417, -1000, 39042, + 53962, 1019, 869, 53962, -1000, 53962, -1000, -1000, -1000, -1000, + -1000, 53962, -1000, -1000, 1990, -1000, 1945, 1154, 1040, 1104, + 1011, 1990, -1000, -1000, -184, 1990, -1000, 1990, -1000, 1990, + -1000, 1990, -1000, 1990, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, 993, 309, -346, 53962, 227, 450, -1000, + 449, 33074, -1000, -1000, -1000, 33074, 33074, -1000, -1000, -1000, + -1000, 1732, 1711, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -522, 55821, -1000, 254, 968, 304, 296, 308, - 55821, 390, 2432, 2430, 2426, 2408, 2401, 2395, 2383, 239, - 288, 55821, 55821, 461, 2208, 55821, 2507, 55821, -1000, -1000, - -1000, -1000, -1000, 1733, 1704, -1000, 1527, 55821, -1000, -1000, - 1107, 1107, -1000, -1000, 55821, 1107, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, 1107, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -522, 55454, -1000, 241, 936, 294, 314, 308, + 55454, 787, 2397, 2395, 2387, 2382, 2379, 2377, 2376, 251, + 298, 55454, 55454, 439, 2194, 55454, 2489, 55454, -1000, -1000, + -1000, -1000, -1000, 1697, 1689, -1000, 1722, 55454, -1000, -1000, + 1084, 1084, -1000, -1000, 55454, 1084, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, 1084, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - 55821, -1000, -1000, -1000, -1000, 1689, -1000, 55821, -39, 153, - -1000, -1000, 54329, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -117, -1000, 327, 2, 419, -1000, -1000, -1000, - -1000, -1000, 2553, -1000, 1527, 1009, 1020, -1000, 1998, -1000, - -1000, 1108, -1000, -1000, -1000, -1000, -1000, 1998, 1998, 1998, - -1000, -1000, -1000, -1000, -1000, 1195, 24489, 24489, 24489, 1509, - 799, 1412, 924, 1454, 1443, 1443, 955, 24489, 955, 24489, - 910, 910, 910, 910, 910, -1000, -1000, -1000, -1000, -1000, - -1000, 1684, -1000, 1682, -1000, 1998, 55075, 1844, 17023, 2023, - 1371, 1378, 933, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + 55454, -1000, -1000, -1000, -1000, 1681, -1000, 55454, -32, 185, + -1000, -1000, 53962, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -83, -1000, 39, 21, 373, -1000, -1000, -1000, + -1000, -1000, 2534, -1000, 1722, 975, 992, -1000, 2003, -1000, + -1000, 1274, -1000, -1000, -1000, -1000, -1000, 2003, 2003, 2003, + -1000, -1000, -1000, -1000, -1000, 1177, 24122, 24122, 24122, 1410, + 492, 1433, 1327, 1420, 1276, 1276, 1287, 24122, 1287, 24122, + 871, 871, 871, 871, 871, -1000, -1000, -1000, -1000, -1000, + -1000, 1672, -1000, 1627, -1000, 2003, 54708, 1874, 16656, 1904, + 1540, 1546, 879, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, 3541, 1378, 1892, 1378, 2206, 3526, 997, - -1000, 22251, 1378, 3516, -1000, -1000, 1378, 1378, 22251, -1000, - -1000, 22251, 22251, 22251, 22251, 1681, 1681, 1681, 1681, 1681, - 1681, 1681, 1681, 1681, 1681, 22251, 1681, 1945, -1000, -1000, + -1000, -1000, -1000, 3614, 1546, 1919, 1546, 1671, 3609, 979, + -1000, 21884, 1546, 3598, -1000, -1000, 1546, 1546, 21884, -1000, + -1000, 21884, 21884, 21884, 21884, 2137, 2137, 2137, 2137, 2137, + 2137, 2137, 2137, 2137, 2137, 21884, 2137, 1989, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, 1935, 2649, 2008, 1681, - 1681, 1681, 1681, 3508, 1681, 1681, 22251, 1308, -1000, -1000, - -1000, 1562, 3504, 1367, 3496, 1681, 1681, -1000, 1681, 3491, - 3485, 1378, 2671, 2666, 1681, 1681, 1681, 1681, 1681, 2650, - 2632, 1681, 1681, 2581, 1681, 3461, 1681, 2564, 2556, 2551, - 2542, 2534, 2526, 2479, 2454, 2448, 2427, 2418, 2411, 2373, - 2338, 2331, 2322, 2308, 2304, 1681, 1681, 1681, 3450, 1681, - 3446, 1681, 3442, 1681, 1681, 3433, 2300, 2295, 1378, 1932, - -1000, 3418, 1681, 3414, 3410, 3405, 2270, 3398, 3388, 3384, - 1681, 1681, 1681, 2261, 3371, 3363, 3109, 3102, 3097, 3058, - 3048, 3044, 3028, 1681, 1554, 1554, 1554, 1554, 1554, 3024, - -279, 1681, 1378, -1000, -1000, -1000, -1000, -1000, 2996, 2256, - 2992, 2981, 2976, 2955, 1378, 1998, 831, -1000, -1000, 1554, - 1378, 1378, 1554, 1554, 2920, 2894, 2890, 2882, 2816, 2796, - 1681, 1681, -1000, 1681, 2774, 2762, 2234, 2190, 1378, -1000, - 1554, 55821, -1000, -454, -1000, -12, 912, 1998, -1000, 37917, - 1378, -1000, 4152, -1000, 1353, -1000, -1000, -1000, -1000, -1000, - 34933, 1828, -1000, -1000, -1000, -1000, 1998, 1802, -1000, -494, - 20759, -1000, -1000, -1000, 371, 56, 34187, 882, 882, 111, - 1527, 1527, 22251, -1000, -1000, -1000, -1000, -1000, -1000, 829, - 2639, 438, 1998, -1000, 1944, 2988, -1000, -1000, -1000, 2541, - 27473, -1000, -1000, 1998, 1998, 55821, 1839, 1799, -1000, 825, - -1000, 1370, 1923, 9, -9, -1000, -1000, -1000, -1000, 1527, - -1000, 1422, 353, 351, -1000, 462, -1000, -1000, -1000, -1000, - 2357, 75, -1000, -1000, -1000, 373, 371, -1000, -1000, -1000, - -1000, -1000, -1000, 1678, -1000, 1678, -1000, -1000, -1000, -1000, - -1000, 1277, -1000, -1000, -1000, -1000, 1274, -1000, -1000, 1271, - -1000, -1000, 2692, 2171, 384, -1000, -1000, 962, 1667, -1000, - -1000, 2375, 962, 962, 54329, -1000, -1000, 1829, 2517, 254, - 55821, 2207, -1000, 2144, 2144, 2144, -1000, 2503, -1000, -1000, - -1000, -1000, -1000, -1000, -526, 176, 364, -1000, -1000, -1000, - 5096, 54329, 1794, -1000, 226, -1000, 1765, -1000, 54329, -1000, - 1792, 2087, 54329, 54329, -1000, -1000, -1000, 54329, 1998, -1000, - -1000, -1000, -1000, 504, 2475, 332, -1000, -1000, -301, -1000, - -1000, 229, 226, 55075, 54329, 901, -1000, -1000, -1000, -1000, - -1000, -527, 1787, 490, 231, 334, 55821, 55821, 55821, 55821, - 55821, 55821, 791, -1000, -1000, 18, -1000, -1000, 203, -1000, - -1000, 1664, -1000, -1000, -1000, -1000, 203, -1000, -1000, -1000, - -1000, -1000, 274, 472, -1000, 55821, 55821, 931, -1000, -1000, - -1000, -1000, -1000, 1099, -1000, -1000, 1099, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 2453, - 55821, -1, -491, -1000, -488, 22251, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, 1331, 506, 1412, 24489, 24489, 1029, 1029, - 24489, -1000, -1000, -1000, 996, 996, 33441, -1000, 24489, 22251, - -1000, -1000, 22251, 22251, 22251, 985, -1000, 22251, 1291, -1000, - 22251, -1000, -279, 1554, 1681, 1681, 1681, 1681, -279, -279, - -279, -279, -279, -279, -279, -279, -279, -279, 1926, -1000, - 22251, 22251, 22251, 1378, 333, -1000, -1000, -1000, -279, 22251, - -1000, -1000, 2645, -1000, 22251, -1000, 33441, 22251, 22251, 22251, - -1000, -1000, -1000, 22251, 22251, -1000, -1000, 22251, -1000, 22251, - -1000, -1000, -1000, -1000, -1000, -1000, 22251, -1000, 22251, -1000, - -1000, -1000, 22251, -1000, 22251, -1000, -1000, 22251, -1000, 22251, - -1000, 22251, -1000, 22251, -1000, 22251, -1000, 22251, -1000, 22251, - -1000, 22251, -1000, 22251, -1000, 22251, -1000, 22251, -1000, 22251, - -1000, 22251, -1000, 22251, -1000, 22251, -1000, 22251, -1000, 22251, - -1000, 22251, -1000, -1000, -1000, 22251, -1000, 22251, -1000, 22251, - -1000, -1000, 22251, -1000, 22251, -1000, 22251, -1000, 22251, 22251, - -1000, 22251, 22251, 22251, -1000, 22251, 22251, 22251, 22251, -1000, - -1000, -1000, -1000, 22251, 22251, 22251, 22251, 22251, 22251, 22251, - 22251, 22251, 22251, -1000, -1000, -1000, -1000, -1000, -1000, 22251, - -1000, 39409, 8, -279, 1199, 8, 1199, 23743, 837, 817, - 22997, -1000, 22251, 16271, -1000, -1000, -1000, -1000, -1000, 22251, - 22251, 22251, 22251, 22251, 22251, -1000, -1000, -1000, 22251, 22251, - -1000, 22251, -1000, 22251, -1000, -1000, -1000, -1000, -1000, 912, - -1000, 471, 446, 877, 54329, -1000, -1000, -1000, -1000, 1922, - -1000, 2552, -1000, 2301, 2292, 2641, 2639, 21505, -1000, 29711, - -1000, -1000, 54329, -1000, -1000, -443, -1000, 2328, 2340, 882, - 882, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 13263, 2565, - 22251, 2204, 55075, 1998, -1000, 28219, 54329, 55075, 29711, 29711, - 29711, 29711, 29711, -1000, 2222, 2220, -1000, 2249, 2248, 2296, - 55821, -1000, 1764, 1781, -1000, 22251, 31949, 1886, 29711, -1000, - -1000, 29711, 55821, 12511, -1000, -1000, -5, -20, -1000, -1000, - -1000, -1000, 1369, -1000, -1000, 1213, 2535, 2351, -1000, -1000, - -1000, -1000, -1000, 1777, -1000, 1748, 1921, 1732, 1730, 336, - -1000, 2118, 2449, 962, 962, -1000, 1263, -1000, 1196, 1661, - 1655, -1000, -1000, -1000, 489, -1000, 55821, 2199, 2191, 2186, - -1000, -544, 1255, 2085, 2116, 22251, 2078, 2604, 1905, 54329, - -1000, -1000, 55075, -1000, 278, -1000, 384, 54329, -1000, -1000, - -1000, 323, 55821, -1000, 9274, -1000, -1000, -1000, 226, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, 55821, 241, -1000, 2076, - 1361, -1000, -1000, 2131, -1000, -1000, -1000, -1000, -1000, 208, - 189, 1634, 196, 1622, -1000, 196, -1000, 55821, 923, 2171, - 55821, -1000, -1000, -1000, 1107, 1107, -1000, -1000, 2440, -1000, - 1196, 1681, 24489, 24489, -1000, 906, -1000, -1000, 503, -256, - 2072, 2072, -1000, 2072, 2074, -1000, 2072, 134, 2072, 127, - 2072, -1000, -1000, 1378, 1378, -1000, 1554, 2185, 1383, 2727, - -1000, 1527, 22251, 2719, -1000, -1000, -279, -279, -279, -279, - -279, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -78, 2712, 2706, 1681, -1000, 2070, 2062, -1000, 1681, - 22251, 1681, 1378, 2166, 1681, 1681, 1681, 1681, 1681, 1681, - 1681, 1681, 1681, 1681, 1681, 1681, 2162, 2158, 2154, 2150, - 2145, 2135, 2124, 2117, 2063, 2056, 2045, 2040, 2019, 1995, - 1991, 1979, 1681, 1681, 1974, 1681, 1969, 1928, -1000, 1527, - 1554, 2687, 1554, 1681, 1681, 2637, 330, 1681, 1728, 1728, - 1728, 1728, 1728, 1554, 1554, 1554, 1554, 1681, 54329, -1000, - -279, -1000, -1000, -373, -379, -1000, 1378, -279, 1913, 24489, - 1681, 24489, 24489, 24489, 1681, 1378, -1000, 1897, 1860, 2589, - 1855, 1681, 2378, 1681, 1681, 1681, 1812, -1000, 2536, 1998, - 2536, 1998, 2536, 1712, 1353, 55821, -1000, -1000, -1000, -1000, - 2639, 2629, -1000, 1906, -1000, 56, 616, -1000, 2360, 2340, - -1000, 2603, 2320, 2602, -1000, -1000, -1000, -1000, -1000, 1527, - -1000, 2478, 1896, -1000, 967, 1925, -1000, -1000, 20759, 1717, - 2284, 803, 1712, 1966, 2988, 2140, 2179, 3393, -1000, -1000, - -1000, -1000, 2168, -1000, 2164, -1000, -1000, 2015, -1000, 2366, - 337, 29711, 1965, 1965, -1000, 801, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, 1100, 9274, 2678, -1000, 1619, -1000, 1360, - 195, 1253, -1000, -1000, 962, 962, -1000, 1035, 1034, -1000, - 55821, 2060, -1000, 371, 1617, 371, 1249, -1000, -1000, 1244, - -1000, -1000, -1000, -1000, 2099, 2350, -1000, -1000, -1000, -1000, - 55821, -1000, 55821, 55821, 55821, 2050, 2601, -1000, 22251, 2048, - 965, 2617, 54329, 54329, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, 427, 962, -505, 286, 282, - 962, 962, 962, -545, -1000, -1000, 1703, 1701, -1000, -190, - -1000, 22251, -1000, -1000, -1000, -1000, -1000, 1305, 1305, 1611, - 1609, 1588, -1000, 2015, -1000, -1000, -1000, 1696, -1000, -1000, - -203, 54329, 54329, 54329, 54329, -1000, -1000, -1000, 1209, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, 1985, 2672, 1329, 2137, + 2137, 2137, 2137, 3587, 2137, 2137, 21884, 1974, -1000, -1000, + -1000, 1569, 3558, 1257, 3551, 2137, 2137, -1000, 2137, 3515, + 3485, 1546, 2662, 2630, 2137, 2137, 2137, 2137, 2137, 2615, + 2585, 2137, 2137, 2581, 2137, 3480, 2137, 2575, 2568, 2554, + 2550, 2520, 2473, 2465, 2455, 2451, 2411, 2388, 2367, 2361, + 2350, 2338, 2333, 2315, 2287, 2137, 2137, 2137, 3464, 2137, + 3448, 2137, 3444, 2137, 2137, 3439, 2271, 2248, 1546, 1973, + -1000, 3429, 2137, 3413, 3386, 3381, 2244, 3371, 3362, 3358, + 2137, 2137, 2137, 2238, 3350, 3346, 3342, 3306, 3115, 3106, + 3102, 3097, 3083, 2137, 1572, 1572, 1572, 1572, 1572, 3050, + -258, 2137, 1546, -1000, -1000, -1000, -1000, -1000, 3009, 2225, + 2994, 2986, 2976, 2971, 1546, 2003, 797, -1000, -1000, 1572, + 1546, 1546, 1572, 1572, 2960, 2941, 2892, 2844, 2816, 2812, + 2137, 2137, -1000, 2137, 2804, 2772, 2206, 2177, 1546, -1000, + 1572, 55454, -1000, -425, -1000, 5, 960, 2003, -1000, 37550, + 1546, -1000, 4201, -1000, 1247, -1000, -1000, -1000, -1000, -1000, + 34566, 2018, -1000, -1000, -1000, -1000, 2003, 1864, -1000, -496, + 20392, -1000, -1000, -1000, 832, 94, 33820, 860, 860, 124, + 1722, 1722, 21884, -1000, -1000, -1000, -1000, -1000, -1000, 552, + 2639, 376, 2003, -1000, 1951, 2420, -1000, -1000, -1000, 2507, + 27106, -1000, -1000, 2003, 2003, 55454, 1893, 1873, -1000, 535, + -1000, 1352, 1972, -11, -12, -1000, -1000, -1000, -1000, 1722, + -1000, 1398, 341, 347, -1000, 424, -1000, -1000, -1000, -1000, + 2368, 106, -1000, -1000, -1000, 345, 832, -1000, -1000, -1000, + -1000, -1000, -1000, 1622, -1000, 1622, -1000, -1000, -1000, -1000, + -1000, 1248, -1000, -1000, -1000, -1000, 1239, -1000, -1000, 1231, + -1000, -1000, 2670, 2181, 348, -1000, -1000, 919, 1620, -1000, + -1000, 2371, 919, 919, 53962, -1000, -1000, 1810, 2495, 241, + 55454, 2191, -1000, 2146, 2146, 2146, -1000, 2482, -1000, -1000, + -1000, -1000, -1000, -1000, -526, 166, 548, -1000, -1000, -1000, + 5202, 53962, 1809, -1000, 213, -1000, 1804, -1000, 53962, -1000, + 1803, 2085, 53962, 53962, -1000, -1000, -1000, 53962, 2003, -1000, + -1000, -1000, -1000, 466, 2447, 367, -1000, -1000, -282, -1000, + -1000, 227, 213, 54708, 53962, 867, -1000, -1000, -1000, -1000, + -1000, -529, 1788, 458, 232, 329, 55454, 55454, 55454, 55454, + 55454, 55454, 485, -1000, -1000, 40, -1000, -1000, 212, -1000, + -1000, 1609, -1000, -1000, -1000, -1000, 212, -1000, -1000, -1000, + -1000, -1000, 277, 448, -1000, 55454, 55454, 952, -1000, -1000, + -1000, -1000, -1000, 1069, -1000, -1000, 1069, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 2443, + 55454, 20, -492, -1000, -488, 21884, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, 1243, 486, 1433, 24122, 24122, 4398, 4398, + 24122, -1000, -1000, -1000, 323, 323, 33074, -1000, 24122, 21884, + -1000, -1000, 21884, 21884, 21884, 931, -1000, 21884, 1392, -1000, + 21884, -1000, -258, 1572, 2137, 2137, 2137, 2137, -258, -258, + -258, -258, -258, -258, -258, -258, -258, -258, 1917, -1000, + 21884, 21884, 21884, 1546, 326, -1000, -1000, -1000, -258, 21884, + -1000, -1000, 2649, -1000, 21884, -1000, 33074, 21884, 21884, 21884, + -1000, -1000, -1000, 21884, 21884, -1000, -1000, 21884, -1000, 21884, + -1000, -1000, -1000, -1000, -1000, -1000, 21884, -1000, 21884, -1000, + -1000, -1000, 21884, -1000, 21884, -1000, -1000, 21884, -1000, 21884, + -1000, 21884, -1000, 21884, -1000, 21884, -1000, 21884, -1000, 21884, + -1000, 21884, -1000, 21884, -1000, 21884, -1000, 21884, -1000, 21884, + -1000, 21884, -1000, 21884, -1000, 21884, -1000, 21884, -1000, 21884, + -1000, 21884, -1000, -1000, -1000, 21884, -1000, 21884, -1000, 21884, + -1000, -1000, 21884, -1000, 21884, -1000, 21884, -1000, 21884, 21884, + -1000, 21884, 21884, 21884, -1000, 21884, 21884, 21884, 21884, -1000, + -1000, -1000, -1000, 21884, 21884, 21884, 21884, 21884, 21884, 21884, + 21884, 21884, 21884, -1000, -1000, -1000, -1000, -1000, -1000, 21884, + -1000, 39042, 38, -258, 1244, 38, 1244, 23376, 815, 493, + 22630, -1000, 21884, 15904, -1000, -1000, -1000, -1000, -1000, 21884, + 21884, 21884, 21884, 21884, 21884, -1000, -1000, -1000, 21884, 21884, + -1000, 21884, -1000, 21884, -1000, -1000, -1000, -1000, -1000, 960, + -1000, 453, 445, 869, 53962, -1000, -1000, -1000, -1000, 1971, + -1000, 2558, -1000, 2289, 2268, 2645, 2639, 21138, -1000, 29344, + -1000, -1000, 53962, -1000, -1000, -410, -1000, 2343, 2295, 860, + 860, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 12896, 2532, + 21884, 2184, 54708, 2003, -1000, 27852, 53962, 54708, 29344, 29344, + 29344, 29344, 29344, -1000, 2214, 2210, -1000, 2224, 2208, 2312, + 55454, -1000, 1668, 1785, -1000, 21884, 31582, 1921, 29344, -1000, + -1000, 29344, 55454, 12144, -1000, -1000, 19, -8, -1000, -1000, + -1000, -1000, 1470, -1000, -1000, 1144, 2504, 2366, -1000, -1000, + -1000, -1000, -1000, 1783, -1000, 1773, 1970, 1767, 1763, 309, + -1000, 2132, 2439, 919, 919, -1000, 1229, -1000, 1334, 1599, + 1596, -1000, -1000, -1000, 447, -1000, 55454, 2178, 2174, 2172, + -1000, -546, 1227, 2084, 2129, 21884, 2079, 2608, 1950, 53962, + -1000, -1000, 54708, -1000, 296, -1000, 348, 53962, -1000, -1000, + -1000, 328, 55454, -1000, 5547, -1000, -1000, -1000, 213, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, 55454, 240, -1000, 2077, + 1318, -1000, -1000, 2135, -1000, -1000, -1000, -1000, -1000, 216, + 214, 1593, 205, 1584, -1000, 205, -1000, 55454, 909, 2181, + 55454, -1000, -1000, -1000, 1084, 1084, -1000, -1000, 2413, -1000, + 1334, 2137, 24122, 24122, -1000, 870, -1000, -1000, 400, -233, + 2073, 2073, -1000, 2073, 2076, -1000, 2073, 173, 2073, 158, + 2073, -1000, -1000, 1546, 1546, -1000, 1572, 2171, 2183, 2710, + -1000, 1722, 21884, 2704, -1000, -1000, -258, -258, -258, -258, + -258, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -75, 2700, 2626, 2137, -1000, 2071, 2067, -1000, 2137, + 21884, 2137, 1546, 2153, 2137, 2137, 2137, 2137, 2137, 2137, + 2137, 2137, 2137, 2137, 2137, 2137, 2142, 2131, 2080, 2029, + 2014, 2008, 1999, 1995, 1978, 1947, 1927, 1908, 1884, 1879, + 1853, 1845, 2137, 2137, 1832, 2137, 1800, 1790, -1000, 1722, + 1572, 2541, 1572, 2137, 2137, 2536, 292, 2137, 1758, 1758, + 1758, 1758, 1758, 1572, 1572, 1572, 1572, 2137, 53962, -1000, + -258, -1000, -1000, -330, -354, -1000, 1546, -258, 1955, 24122, + 2137, 24122, 24122, 24122, 2137, 1546, -1000, 1771, 1718, 2500, + 1684, 2137, 2469, 2137, 2137, 2137, 1663, -1000, 2531, 2003, + 2531, 2003, 2531, 1738, 1247, 55454, -1000, -1000, -1000, -1000, + 2639, 2632, -1000, 1953, -1000, 94, 581, -1000, 2316, 2295, + -1000, 2592, 2331, 2591, -1000, -1000, -1000, -1000, -1000, 1722, + -1000, 2454, 1942, -1000, 933, 1765, -1000, -1000, 20392, 1756, + 2242, 532, 1738, 1991, 2420, 2155, 2170, 2807, -1000, -1000, + -1000, -1000, 2207, -1000, 2187, -1000, -1000, 2050, -1000, 2446, + 338, 29344, 1983, 1983, -1000, 528, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, 1061, 5547, 2703, -1000, 1575, -1000, 1348, + 195, 1216, -1000, -1000, 919, 919, -1000, 1018, 1017, -1000, + 55454, 2065, -1000, 832, 1573, 832, 1209, -1000, -1000, 1207, + -1000, -1000, -1000, -1000, 2024, 2286, -1000, -1000, -1000, -1000, + 55454, -1000, 55454, 55454, 55454, 2064, 2590, -1000, 21884, 2063, + 923, 2666, 53962, 53962, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, 444, 919, -506, 297, 280, + 919, 919, 919, -547, -1000, -1000, 1709, 1705, -1000, -215, + -1000, 21884, -1000, -1000, -1000, -1000, -1000, 1234, 1234, 1542, + 1525, 1512, -1000, 2050, -1000, -1000, -1000, 1768, -1000, -1000, + -197, 53962, 53962, 53962, 53962, -1000, -1000, -1000, 1121, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, 906, 1378, 376, -205, 1378, -1000, -1000, 371, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 22251, - -1000, 22251, -1000, 22251, 1527, 22251, -1000, -1000, -1000, -1000, - -1000, 2565, 1581, 22251, 22251, -1000, 1226, 1204, -279, 1681, - -1000, -1000, -1000, 22251, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -1000, 22251, -1000, 22251, - -1000, 22251, -1000, 22251, -1000, 22251, -1000, 22251, -1000, 22251, - -1000, 22251, -1000, 22251, -1000, 22251, -1000, 22251, -1000, 22251, - -1000, 22251, -1000, 22251, -1000, 22251, -1000, 22251, -1000, -1000, - 22251, -1000, -1000, -1000, 22251, -1000, 22251, -1000, 22251, -1000, - -1000, -1000, 22251, 233, 996, -1000, -1000, -1000, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, 1378, 329, -1000, -1000, - -1000, 2638, -1000, 1378, 22251, 1029, -1000, 1029, 1029, 1029, - -1000, -1000, -1000, 22251, -1000, 22251, 22251, -1000, 22251, -1000, - 22251, -1000, -1000, -1000, -1000, 22251, 1998, 2468, 38663, 1998, - 38663, 1998, 31949, -1000, -1000, 2629, 2591, 2597, 2309, 2311, - 2311, 2360, -1000, 2594, 2583, -1000, 1564, 2582, 1555, 1027, - -1000, 55075, 22251, -1000, 1998, 37917, -1000, 426, 54329, 1998, - 54329, -1000, 2577, -1000, -1000, 22251, 2036, -1000, 22251, -1000, - -1000, -1000, -1000, 5242, 2639, 1965, -1000, -1000, 916, -1000, - 22251, -1000, 10482, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - -1000, 1549, 1523, -1000, -1000, 2022, 22251, -1000, -1000, -1000, - 1629, 1563, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - 2015, -1000, -1000, -1000, -1000, 323, -538, 2223, 54329, 1153, - -1000, 1699, 1905, 309, 1998, 1521, 962, 962, 962, 1139, - 1132, 37917, 1693, -1000, 54329, 350, -1000, 323, -1000, -250, - -251, 1681, -1000, -1000, 2524, -1000, -1000, 16271, -1000, -1000, - 2013, 2137, -1000, -1000, -1000, -1000, 2188, -187, -221, -1000, - -1000, 1681, 1681, 1681, 1189, 1378, -1000, 1681, 1681, 1548, - 1410, -1000, -1000, 1681, 1681, 1681, 1681, 1681, 1681, 1681, - 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, 1681, - 1681, 1681, 1681, 1554, 1808, -1000, 233, 1378, 2172, -1000, - -1000, 5242, -1000, -1000, 2577, 2579, 8, -1000, -1000, 221, - 8, 1527, 1019, 1378, 1378, 1019, 1790, 1681, 1775, 1726, - 1681, 1681, 32695, -1000, 2574, 2571, 1671, -1000, -1000, 38663, - 1671, 38663, 912, 2591, -288, 22251, 22251, 2305, 1207, -1000, - -1000, -1000, -1000, 1519, 1488, -1000, 1465, -1000, 2677, -1000, - 1527, -1000, 1998, 1998, -1000, 795, 1925, -1000, 2565, 1527, - 54329, 1527, 55, 2577, -1000, 1681, -1000, 1998, 1998, 1998, - 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, - 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, - 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, - 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, - 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, - 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, - 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, - 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, - 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, - 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, - 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, - 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, - 1998, 1998, 1998, 1998, 1998, 1998, 1998, 1998, -1000, -1000, - 54329, 2181, -1000, -1000, 2513, 1688, 163, -1000, 1384, 1905, - -1000, -1000, 892, -1000, 22251, -1000, 37917, 1436, 1385, -1000, - -1000, -1000, -1000, -545, -1000, -1000, -1000, -1000, -1000, -1000, - 400, 1901, -1000, 960, 54329, 55821, -1000, 2161, -1000, -1000, - -1000, -1000, 22251, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, 870, 1546, 395, -202, 1546, -1000, -1000, 832, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 21884, + -1000, 21884, -1000, 21884, 1722, 21884, -1000, -1000, -1000, -1000, + -1000, 2532, 1486, 21884, 21884, -1000, 1205, 1201, -258, 2137, + -1000, -1000, -1000, 21884, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, 21884, -1000, 21884, + -1000, 21884, -1000, 21884, -1000, 21884, -1000, 21884, -1000, 21884, + -1000, 21884, -1000, 21884, -1000, 21884, -1000, 21884, -1000, 21884, + -1000, 21884, -1000, 21884, -1000, 21884, -1000, 21884, -1000, -1000, + 21884, -1000, -1000, -1000, 21884, -1000, 21884, -1000, 21884, -1000, + -1000, -1000, 21884, 289, 323, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, 1546, 335, -1000, -1000, + -1000, 2642, -1000, 1546, 21884, 4398, -1000, 4398, 4398, 4398, + -1000, -1000, -1000, 21884, -1000, 21884, 21884, -1000, 21884, -1000, + 21884, -1000, -1000, -1000, -1000, 21884, 2003, 2434, 38296, 2003, + 38296, 2003, 31582, -1000, -1000, 2632, 2624, 2589, 2317, 2327, + 2327, 2316, -1000, 2586, 2580, -1000, 1484, 2577, 1478, 990, + -1000, 54708, 21884, -1000, 2003, 37550, -1000, 398, 53962, 2003, + 53962, -1000, 2569, -1000, -1000, 21884, 2058, -1000, 21884, -1000, + -1000, -1000, -1000, 4706, 2639, 1983, -1000, -1000, 872, -1000, + 21884, -1000, 9719, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, 1465, 1459, -1000, -1000, 2052, 21884, -1000, -1000, + -1000, 1759, 1751, -1000, -1000, -1000, -1000, -1000, -1000, -1000, + -1000, 2050, -1000, -1000, -1000, -1000, 328, -536, 2638, 53962, + 1200, -1000, 1701, 1950, 301, 2003, 1452, 919, 919, 919, + 1198, 1194, 37550, 1687, -1000, 53962, 399, -1000, 328, -1000, + -223, -226, 2137, -1000, -1000, 2502, -1000, -1000, 15904, -1000, + -1000, 2049, 2144, -1000, -1000, -1000, -1000, 2213, -182, -209, + -1000, -1000, 2137, 2137, 2137, 1676, 1546, -1000, 2137, 2137, + 1669, 1581, -1000, -1000, 2137, 2137, 2137, 2137, 2137, 2137, + 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, 2137, + 2137, 2137, 2137, 2137, 1572, 1655, -1000, 289, 1546, 2169, + -1000, -1000, 4706, -1000, -1000, 2569, 2564, 38, -1000, -1000, + 226, 38, 1722, 965, 1546, 1546, 965, 1635, 2137, 1618, + 1557, 2137, 2137, 32328, -1000, 2563, 2557, 1665, -1000, -1000, + 38296, 1665, 38296, 960, 2624, -268, 21884, 21884, 2290, 1107, + -1000, -1000, -1000, -1000, 1443, 1439, -1000, 1436, -1000, 2702, + -1000, 1722, -1000, 2003, 2003, -1000, 525, 1765, -1000, 2532, + 1722, 53962, 1722, 83, 2569, -1000, 2137, -1000, 2003, 2003, + 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, + 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, + 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, + 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, + 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, + 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, + 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, + 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, + 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, + 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, + 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, + 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, + 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, 2003, -1000, + -1000, 53962, 2530, -1000, -1000, 2501, 1667, 164, -1000, 1553, + 1950, -1000, -1000, 930, -1000, 21884, -1000, 37550, 1405, 1385, + -1000, -1000, -1000, -1000, -547, -1000, -1000, -1000, -1000, -1000, + -1000, 386, 1949, -1000, 906, 53962, 55454, -1000, 2188, -1000, + -1000, -1000, -1000, 21884, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, - 22251, -1000, 1378, 2167, -1000, -375, -1000, -514, 22251, -279, - -1000, -1000, -279, -1000, -1000, -1000, -1000, -1000, 22251, -1000, - -1000, 22251, -1000, 22251, -1000, -1000, 1671, -1000, -1000, -1000, - 37171, -1000, 1671, -1000, 1671, -1000, -288, -1000, 1900, -1000, - 54329, 1527, 391, -1000, 1191, -1000, -1000, -1000, -1000, -1000, - 55075, 54329, 1925, 54329, -1000, -1000, 1628, 1378, 1998, 2565, - -1000, 1604, -1000, 400, -1000, 2012, 2116, -1000, -1000, -1000, - 20013, -1000, -1000, -1000, -1000, -1000, 272, -197, 16271, 11759, - 1602, -1000, -195, 1681, 1554, -1000, -481, -1000, -1000, -1000, - -1000, 263, -1000, -1000, 1892, -1000, -1000, 1714, 1710, 1677, - -1000, -1000, -1000, -1000, -1000, -1000, -288, -1000, -1000, 2511, - -1000, -253, -1000, -1000, 1890, 1547, -1000, -1000, -1000, 31949, - 53583, -1000, -179, 325, -197, 22251, 2011, 1378, -1000, -1000, - -1000, -1000, -1000, -1000, -1000, -1000, -40, -1000, -1000, 540, - -1000, -1000, -1000, 2131, -212, -1000, -1000, -1000, 292, -497, - -259, -293, 24489, -1000, 22251, -1000, 22251, -1000, 22251, -1000, - 54329, 1998, -1000, -1000, -1000, 1484, -1000, 4304, -394, 2163, - -1000, -143, -1000, -1000, -1000, 1049, 1373, -1000, -1000, -1000, - -1000, -1000, -1000, 1850, 54329, -1000, 435, -1000, -1000, 15519, - -203, -228, 1010, -1000, -1000, -1000, -1000, -1000, 1029, 1616, - 1377, 1681, -1000, 54329, -1000, 53583, -387, 901, 5242, -1000, - 2159, 2155, 2657, -1000, -1000, -1000, -1000, -1000, -1000, -548, - 1482, 242, -1000, -1000, -1000, 292, -328, -1000, 22251, -1000, - 22251, -1000, 1378, -1000, -1000, 2496, 55, -1000, 2672, -1000, - 2675, 1014, 1014, -1000, 1126, -548, -1000, -1000, -1000, -1000, - 1681, 1681, -1000, -396, -1000, -1000, -1000, -1000, -1000, 430, - 1220, -1000, -1000, -1000, -1000, -1000, 5242, -1000, -1000, -1000, - 235, 235, -1000, -1000, + -1000, 21884, -1000, 1546, 2168, -1000, -364, -1000, -516, 21884, + -258, -1000, -1000, -258, -1000, -1000, -1000, -1000, -1000, 21884, + -1000, -1000, 21884, -1000, 21884, -1000, -1000, 1665, -1000, -1000, + -1000, 36804, -1000, 1665, -1000, 1665, -1000, -268, -1000, 1946, + -1000, 53962, 1722, 350, -1000, 1102, -1000, -1000, -1000, -1000, + -1000, 54708, 53962, 1765, 53962, -1000, -1000, 1633, 1546, 2003, + 2532, -1000, 1589, -1000, 386, -1000, 2047, 2129, -1000, -1000, + -1000, 19646, -1000, -1000, -1000, -1000, -1000, 238, -192, 15904, + 11392, 1580, -1000, -185, 2137, 1572, -1000, -477, -1000, -1000, + -1000, -1000, 256, -1000, -1000, 1919, -1000, -1000, 1549, 1545, + 1528, -1000, -1000, -1000, -1000, -1000, -1000, -268, -1000, -1000, + 2499, -1000, -228, -1000, -1000, 1915, 1552, -1000, -1000, -1000, + 31582, 53216, -1000, -176, 332, -192, 21884, 2044, 1546, -1000, + -1000, -1000, -1000, -1000, -1000, -1000, -1000, -20, -1000, -1000, + 495, -1000, -1000, -1000, 2135, -206, -1000, -1000, -1000, 288, + -497, -286, -293, 24122, -1000, 21884, -1000, 21884, -1000, 21884, + -1000, 53962, 2003, -1000, -1000, -1000, 1531, -1000, 5018, -355, + 2166, -1000, -113, -1000, -1000, -1000, 1060, 1381, -1000, 1157, + -1000, -1000, -1000, -1000, -1000, 2266, 53962, -1000, 429, -1000, + -1000, 15152, -197, -210, 987, -1000, -1000, -1000, -1000, -1000, + 4398, 1482, 1476, 2137, -1000, 53962, -1000, 53216, -340, 867, + 4706, -1000, 2160, 2159, 2663, -1000, -1000, -1000, -1000, -1000, + -1000, -1000, -550, 1370, 244, -1000, -1000, -1000, 288, -343, + -1000, 21884, -1000, 21884, -1000, 1546, -1000, -1000, 2471, 83, + -1000, 2699, -1000, 2640, 1006, 1006, -1000, 1111, -550, -1000, + -1000, -1000, -1000, 2137, 2137, -1000, -358, -1000, -1000, -1000, + -1000, -1000, 413, 1152, -1000, -1000, -1000, -1000, -1000, 4706, + -1000, -1000, -1000, 215, 215, -1000, -1000, } var yyPgo = [...]int{ - 0, 3261, 3259, 47, 7, 36, 34, 3256, 3254, 3239, - 178, 3238, 3237, 3236, 3235, 3234, 3233, 2715, 2702, 2700, - 3229, 3228, 3226, 3225, 3224, 3222, 3220, 3218, 3217, 48, - 110, 72, 108, 213, 215, 3216, 3215, 184, 173, 202, - 3209, 3208, 3207, 116, 193, 83, 87, 197, 3202, 3195, - 78, 3191, 3189, 3188, 191, 190, 189, 1088, 3187, 188, - 114, 50, 3186, 3185, 3182, 3178, 3176, 3175, 3174, 3172, - 3170, 3168, 3167, 3165, 3162, 3156, 3155, 3153, 3150, 3146, - 309, 3143, 3142, 10, 3141, 66, 3139, 3135, 3133, 3130, - 3126, 12, 3125, 3123, 19, 42, 60, 3122, 3119, 49, - 3118, 3114, 3112, 3109, 3107, 45, 3105, 27, 3104, 37, - 3103, 3102, 128, 3100, 3099, 3098, 38, 3097, 3095, 3094, - 5, 170, 3093, 3091, 142, 3090, 3082, 3081, 169, 222, - 3078, 2332, 3074, 99, 3071, 3068, 3061, 174, 200, 3058, - 122, 3057, 3055, 3053, 155, 3044, 3333, 3041, 3039, 68, - 76, 156, 3036, 3034, 199, 74, 11, 3031, 15, 17, - 3030, 3025, 69, 64, 3021, 111, 3013, 3010, 103, 65, - 3009, 100, 97, 3008, 3006, 23, 18, 3003, 6, 1, - 8, 82, 3002, 3001, 119, 2997, 2983, 2982, 93, 2981, - 2979, 3360, 2977, 90, 136, 106, 70, 2968, 171, 153, - 2967, 2966, 2965, 2964, 2963, 2960, 53, 2958, 2957, 2954, - 140, 29, 113, 2953, 2950, 146, 346, 130, 54, 132, - 2947, 149, 2945, 203, 77, 2943, 175, 2941, 2940, 135, - 134, 2938, 2937, 57, 168, 194, 2928, 96, 131, 121, - 150, 94, 133, 2926, 2925, 58, 61, 2911, 2909, 2907, - 2904, 177, 2902, 2901, 62, 2900, 56, 2899, 167, 2897, - 302, 67, 2896, 180, 185, 2895, 73, 2891, 2889, 91, - 95, 102, 26, 2888, 163, 166, 127, 182, 2887, 2884, - 55, 2881, 2879, 2878, 201, 280, 2877, 2873, 308, 179, - 144, 152, 84, 2871, 325, 2869, 2864, 2863, 40, 4520, - 6444, 192, 22, 165, 2860, 2856, 7650, 44, 39, 24, - 2855, 210, 2854, 183, 2853, 2846, 2841, 238, 207, 112, - 164, 59, 2839, 2838, 2836, 2835, 35, 2830, 2828, 2818, - 2816, 2814, 2813, 33, 32, 31, 92, 216, 81, 20, - 98, 172, 157, 63, 2812, 2811, 2810, 125, 85, 2809, - 162, 159, 126, 101, 2807, 186, 145, 118, 2804, 105, - 30, 2799, 2798, 2797, 2796, 89, 2795, 2794, 2791, 2786, - 154, 147, 123, 79, 2784, 80, 120, 151, 148, 52, - 2782, 43, 2781, 2780, 28, 195, 25, 2776, 41, 107, - 117, 2775, 6234, 2774, 9, 335, 161, 2771, 2765, 4, - 13, 16, 2764, 2759, 2748, 2741, 138, 2740, 2739, 2738, - 2732, 21, 46, 14, 2, 115, 141, 71, 2730, 2727, - 143, 2726, 2724, 2708, 0, 1034, 129, 2701, 204, + 0, 3391, 3388, 28, 4, 38, 37, 3387, 3386, 3383, + 166, 3382, 3381, 3378, 3364, 3363, 3294, 2769, 2762, 2739, + 3292, 3289, 3284, 3278, 3273, 3269, 3267, 3265, 3263, 48, + 96, 87, 105, 203, 192, 3260, 3256, 179, 169, 199, + 3254, 3237, 3235, 113, 189, 79, 78, 191, 3234, 3233, + 62, 3230, 3228, 3226, 187, 186, 185, 1053, 3225, 181, + 112, 46, 3224, 3223, 3220, 3217, 3216, 3215, 3214, 3213, + 3209, 3208, 3207, 3204, 3201, 3200, 3195, 3191, 3189, 3188, + 286, 3187, 3186, 10, 3185, 65, 3184, 3183, 3182, 3181, + 3180, 15, 3178, 3177, 20, 41, 57, 3176, 3175, 44, + 3174, 3173, 3172, 3171, 3169, 71, 3167, 26, 3159, 40, + 3153, 3152, 120, 3151, 3145, 3144, 30, 3143, 3140, 3137, + 2, 172, 3136, 3135, 136, 3134, 3130, 3125, 190, 217, + 3123, 2296, 3122, 101, 3121, 3117, 3109, 170, 194, 3108, + 121, 3107, 3104, 3103, 145, 3102, 3920, 3100, 3099, 68, + 63, 226, 3098, 3093, 200, 64, 60, 3092, 16, 13, + 3089, 3081, 59, 75, 3080, 106, 3077, 3076, 100, 80, + 3075, 98, 104, 3073, 3071, 21, 7, 3070, 5, 1, + 6, 82, 3069, 3065, 117, 3064, 3061, 3060, 93, 3057, + 3055, 6505, 3049, 92, 128, 103, 70, 3046, 171, 153, + 3043, 3042, 3041, 3039, 3036, 3034, 49, 3018, 3014, 3011, + 134, 1256, 108, 3004, 3002, 147, 352, 126, 50, 129, + 3001, 146, 2996, 215, 76, 2993, 164, 2992, 2991, 133, + 132, 2987, 2984, 56, 168, 195, 2983, 97, 127, 116, + 176, 95, 131, 2982, 2981, 55, 69, 2979, 2978, 2976, + 2966, 165, 2963, 2962, 58, 2948, 53, 2944, 178, 2938, + 325, 67, 2937, 180, 161, 2935, 72, 2934, 2924, 66, + 99, 102, 29, 2918, 157, 162, 123, 160, 2917, 2915, + 52, 2911, 2910, 2904, 197, 327, 2902, 2901, 305, 167, + 141, 149, 83, 2899, 353, 2898, 2897, 2891, 14, 5107, + 7204, 183, 27, 163, 2881, 2879, 1040, 19, 47, 24, + 2878, 210, 2877, 198, 2876, 2874, 2873, 205, 208, 111, + 158, 54, 2872, 2870, 2869, 2864, 35, 2862, 2861, 2854, + 2852, 2851, 2850, 36, 34, 33, 89, 221, 61, 18, + 94, 155, 150, 73, 2847, 2846, 2845, 119, 91, 2842, + 156, 154, 122, 159, 2840, 177, 142, 115, 2836, 84, + 32, 2835, 2833, 2830, 2829, 85, 2827, 2824, 2814, 2813, + 152, 143, 118, 77, 2812, 81, 114, 148, 144, 43, + 2811, 42, 2810, 2807, 31, 188, 25, 2804, 39, 107, + 137, 2803, 5291, 2799, 9, 349, 151, 2798, 2792, 8, + 11, 17, 2788, 2787, 2780, 2777, 130, 2775, 2773, 2764, + 2757, 23, 45, 22, 12, 110, 135, 74, 2756, 2745, + 139, 2744, 2725, 2716, 0, 1034, 125, 2688, 202, } -//line sql.y:8811 +//line sql.y:8820 type yySymType struct { union any empty struct{} @@ -8569,103 +8532,103 @@ var yyR1 = [...]int{ 362, 362, 362, 362, 362, 362, 362, 348, 348, 141, 141, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 410, 410, - 410, 409, 409, 244, 244, 244, 244, 244, 244, 244, - 244, 150, 150, 162, 162, 162, 162, 162, 162, 148, - 148, 149, 147, 147, 147, 155, 155, 155, 155, 155, + 410, 410, 409, 409, 244, 244, 244, 244, 244, 244, + 244, 244, 244, 150, 150, 162, 162, 162, 162, 162, + 162, 148, 148, 149, 147, 147, 147, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, - 155, 414, 414, 414, 414, 414, 414, 414, 414, 414, + 155, 155, 155, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, 414, - 414, 414, 414, 161, 161, 156, 156, 156, 158, 158, - 157, 157, 157, 159, 159, 411, 411, 411, 411, 326, - 326, 326, 326, 329, 329, 327, 327, 327, 327, 327, - 327, 327, 327, 327, 328, 328, 328, 328, 328, 328, - 328, 330, 330, 330, 330, 330, 331, 331, 331, 331, + 414, 414, 414, 414, 414, 161, 161, 156, 156, 156, + 158, 158, 157, 157, 157, 159, 159, 411, 411, 411, + 411, 326, 326, 326, 326, 329, 329, 327, 327, 327, + 327, 327, 327, 327, 327, 327, 328, 328, 328, 328, + 328, 328, 328, 330, 330, 330, 330, 330, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, 331, - 331, 331, 331, 332, 332, 332, 332, 332, 332, 332, - 332, 347, 347, 336, 336, 341, 341, 342, 342, 343, - 343, 343, 344, 344, 344, 345, 345, 338, 338, 338, - 338, 338, 338, 338, 338, 338, 340, 340, 339, 339, - 339, 350, 375, 375, 374, 374, 372, 372, 372, 372, - 372, 372, 372, 372, 359, 359, 369, 369, 369, 369, - 369, 358, 358, 354, 354, 354, 355, 355, 356, 356, - 353, 353, 357, 357, 371, 371, 370, 370, 351, 351, - 352, 352, 377, 412, 412, 412, 412, 412, 413, 413, - 378, 402, 404, 404, 404, 403, 403, 400, 401, 399, - 399, 399, 399, 399, 85, 85, 85, 292, 292, 293, - 293, 367, 367, 366, 366, 366, 368, 368, 365, 365, + 331, 331, 331, 331, 331, 332, 332, 332, 332, 332, + 332, 332, 332, 347, 347, 336, 336, 341, 341, 342, + 342, 343, 343, 343, 344, 344, 344, 345, 345, 338, + 338, 338, 338, 338, 338, 338, 338, 338, 340, 340, + 339, 339, 339, 350, 375, 375, 374, 374, 372, 372, + 372, 372, 372, 372, 372, 372, 359, 359, 369, 369, + 369, 369, 369, 358, 358, 354, 354, 354, 355, 355, + 356, 356, 353, 353, 357, 357, 371, 371, 370, 370, + 351, 351, 352, 352, 377, 412, 412, 412, 412, 412, + 413, 413, 378, 402, 404, 404, 404, 403, 403, 400, + 401, 399, 399, 399, 399, 399, 85, 85, 85, 292, + 292, 293, 293, 367, 367, 366, 366, 366, 368, 368, + 365, 365, 365, 365, 365, 365, 365, 365, 365, 365, 365, 365, 365, 365, 365, 365, 365, 365, 365, 365, 365, 365, 365, 365, 365, 365, 365, 365, 365, 365, - 365, 365, 365, 365, 365, 365, 365, 365, 365, 287, - 287, 287, 398, 398, 398, 398, 398, 398, 397, 397, - 397, 364, 364, 364, 364, 396, 396, 60, 60, 224, - 224, 415, 415, 417, 417, 417, 48, 48, 48, 48, - 48, 48, 47, 47, 47, 43, 43, 43, 43, 43, + 365, 287, 287, 287, 398, 398, 398, 398, 398, 398, + 397, 397, 397, 364, 364, 364, 364, 396, 396, 60, + 60, 224, 224, 415, 415, 417, 417, 417, 48, 48, + 48, 48, 48, 48, 47, 47, 47, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, - 43, 43, 43, 43, 43, 43, 49, 49, 44, 44, - 44, 44, 44, 44, 44, 44, 44, 44, 23, 23, + 43, 43, 43, 43, 43, 43, 43, 43, 49, 49, + 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, - 23, 23, 112, 112, 113, 113, 113, 113, 115, 115, - 115, 380, 380, 61, 61, 3, 3, 174, 176, 177, - 177, 175, 175, 175, 175, 175, 175, 63, 63, 62, - 62, 179, 178, 180, 180, 180, 1, 1, 2, 2, - 4, 4, 385, 385, 385, 385, 385, 385, 385, 385, + 23, 23, 23, 23, 112, 112, 113, 113, 113, 113, + 115, 115, 115, 380, 380, 61, 61, 3, 3, 174, + 176, 177, 177, 175, 175, 175, 175, 175, 175, 63, + 63, 62, 62, 179, 178, 180, 180, 180, 1, 1, + 2, 2, 4, 4, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, 385, - 385, 385, 385, 385, 346, 346, 346, 379, 379, 381, - 114, 114, 114, 114, 114, 114, 114, 114, 114, 114, - 118, 117, 117, 116, 119, 119, 119, 119, 119, 119, - 119, 119, 383, 383, 383, 64, 64, 384, 333, 334, - 335, 5, 6, 360, 382, 126, 126, 24, 40, 40, - 25, 25, 25, 25, 26, 26, 65, 68, 68, 66, + 385, 385, 385, 385, 385, 385, 346, 346, 346, 379, + 379, 381, 114, 114, 114, 114, 114, 114, 114, 114, + 114, 114, 118, 117, 117, 116, 119, 119, 119, 119, + 119, 119, 119, 119, 383, 383, 383, 64, 64, 384, + 333, 334, 335, 5, 6, 360, 382, 126, 126, 24, + 40, 40, 25, 25, 25, 25, 26, 26, 65, 68, + 68, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, - 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, - 66, 66, 66, 66, 66, 297, 297, 286, 286, 295, - 295, 285, 285, 311, 311, 311, 288, 288, 288, 289, - 289, 408, 408, 408, 282, 282, 67, 67, 67, 312, - 312, 312, 312, 70, 70, 418, 418, 419, 419, 420, - 420, 420, 71, 72, 72, 315, 315, 316, 316, 73, - 74, 86, 86, 86, 86, 86, 87, 87, 87, 87, - 87, 87, 111, 111, 111, 10, 10, 10, 10, 82, - 82, 82, 9, 9, 11, 69, 69, 76, 405, 405, - 406, 407, 407, 407, 407, 77, 79, 27, 27, 27, - 27, 27, 27, 136, 136, 124, 124, 124, 124, 124, - 124, 124, 124, 124, 124, 124, 124, 131, 131, 131, - 125, 125, 427, 80, 81, 81, 129, 129, 129, 122, - 122, 122, 128, 128, 128, 12, 12, 13, 268, 268, - 14, 14, 135, 135, 134, 134, 137, 137, 137, 137, - 137, 137, 137, 137, 137, 137, 137, 132, 132, 133, - 133, 133, 133, 304, 304, 304, 303, 303, 168, 168, - 170, 169, 169, 171, 171, 172, 172, 172, 172, 222, - 222, 194, 194, 261, 261, 262, 262, 260, 260, 267, - 267, 263, 263, 263, 263, 270, 270, 173, 173, 173, - 173, 181, 181, 182, 182, 183, 183, 314, 314, 309, - 309, 309, 308, 308, 187, 187, 187, 189, 188, 188, - 188, 188, 190, 190, 192, 192, 191, 191, 193, 198, - 198, 197, 197, 195, 195, 195, 195, 195, 195, 196, - 196, 196, 196, 199, 199, 146, 146, 146, 146, 146, - 146, 146, 146, 416, 416, 160, 160, 160, 160, 160, - 160, 160, 163, 163, 163, 163, 163, 163, 163, 163, - 163, 163, 163, 251, 251, 151, 151, 151, 151, 151, + 66, 66, 66, 66, 66, 66, 66, 297, 297, 286, + 286, 295, 295, 285, 285, 311, 311, 311, 288, 288, + 288, 289, 289, 408, 408, 408, 282, 282, 67, 67, + 67, 312, 312, 312, 312, 70, 70, 418, 418, 419, + 419, 420, 420, 420, 71, 72, 72, 315, 315, 316, + 316, 73, 74, 86, 86, 86, 86, 86, 87, 87, + 87, 87, 87, 87, 111, 111, 111, 10, 10, 10, + 10, 82, 82, 82, 9, 9, 11, 69, 69, 76, + 405, 405, 406, 407, 407, 407, 407, 77, 79, 27, + 27, 27, 27, 27, 27, 136, 136, 124, 124, 124, + 124, 124, 124, 124, 124, 124, 124, 124, 124, 131, + 131, 131, 125, 125, 427, 80, 81, 81, 129, 129, + 129, 122, 122, 122, 128, 128, 128, 12, 12, 13, + 268, 268, 14, 14, 135, 135, 134, 134, 137, 137, + 137, 137, 137, 137, 137, 137, 137, 137, 137, 132, + 132, 133, 133, 133, 133, 304, 304, 304, 303, 303, + 168, 168, 170, 169, 169, 171, 171, 172, 172, 172, + 172, 222, 222, 194, 194, 261, 261, 262, 262, 260, + 260, 267, 267, 263, 263, 263, 263, 270, 270, 173, + 173, 173, 173, 181, 181, 182, 182, 183, 183, 314, + 314, 309, 309, 309, 308, 308, 187, 187, 187, 189, + 188, 188, 188, 188, 190, 190, 192, 192, 191, 191, + 193, 198, 198, 197, 197, 195, 195, 195, 195, 195, + 195, 196, 196, 196, 196, 199, 199, 146, 146, 146, + 146, 146, 146, 146, 146, 416, 416, 160, 160, 160, + 160, 160, 160, 160, 163, 163, 163, 163, 163, 163, + 163, 163, 163, 163, 163, 251, 251, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, + 151, 151, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, - 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, - 154, 154, 154, 154, 154, 227, 227, 226, 226, 88, - 88, 88, 89, 89, 90, 90, 90, 90, 90, 91, - 91, 91, 91, 91, 91, 91, 93, 93, 92, 92, - 213, 213, 301, 301, 94, 95, 95, 96, 96, 99, - 99, 98, 97, 97, 103, 103, 100, 100, 102, 102, - 101, 104, 104, 105, 106, 106, 283, 283, 200, 200, - 209, 209, 209, 209, 201, 201, 202, 202, 202, 202, - 202, 202, 210, 210, 210, 221, 211, 211, 207, 207, - 205, 205, 205, 205, 205, 205, 205, 205, 205, 205, - 205, 206, 206, 206, 206, 206, 206, 206, 206, 206, + 154, 154, 154, 154, 154, 154, 154, 227, 227, 226, + 226, 88, 88, 88, 89, 89, 90, 90, 90, 90, + 90, 91, 91, 91, 91, 91, 91, 91, 93, 93, + 92, 92, 213, 213, 301, 301, 94, 95, 95, 96, + 96, 99, 99, 98, 97, 97, 103, 103, 100, 100, + 102, 102, 101, 104, 104, 105, 106, 106, 283, 283, + 200, 200, 209, 209, 209, 209, 201, 201, 202, 202, + 202, 202, 202, 202, 210, 210, 210, 221, 211, 211, + 207, 207, 205, 205, 205, 205, 205, 205, 205, 205, + 205, 205, 205, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, @@ -8684,37 +8647,37 @@ var yyR1 = [...]int{ 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, - 206, 206, 206, 206, 165, 165, 165, 165, 232, 232, - 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, - 152, 152, 152, 152, 152, 153, 153, 166, 166, 166, - 166, 167, 167, 167, 167, 167, 167, 167, 322, 322, - 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, + 206, 206, 206, 206, 206, 206, 165, 165, 165, 165, + 232, 232, 152, 152, 152, 152, 152, 152, 152, 152, + 152, 152, 152, 152, 152, 152, 152, 153, 153, 166, + 166, 166, 166, 167, 167, 167, 167, 167, 167, 167, + 322, 322, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, + 120, 120, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, - 121, 121, 121, 121, 121, 121, 121, 121, 428, 428, - 337, 337, 337, 208, 208, 208, 208, 208, 127, 127, - 127, 127, 127, 319, 319, 319, 323, 323, 323, 321, - 321, 321, 321, 321, 321, 321, 321, 321, 321, 321, - 321, 321, 321, 321, 324, 324, 230, 230, 123, 123, - 228, 228, 229, 231, 231, 223, 223, 223, 223, 225, - 225, 204, 204, 204, 233, 233, 325, 325, 234, 234, - 107, 108, 108, 109, 109, 235, 235, 237, 236, 236, - 238, 239, 239, 239, 240, 240, 241, 241, 241, 50, - 50, 50, 50, 50, 45, 45, 45, 45, 46, 46, - 46, 46, 138, 138, 138, 138, 140, 140, 139, 139, - 83, 83, 84, 84, 84, 144, 144, 145, 145, 145, - 142, 142, 143, 143, 258, 258, 258, 258, 258, 258, - 258, 242, 242, 242, 249, 249, 249, 245, 245, 247, - 247, 247, 248, 248, 248, 246, 255, 255, 257, 257, - 256, 256, 252, 252, 253, 253, 254, 254, 254, 250, - 250, 203, 203, 203, 203, 203, 259, 259, 259, 259, - 313, 313, 313, 271, 271, 214, 214, 215, 215, 219, - 219, 218, 218, 216, 217, 220, 220, 164, 272, 272, - 280, 277, 277, 278, 278, 305, 305, 305, 281, 281, - 294, 294, 290, 290, 291, 291, 284, 284, 296, 296, - 296, 78, 212, 212, 376, 376, 373, 300, 300, 302, - 302, 306, 306, 310, 310, 307, 307, 8, 421, 421, - 421, 298, 298, 298, 298, 298, 298, 298, 298, 298, + 428, 428, 337, 337, 337, 208, 208, 208, 208, 208, + 127, 127, 127, 127, 127, 319, 319, 319, 323, 323, + 323, 321, 321, 321, 321, 321, 321, 321, 321, 321, + 321, 321, 321, 321, 321, 321, 324, 324, 230, 230, + 123, 123, 228, 228, 229, 231, 231, 223, 223, 223, + 223, 225, 225, 204, 204, 204, 233, 233, 325, 325, + 234, 234, 107, 108, 108, 109, 109, 235, 235, 237, + 236, 236, 238, 239, 239, 239, 240, 240, 241, 241, + 241, 50, 50, 50, 50, 50, 45, 45, 45, 45, + 46, 46, 46, 46, 138, 138, 138, 138, 140, 140, + 139, 139, 83, 83, 84, 84, 84, 144, 144, 145, + 145, 145, 142, 142, 143, 143, 258, 258, 258, 258, + 258, 258, 258, 242, 242, 242, 249, 249, 249, 245, + 245, 247, 247, 247, 248, 248, 248, 246, 255, 255, + 257, 257, 256, 256, 252, 252, 253, 253, 254, 254, + 254, 250, 250, 203, 203, 203, 203, 203, 259, 259, + 259, 259, 313, 313, 313, 271, 271, 214, 214, 215, + 215, 219, 219, 218, 218, 216, 217, 220, 220, 164, + 272, 272, 280, 277, 277, 278, 278, 305, 305, 305, + 281, 281, 294, 294, 290, 290, 291, 291, 284, 284, + 296, 296, 296, 78, 212, 212, 376, 376, 373, 300, + 300, 302, 302, 306, 306, 310, 310, 307, 307, 8, + 421, 421, 421, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, @@ -8729,7 +8692,7 @@ var yyR1 = [...]int{ 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, 298, - 298, 298, 298, 298, 299, 299, 299, 299, 299, 299, + 298, 298, 298, 298, 298, 298, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, @@ -8777,8 +8740,8 @@ var yyR1 = [...]int{ 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, 299, - 299, 299, 299, 299, 299, 299, 424, 425, 317, 318, - 318, 318, + 299, 299, 299, 299, 299, 299, 299, 299, 424, 425, + 317, 318, 318, 318, } var yyR2 = [...]int{ @@ -8803,151 +8766,152 @@ var yyR2 = [...]int{ 1, 1, 3, 4, 3, 3, 3, 5, 10, 0, 2, 0, 2, 3, 5, 3, 4, 2, 3, 2, 3, 3, 3, 3, 2, 2, 4, 4, 1, 1, - 1, 1, 1, 0, 2, 2, 3, 3, 2, 2, - 2, 1, 1, 2, 2, 2, 2, 2, 2, 1, - 1, 1, 1, 2, 2, 1, 1, 1, 1, 1, - 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, - 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 0, 2, 2, 3, 3, 2, + 3, 2, 2, 1, 1, 2, 2, 2, 2, 2, + 2, 1, 1, 1, 1, 2, 2, 1, 1, 1, + 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, + 2, 2, 2, 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, 2, - 1, 1, 2, 1, 1, 2, 1, 2, 1, 3, - 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, - 2, 1, 2, 2, 2, 2, 3, 3, 3, 2, - 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, - 5, 2, 5, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 3, 0, 3, 0, 5, 1, 3, 0, - 3, 5, 0, 1, 1, 0, 1, 0, 3, 3, - 2, 2, 2, 1, 2, 2, 0, 1, 0, 2, - 2, 5, 0, 1, 1, 2, 1, 3, 2, 1, - 1, 3, 3, 3, 0, 1, 4, 3, 3, 4, - 2, 0, 2, 1, 1, 1, 1, 1, 0, 1, - 1, 1, 0, 1, 1, 3, 3, 4, 3, 1, - 3, 1, 7, 6, 7, 7, 8, 8, 0, 1, - 5, 2, 1, 1, 1, 0, 1, 3, 3, 1, - 1, 2, 2, 2, 0, 1, 1, 1, 2, 0, - 1, 0, 1, 1, 3, 2, 1, 2, 3, 3, - 3, 4, 4, 3, 3, 3, 3, 4, 4, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 4, 5, 0, - 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 3, 1, 1, 1, 0, 1, 0, 1, 0, - 2, 0, 2, 0, 2, 2, 0, 1, 5, 1, - 3, 7, 1, 3, 3, 1, 2, 2, 2, 5, - 5, 5, 6, 8, 5, 5, 4, 4, 4, 6, - 5, 5, 5, 2, 2, 2, 2, 3, 3, 3, - 4, 3, 3, 1, 3, 5, 1, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 2, 2, 3, 4, - 4, 2, 11, 3, 6, 8, 6, 6, 6, 13, - 8, 6, 6, 10, 7, 5, 5, 5, 5, 7, - 5, 5, 5, 5, 5, 7, 7, 5, 5, 5, - 5, 6, 0, 6, 5, 6, 4, 5, 0, 8, - 9, 0, 3, 0, 1, 0, 3, 8, 4, 1, - 3, 3, 6, 7, 7, 8, 4, 0, 1, 0, - 1, 3, 3, 1, 1, 2, 1, 1, 0, 2, - 0, 2, 5, 3, 7, 4, 4, 4, 4, 3, - 3, 3, 7, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 2, 0, 2, 2, 1, 3, 2, - 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 3, 1, 3, 3, 0, 2, 2, 2, 2, 2, - 2, 2, 4, 4, 3, 0, 1, 4, 3, 4, - 4, 3, 3, 3, 2, 1, 3, 3, 3, 5, - 7, 7, 6, 5, 3, 2, 4, 5, 5, 3, - 3, 7, 3, 3, 3, 3, 4, 7, 5, 2, - 4, 4, 4, 4, 4, 5, 5, 4, 4, 4, - 4, 4, 4, 4, 4, 2, 2, 4, 4, 4, - 4, 4, 2, 3, 3, 3, 3, 3, 5, 2, - 3, 3, 2, 3, 4, 4, 4, 3, 4, 4, - 5, 3, 5, 3, 5, 0, 1, 0, 1, 0, - 1, 1, 1, 0, 2, 2, 0, 2, 2, 0, - 2, 0, 1, 1, 1, 1, 2, 1, 3, 1, - 1, 1, 1, 1, 3, 0, 1, 1, 3, 3, - 2, 2, 1, 1, 5, 0, 1, 0, 1, 2, - 3, 0, 3, 3, 3, 1, 0, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, - 1, 1, 4, 4, 4, 2, 2, 3, 1, 3, - 2, 1, 2, 1, 2, 2, 4, 3, 3, 6, - 4, 7, 6, 1, 3, 2, 2, 2, 2, 1, - 1, 1, 3, 2, 1, 1, 1, 0, 1, 1, - 0, 3, 0, 2, 0, 2, 1, 2, 2, 0, - 1, 1, 0, 1, 1, 5, 5, 4, 0, 2, - 4, 4, 0, 1, 1, 2, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, - 2, 3, 5, 0, 1, 2, 1, 1, 0, 1, - 2, 1, 3, 1, 1, 1, 4, 3, 1, 1, - 2, 3, 7, 0, 3, 0, 1, 1, 3, 1, - 3, 1, 1, 3, 3, 1, 3, 4, 4, 4, - 3, 2, 4, 0, 1, 0, 2, 0, 1, 0, - 1, 2, 1, 1, 1, 2, 2, 1, 2, 3, - 2, 3, 2, 2, 2, 1, 1, 3, 3, 0, - 1, 1, 2, 6, 5, 6, 6, 5, 5, 0, - 2, 3, 3, 0, 2, 3, 3, 3, 2, 3, - 1, 3, 6, 1, 1, 3, 4, 3, 4, 4, - 4, 1, 3, 4, 5, 6, 3, 4, 5, 6, - 3, 4, 1, 1, 1, 3, 3, 3, 3, 3, - 3, 5, 5, 3, 3, 3, 3, 3, 3, 1, - 1, 1, 1, 1, 3, 1, 1, 1, 2, 2, - 2, 2, 1, 1, 2, 7, 7, 6, 6, 2, - 2, 5, 6, 3, 3, 1, 3, 1, 3, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, - 2, 2, 2, 4, 2, 4, 0, 1, 2, 5, - 0, 3, 0, 1, 4, 4, 2, 1, 0, 0, - 1, 1, 2, 2, 1, 1, 2, 2, 0, 1, - 1, 1, 1, 5, 1, 3, 0, 3, 1, 1, - 1, 2, 1, 2, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 3, 4, 6, - 4, 4, 8, 8, 6, 8, 6, 5, 4, 10, - 2, 2, 1, 2, 2, 2, 2, 2, 5, 6, - 6, 6, 6, 6, 5, 5, 5, 5, 5, 5, - 5, 5, 5, 5, 8, 4, 8, 8, 6, 5, - 4, 4, 4, 5, 7, 4, 4, 7, 4, 4, - 6, 6, 6, 8, 6, 6, 4, 4, 3, 4, - 6, 6, 4, 4, 6, 4, 6, 4, 4, 4, - 4, 4, 4, 6, 4, 6, 4, 4, 4, 6, - 4, 6, 4, 4, 6, 4, 6, 4, 6, 8, - 4, 6, 8, 4, 6, 8, 4, 6, 8, 4, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 2, 1, 1, 2, 1, 1, 2, 1, 2, + 1, 3, 1, 1, 1, 2, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, + 2, 2, 2, 1, 2, 2, 2, 2, 3, 3, + 3, 2, 2, 2, 2, 2, 2, 1, 1, 1, + 1, 1, 5, 2, 5, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 3, 0, 3, 0, 5, 1, + 3, 0, 3, 5, 0, 1, 1, 0, 1, 0, + 3, 3, 2, 2, 2, 1, 2, 2, 0, 1, + 0, 2, 2, 5, 0, 1, 1, 2, 1, 3, + 2, 1, 1, 3, 3, 3, 0, 1, 4, 3, + 3, 4, 2, 0, 2, 1, 1, 1, 1, 1, + 0, 1, 1, 1, 0, 1, 1, 3, 3, 4, + 3, 1, 3, 1, 7, 6, 7, 7, 8, 8, + 0, 1, 5, 2, 1, 1, 1, 0, 1, 3, + 3, 1, 1, 2, 2, 2, 0, 1, 1, 1, + 2, 0, 1, 0, 1, 1, 3, 2, 1, 2, + 3, 3, 3, 4, 4, 3, 3, 3, 3, 4, + 4, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, + 5, 0, 2, 2, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 3, 1, 1, 1, 0, 1, 0, + 1, 0, 2, 0, 2, 0, 2, 2, 0, 1, + 5, 1, 3, 7, 1, 3, 3, 1, 2, 2, + 2, 5, 5, 5, 6, 8, 5, 5, 4, 4, + 4, 6, 5, 5, 5, 2, 2, 2, 2, 3, + 3, 3, 4, 3, 3, 1, 3, 5, 1, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, + 3, 4, 4, 2, 11, 3, 6, 8, 6, 6, + 6, 13, 8, 6, 6, 10, 7, 5, 5, 5, + 5, 7, 5, 5, 5, 5, 5, 7, 7, 5, + 5, 5, 5, 6, 0, 6, 5, 6, 4, 5, + 0, 8, 9, 0, 3, 0, 1, 0, 3, 8, + 4, 1, 3, 3, 6, 7, 7, 8, 4, 0, + 1, 0, 1, 3, 3, 1, 1, 2, 1, 1, + 0, 2, 0, 2, 5, 3, 7, 4, 4, 4, + 4, 3, 3, 3, 7, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 2, 0, 2, 2, 1, + 3, 2, 0, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 3, 1, 3, 3, 0, 2, 2, 2, + 2, 2, 2, 2, 4, 4, 3, 0, 1, 4, + 3, 4, 4, 3, 3, 3, 2, 1, 3, 3, + 3, 5, 7, 7, 6, 5, 3, 2, 4, 5, + 5, 3, 3, 7, 3, 3, 3, 3, 4, 7, + 5, 2, 4, 4, 4, 4, 4, 5, 5, 4, + 4, 4, 4, 4, 4, 4, 4, 2, 2, 4, + 4, 4, 4, 4, 2, 3, 3, 3, 3, 3, + 5, 2, 3, 3, 2, 3, 4, 4, 4, 3, + 4, 4, 5, 3, 5, 3, 5, 0, 1, 0, + 1, 0, 1, 1, 1, 0, 2, 2, 0, 2, + 2, 0, 2, 0, 1, 1, 1, 1, 2, 1, + 3, 1, 1, 1, 1, 1, 3, 0, 1, 1, + 3, 3, 2, 2, 1, 1, 5, 0, 1, 0, + 1, 2, 3, 0, 3, 3, 3, 1, 0, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 0, 1, 1, 4, 4, 4, 2, 2, 3, + 1, 3, 2, 1, 2, 1, 2, 2, 4, 3, + 3, 6, 4, 7, 6, 1, 3, 2, 2, 2, + 2, 1, 1, 1, 3, 2, 1, 1, 1, 0, + 1, 1, 0, 3, 0, 2, 0, 2, 1, 2, + 2, 0, 1, 1, 0, 1, 1, 5, 5, 4, + 0, 2, 4, 4, 0, 1, 1, 2, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 3, 1, 2, 3, 5, 0, 1, 2, 1, 1, + 0, 1, 2, 1, 3, 1, 1, 1, 4, 3, + 1, 1, 2, 3, 7, 0, 3, 0, 1, 1, + 3, 1, 3, 1, 1, 3, 3, 1, 3, 4, + 4, 4, 3, 2, 4, 0, 1, 0, 2, 0, + 1, 0, 1, 2, 1, 1, 1, 2, 2, 1, + 2, 3, 2, 3, 2, 2, 2, 1, 1, 3, + 3, 0, 1, 1, 2, 6, 5, 6, 6, 5, + 5, 0, 2, 3, 3, 0, 2, 3, 3, 3, + 2, 3, 1, 3, 6, 1, 1, 3, 4, 3, + 4, 4, 4, 1, 3, 4, 5, 6, 3, 4, + 5, 6, 3, 4, 1, 1, 1, 3, 3, 3, + 3, 3, 3, 5, 5, 3, 3, 3, 3, 3, + 3, 1, 1, 1, 1, 1, 3, 1, 1, 1, + 2, 2, 2, 2, 1, 1, 2, 7, 7, 6, + 6, 2, 2, 5, 6, 3, 3, 1, 3, 1, + 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 2, 2, 2, 2, 4, 2, 4, 0, 1, + 2, 5, 0, 3, 0, 1, 4, 4, 2, 1, + 0, 0, 1, 1, 2, 2, 1, 1, 2, 2, + 0, 1, 1, 1, 1, 5, 1, 3, 0, 3, + 1, 1, 1, 2, 1, 2, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, + 4, 6, 4, 4, 8, 8, 6, 8, 6, 5, + 4, 10, 2, 2, 1, 2, 2, 2, 2, 2, + 5, 6, 6, 6, 6, 6, 5, 5, 5, 5, + 5, 5, 5, 5, 5, 5, 8, 4, 8, 8, + 6, 5, 4, 4, 4, 5, 7, 4, 4, 7, + 4, 4, 6, 6, 6, 8, 6, 6, 4, 4, + 3, 4, 6, 6, 4, 4, 6, 4, 6, 4, + 4, 4, 4, 4, 4, 6, 4, 6, 4, 4, + 4, 6, 4, 6, 4, 4, 6, 4, 6, 4, 6, 8, 4, 6, 8, 4, 6, 8, 4, 6, 8, 4, 6, 8, 4, 6, 8, 4, 6, 8, 4, 6, 8, 4, 6, 8, 4, 6, 8, 4, - 6, 8, 4, 6, 8, 4, 4, 4, 6, 4, - 6, 4, 8, 6, 4, 4, 6, 4, 6, 8, - 4, 6, 8, 4, 4, 6, 8, 6, 4, 6, - 6, 8, 10, 7, 8, 8, 9, 4, 4, 4, - 4, 6, 6, 6, 6, 6, 6, 6, 6, 6, - 6, 4, 4, 4, 4, 4, 4, 6, 4, 6, - 5, 9, 6, 9, 8, 6, 8, 8, 8, 6, - 1, 1, 1, 1, 1, 1, 1, 1, 0, 2, - 6, 8, 10, 12, 14, 6, 8, 8, 10, 12, - 14, 6, 8, 10, 12, 6, 8, 4, 4, 3, - 4, 6, 6, 4, 6, 4, 6, 8, 0, 2, + 6, 8, 4, 6, 8, 4, 6, 8, 4, 6, + 8, 4, 6, 8, 4, 6, 8, 4, 4, 4, + 6, 4, 6, 4, 8, 6, 4, 4, 6, 4, + 6, 8, 4, 6, 8, 4, 4, 6, 8, 6, + 4, 6, 6, 8, 10, 7, 8, 8, 9, 4, + 4, 4, 4, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 4, 4, 4, 4, 4, 4, 6, + 4, 6, 5, 9, 6, 9, 8, 6, 8, 8, + 8, 6, 1, 1, 1, 1, 1, 1, 1, 1, + 0, 2, 6, 8, 10, 12, 14, 6, 8, 8, + 10, 12, 14, 6, 8, 10, 12, 6, 8, 4, + 4, 3, 4, 6, 6, 4, 6, 4, 6, 8, + 0, 2, 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, 0, 2, - 0, 2, 3, 4, 4, 4, 4, 4, 0, 3, - 4, 7, 3, 1, 1, 1, 0, 5, 5, 2, - 3, 1, 2, 2, 1, 2, 1, 2, 2, 1, - 2, 2, 1, 1, 0, 1, 0, 1, 0, 2, - 1, 2, 4, 0, 2, 1, 1, 3, 5, 1, - 1, 1, 2, 2, 0, 4, 0, 2, 0, 2, - 2, 1, 3, 0, 1, 0, 1, 3, 1, 3, - 2, 0, 1, 1, 0, 1, 2, 4, 4, 0, - 2, 2, 1, 1, 3, 3, 3, 3, 3, 3, - 3, 3, 0, 3, 3, 3, 0, 3, 1, 1, - 0, 4, 0, 1, 1, 0, 3, 1, 3, 2, - 1, 1, 0, 1, 2, 3, 4, 2, 3, 4, - 4, 9, 3, 5, 0, 3, 3, 0, 1, 0, - 2, 2, 0, 2, 2, 2, 0, 2, 1, 2, - 3, 3, 0, 2, 1, 2, 3, 4, 3, 0, - 1, 3, 1, 6, 5, 4, 1, 3, 3, 5, - 0, 2, 5, 0, 5, 1, 3, 1, 3, 1, - 3, 1, 2, 3, 4, 1, 1, 1, 1, 3, - 3, 1, 2, 1, 1, 1, 1, 1, 1, 1, - 0, 1, 0, 2, 0, 3, 0, 1, 0, 1, - 1, 5, 0, 1, 0, 1, 2, 1, 1, 1, - 1, 1, 1, 0, 1, 1, 1, 3, 0, 1, + 0, 2, 0, 2, 3, 4, 4, 4, 4, 4, + 0, 3, 4, 7, 3, 1, 1, 1, 0, 5, + 5, 2, 3, 1, 2, 2, 1, 2, 1, 2, + 2, 1, 2, 2, 1, 1, 0, 1, 0, 1, + 0, 2, 1, 2, 4, 0, 2, 1, 1, 3, + 5, 1, 1, 1, 2, 2, 0, 4, 0, 2, + 0, 2, 2, 1, 3, 0, 1, 0, 1, 3, + 1, 3, 2, 0, 1, 1, 0, 1, 2, 4, + 4, 0, 2, 2, 1, 1, 3, 3, 3, 3, + 3, 3, 3, 3, 0, 3, 3, 3, 0, 3, + 1, 1, 0, 4, 0, 1, 1, 0, 3, 1, + 3, 2, 1, 1, 0, 1, 2, 3, 4, 2, + 3, 4, 4, 9, 3, 5, 0, 3, 3, 0, + 1, 0, 2, 2, 0, 2, 2, 2, 0, 2, + 1, 2, 3, 3, 0, 2, 1, 2, 3, 4, + 3, 0, 1, 3, 1, 6, 5, 4, 1, 3, + 3, 5, 0, 2, 5, 0, 5, 1, 3, 1, + 3, 1, 3, 1, 2, 3, 4, 1, 1, 1, + 1, 3, 3, 1, 2, 1, 1, 1, 1, 1, + 1, 1, 0, 1, 0, 2, 0, 3, 0, 1, + 0, 1, 1, 5, 0, 1, 0, 1, 2, 1, + 1, 1, 1, 1, 1, 0, 1, 1, 1, 3, + 0, 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, @@ -9011,8 +8975,7 @@ var yyR2 = [...]int{ 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, 0, 0, - 1, 1, + 0, 0, 1, 1, } var yyChk = [...]int{ @@ -9377,236 +9340,236 @@ var yyChk = [...]int{ 236, -425, -199, -182, -181, 85, 86, -183, 85, -181, 75, 75, -261, 96, -269, -169, -199, -199, 236, 130, -424, -150, 16, 98, 98, -392, -410, 737, 738, 34, - 105, -359, -359, 151, 151, -191, 95, -338, 98, -338, - 105, 105, 34, 91, 92, 93, 34, 87, 88, 89, - -191, -191, -191, -191, -380, 95, 23, -146, 95, 165, - 97, -260, -260, 291, 176, -359, 731, 297, 297, -359, - -359, -359, -117, -116, 753, 97, -425, 96, -346, 597, - 600, -146, -156, -156, -261, 97, -388, 597, -393, -300, - -300, -300, -300, 105, 107, -425, 595, 82, 598, -425, - -338, -146, -146, -146, -146, -240, 98, -146, -146, 105, - 105, -96, -425, -146, -146, -146, -146, -146, -146, -146, + 739, 105, -359, -359, 151, 151, -191, 95, -338, 98, + -338, 105, 105, 34, 91, 92, 93, 34, 87, 88, + 89, -191, -191, -191, -191, -380, 95, 23, -146, 95, + 165, 97, -260, -260, 291, 176, -359, 731, 297, 297, + -359, -359, -359, -117, -116, 753, 97, -425, 96, -346, + 597, 600, -146, -156, -156, -261, 97, -388, 597, -393, + -300, -300, -300, -300, 105, 107, -425, 595, 82, 598, + -425, -338, -146, -146, -146, -146, -240, 98, -146, -146, + 105, 105, -96, -425, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, - -146, -146, -146, -211, -146, -425, -179, -178, -180, 714, - 130, 34, -321, -425, -213, 289, -102, -101, -100, 18, - -425, -146, -120, -120, -120, -120, -146, -146, -146, -146, - -146, -146, -424, 75, 22, 20, -263, -300, 259, -424, - -263, -424, -309, -233, -234, 21, 23, -247, 59, -245, - 58, -245, -256, 23, 23, 98, 23, 98, 151, -280, - -146, -218, -308, 63, -29, -300, -215, -300, -235, -146, - 95, -146, -159, -199, -199, -146, -206, 517, 519, 520, - 521, 518, 523, 524, 525, 526, 527, 528, 529, 530, - 531, 532, 522, 533, 494, 495, 496, 117, 119, 118, - 127, 128, 497, 498, 499, 361, 545, 546, 540, 543, - 544, 542, 541, 376, 377, 500, 563, 564, 568, 567, - 565, 566, 569, 572, 573, 574, 575, 576, 577, 579, - 578, 570, 571, 548, 547, 549, 550, 551, 552, 553, - 554, 556, 555, 557, 558, 559, 560, 561, 562, 580, - 581, 582, 583, 584, 586, 585, 590, 589, 587, 588, - 592, 591, 501, 502, 120, 121, 122, 123, 124, 125, - 126, 503, 506, 504, 507, 508, 509, 514, 515, 510, - 511, 512, 513, 516, 387, 385, 386, 382, 381, 380, - 441, 446, 447, 449, 534, 535, 536, 537, 538, 539, - 695, 696, 697, 698, 699, 700, 701, 702, 98, 98, - 95, -146, 97, 97, -261, -379, -61, 97, -262, -260, - 105, 97, 292, -216, -424, 98, -359, -359, -359, 105, - 105, -308, -425, 96, -300, -412, -381, 601, 601, -425, - 28, -387, -386, -302, 95, 86, 68, 596, 599, -425, - -425, -425, 96, -425, -425, -425, 97, 97, -425, -425, + -146, -146, -146, -146, -211, -146, -425, -179, -178, -180, + 714, 130, 34, -321, -425, -213, 289, -102, -101, -100, + 18, -425, -146, -120, -120, -120, -120, -146, -146, -146, + -146, -146, -146, -424, 75, 22, 20, -263, -300, 259, + -424, -263, -424, -309, -233, -234, 21, 23, -247, 59, + -245, 58, -245, -256, 23, 23, 98, 23, 98, 151, + -280, -146, -218, -308, 63, -29, -300, -215, -300, -235, + -146, 95, -146, -159, -199, -199, -146, -206, 517, 519, + 520, 521, 518, 523, 524, 525, 526, 527, 528, 529, + 530, 531, 532, 522, 533, 494, 495, 496, 117, 119, + 118, 127, 128, 497, 498, 499, 361, 545, 546, 540, + 543, 544, 542, 541, 376, 377, 500, 563, 564, 568, + 567, 565, 566, 569, 572, 573, 574, 575, 576, 577, + 579, 578, 570, 571, 548, 547, 549, 550, 551, 552, + 553, 554, 556, 555, 557, 558, 559, 560, 561, 562, + 580, 581, 582, 583, 584, 586, 585, 590, 589, 587, + 588, 592, 591, 501, 502, 120, 121, 122, 123, 124, + 125, 126, 503, 506, 504, 507, 508, 509, 514, 515, + 510, 511, 512, 513, 516, 387, 385, 386, 382, 381, + 380, 441, 446, 447, 449, 534, 535, 536, 537, 538, + 539, 695, 696, 697, 698, 699, 700, 701, 702, 98, + 98, 95, -146, 97, 97, -261, -379, -61, 97, -262, + -260, 105, 97, 292, -216, -424, 98, -359, -359, -359, + 105, 105, -308, -425, 96, -300, -412, -381, 601, 601, + -425, 28, -387, -386, -302, 95, 86, 68, 596, 599, + -425, -425, -425, 96, -425, -425, -425, 97, 97, -425, -425, -425, -425, -425, -425, -425, -425, -425, -425, -425, -425, -425, -425, -425, -425, -425, -425, -425, -425, -425, - 96, -425, -178, -180, -425, 85, -159, -235, 23, -99, - 314, 316, -99, -425, -425, -425, -425, -425, 96, -425, - -425, 96, -425, 96, -425, -425, -263, -425, 23, 23, - 96, -425, -263, -425, -263, -198, -234, -109, -108, -107, - 628, -146, -211, -248, 60, 85, 134, 98, 98, 98, - 16, -424, -215, 236, -313, -240, -260, -176, 401, -235, - -425, -260, 97, 28, 97, 755, 151, 97, -216, -126, - -424, 288, -308, 98, 98, -116, -119, -29, 96, 165, - -260, -191, 68, -146, -211, -425, 85, 609, 714, -93, - -92, -89, 725, 751, -211, -95, -95, -146, -146, -146, - -425, -300, 259, -425, -425, -109, 96, -106, -105, -300, - -325, 597, 85, 134, -272, -260, -313, -300, 97, -425, - -424, -240, 97, -244, -29, 95, -3, 288, -333, -384, - -334, -335, -5, -6, -360, -83, 597, -386, -364, -306, - -302, 98, 105, 97, 597, -425, -425, -91, 159, 723, - 687, -156, 235, -425, 96, -425, 96, -425, 96, -107, - 96, 28, 602, -425, -309, -177, -175, -300, 651, -403, - -402, 593, -413, -409, 130, 157, 110, -411, 689, 645, - 140, 141, -83, -146, 95, -425, -84, 303, 710, 236, - -394, 598, -91, 724, 665, 640, 665, 640, -151, -146, - -146, -146, -105, -424, -425, 96, 26, -326, -63, 662, - -400, -401, 85, -404, 407, 661, 682, 130, 98, 97, - -260, 264, -307, -388, 599, 156, -120, -425, 96, -425, - 96, -425, -94, -175, 658, -339, -159, -401, 85, -400, - 85, 17, 16, -4, 754, 97, 305, -91, 665, 640, - -146, -146, -425, -62, 29, -176, -399, 272, 267, 270, - 35, -399, 105, -4, -425, -425, 662, 266, 34, 130, - -159, -179, -178, -178, + -425, 96, -425, -178, -180, -425, 85, -159, -235, 23, + -99, 314, 316, -99, -425, -425, -425, -425, -425, 96, + -425, -425, 96, -425, 96, -425, -425, -263, -425, 23, + 23, 96, -425, -263, -425, -263, -198, -234, -109, -108, + -107, 628, -146, -211, -248, 60, 85, 134, 98, 98, + 98, 16, -424, -215, 236, -313, -240, -260, -176, 401, + -235, -425, -260, 97, 28, 97, 755, 151, 97, -216, + -126, -424, 288, -308, 98, 98, -116, -119, -29, 96, + 165, -260, -191, 68, -146, -211, -425, 85, 609, 714, + -93, -92, -89, 725, 751, -211, -95, -95, -146, -146, + -146, -425, -300, 259, -425, -425, -109, 96, -106, -105, + -300, -325, 597, 85, 134, -272, -260, -313, -300, 97, + -425, -424, -240, 97, -244, -29, 95, -3, 288, -333, + -384, -334, -335, -5, -6, -360, -83, 597, -386, -364, + -306, -302, 98, 105, 97, 597, -425, -425, -91, 159, + 723, 687, -156, 235, -425, 96, -425, 96, -425, 96, + -107, 96, 28, 602, -425, -309, -177, -175, -300, 651, + -403, -402, 593, -413, -409, 130, 157, 110, -411, 684, + 689, 645, 140, 141, -83, -146, 95, -425, -84, 303, + 710, 236, -394, 598, -91, 724, 665, 640, 665, 640, + -151, -146, -146, -146, -105, -424, -425, 96, 26, -326, + -63, 662, -400, -401, 85, -404, 407, 661, 682, 130, + 98, 105, 97, -260, 264, -307, -388, 599, 156, -120, + -425, 96, -425, 96, -425, -94, -175, 658, -339, -159, + -401, 85, -400, 85, 17, 16, -4, 754, 97, 305, + -91, 665, 640, -146, -146, -425, -62, 29, -176, -399, + 272, 267, 270, 35, -399, 105, -4, -425, -425, 662, + 266, 34, 130, -159, -179, -178, -178, } var yyDef = [...]int{ - 892, -2, -2, 894, 2, 4, 5, 6, 7, 8, + 894, -2, -2, 896, 2, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 70, 72, 73, 892, 892, 892, 0, 892, 0, - 0, 892, -2, -2, 892, 1653, 0, 892, 0, 887, - 0, -2, 807, 813, 0, 822, -2, 0, 0, 892, - 892, 2298, 2298, 887, 0, 0, 0, 0, 0, 892, - 892, 892, 892, 1658, 1505, 50, 892, 0, 88, 89, - 842, 843, 844, 65, 0, 2296, 85, 892, 893, 1, - 3, 71, 75, 0, 0, 0, 58, 1514, 0, 78, - 0, 0, 896, 0, 0, 1636, 892, 892, 0, 129, + 39, 70, 72, 73, 894, 894, 894, 0, 894, 0, + 0, 894, -2, -2, 894, 1655, 0, 894, 0, 889, + 0, -2, 809, 815, 0, 824, -2, 0, 0, 894, + 894, 2300, 2300, 889, 0, 0, 0, 0, 0, 894, + 894, 894, 894, 1660, 1507, 50, 894, 0, 88, 89, + 844, 845, 846, 65, 0, 2298, 85, 894, 895, 1, + 3, 71, 75, 0, 0, 0, 58, 1516, 0, 78, + 0, 0, 898, 0, 0, 1638, 894, 894, 0, 129, 130, 0, 0, 0, -2, 133, -2, 162, 163, 164, - 0, 169, 612, 529, 581, 527, 566, -2, 515, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 532, 404, 404, 0, 0, -2, 515, 515, 515, - 1638, 0, 0, 0, 563, 466, 404, 404, 404, 0, - 404, 404, 404, 404, 0, 0, 404, 404, 404, 404, - 404, 404, 404, 404, 404, 404, 404, 404, 404, 404, - 404, 404, 404, 1532, 168, 1654, 1651, 1652, 1814, 1815, - 1816, 1817, 1818, 1819, 1820, 1821, 1822, 1823, 1824, 1825, - 1826, 1827, 1828, 1829, 1830, 1831, 1832, 1833, 1834, 1835, - 1836, 1837, 1838, 1839, 1840, 1841, 1842, 1843, 1844, 1845, - 1846, 1847, 1848, 1849, 1850, 1851, 1852, 1853, 1854, 1855, - 1856, 1857, 1858, 1859, 1860, 1861, 1862, 1863, 1864, 1865, - 1866, 1867, 1868, 1869, 1870, 1871, 1872, 1873, 1874, 1875, - 1876, 1877, 1878, 1879, 1880, 1881, 1882, 1883, 1884, 1885, - 1886, 1887, 1888, 1889, 1890, 1891, 1892, 1893, 1894, 1895, - 1896, 1897, 1898, 1899, 1900, 1901, 1902, 1903, 1904, 1905, - 1906, 1907, 1908, 1909, 1910, 1911, 1912, 1913, 1914, 1915, - 1916, 1917, 1918, 1919, 1920, 1921, 1922, 1923, 1924, 1925, - 1926, 1927, 1928, 1929, 1930, 1931, 1932, 1933, 1934, 1935, - 1936, 1937, 1938, 1939, 1940, 1941, 1942, 1943, 1944, 1945, - 1946, 1947, 1948, 1949, 1950, 1951, 1952, 1953, 1954, 1955, - 1956, 1957, 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, - 1966, 1967, 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, - 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, - 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, - 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, - 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, - 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023, 2024, 2025, - 2026, 2027, 2028, 2029, 2030, 2031, 2032, 2033, 2034, 2035, - 2036, 2037, 2038, 2039, 2040, 2041, 2042, 2043, 2044, 2045, - 2046, 2047, 2048, 2049, 2050, 2051, 2052, 2053, 2054, 2055, - 2056, 2057, 2058, 2059, 2060, 2061, 2062, 2063, 2064, 2065, - 2066, 2067, 2068, 2069, 2070, 2071, 2072, 2073, 2074, 2075, - 2076, 2077, 2078, 2079, 2080, 2081, 2082, 2083, 2084, 2085, - 2086, 2087, 2088, 2089, 2090, 2091, 2092, 2093, 2094, 2095, - 2096, 2097, 2098, 2099, 2100, 2101, 2102, 2103, 2104, 2105, - 2106, 2107, 2108, 2109, 2110, 2111, 2112, 2113, 2114, 2115, - 2116, 2117, 2118, 2119, 2120, 2121, 2122, 2123, 2124, 2125, - 2126, 2127, 2128, 2129, 2130, 2131, 2132, 2133, 2134, 2135, - 2136, 2137, 2138, 2139, 2140, 2141, 2142, 2143, 2144, 2145, - 2146, 2147, 2148, 2149, 2150, 2151, 2152, 2153, 2154, 2155, - 2156, 2157, 2158, 2159, 2160, 2161, 2162, 2163, 2164, 2165, - 2166, 2167, 2168, 2169, 2170, 2171, 2172, 2173, 2174, 2175, - 2176, 2177, 2178, 2179, 2180, 2181, 2182, 2183, 2184, 2185, - 2186, 2187, 2188, 2189, 2190, 2191, 2192, 2193, 2194, 2195, - 2196, 2197, 2198, 2199, 2200, 2201, 2202, 2203, 2204, 2205, - 2206, 2207, 2208, 2209, 2210, 2211, 2212, 2213, 2214, 2215, - 2216, 2217, 2218, 2219, 2220, 2221, 2222, 2223, 2224, 2225, - 2226, 2227, 2228, 2229, 2230, 2231, 2232, 2233, 2234, 2235, - 2236, 2237, 2238, 2239, 2240, 2241, 2242, 2243, 2244, 2245, - 2246, 2247, 2248, 2249, 2250, 2251, 2252, 2253, 2254, 2255, - 2256, 2257, 2258, 2259, 2260, 2261, 2262, 2263, 2264, 2265, - 2266, 2267, 2268, 2269, 2270, 2271, 2272, 2273, 2274, 2275, - 2276, 2277, 2278, 2279, 2280, 2281, 2282, 2283, 2284, 2285, - 2286, 2287, 2288, 2289, 2290, 2291, 2292, 2293, 2294, 2295, - 0, 1630, 0, 725, 996, 0, 888, 889, 0, 796, - 796, 0, 796, 796, 796, 796, 0, 0, 0, 739, - 0, 0, 0, 0, 793, 0, 755, 756, 0, 793, - 0, 762, 799, 0, 0, 769, 796, 796, 772, 2299, - 0, 2299, 2299, 0, 0, 1621, 0, 790, 788, 802, - 803, 42, 806, 809, 810, 811, 812, 815, 0, 826, - 829, 1647, 1648, 0, 831, 836, 855, 856, 0, 45, - 1156, 0, 1020, 0, 1031, -2, 1042, 1059, 1060, 1061, - 1062, 1063, 1065, 1066, 1067, 0, 0, 0, 0, 1072, - 1073, 0, 0, 0, 0, 0, 1136, 0, 0, 0, - 0, 2018, 1476, 0, 0, 1438, 1438, 1172, 1438, 1438, - 1440, 1440, 1440, 1867, 2010, 2019, 2200, 1828, 1834, 1835, - 1836, 2146, 2147, 2148, 2149, 2242, 2243, 2247, 1931, 1823, - 2214, 2215, 0, 2295, 1970, 1978, 1979, 1955, 1964, 2003, - 2108, 2226, 1846, 1998, 2070, 1928, 1950, 1951, 2089, 2090, - 1974, 1975, 1954, 2152, 2154, 2170, 2171, 2156, 2158, 2167, - 2173, 2178, 2157, 2169, 2174, 2187, 2191, 2194, 2195, 2196, - 2164, 2162, 2175, 2179, 2181, 2183, 2189, 2192, 2165, 2163, - 2176, 2180, 2182, 2184, 2190, 2193, 2151, 2155, 2159, 2168, - 2186, 2166, 2185, 2160, 2172, 2177, 2188, 2161, 2153, 1968, - 1971, 1958, 1959, 1961, 1963, 1969, 1976, 1982, 1960, 1981, - 1980, 0, 1956, 1957, 1962, 1973, 1977, 1965, 1966, 1967, - 1972, 1983, 2025, 2024, 2023, 2069, 1994, 2068, 0, 0, - 0, 0, 0, 1817, 1873, 1874, 2197, 1360, 1361, 1362, - 1363, 0, 0, 0, 0, 0, 0, 0, 293, 294, - 1489, 1490, 44, 1155, 1617, 1440, 1440, 1440, 1440, 1440, - 1440, 1094, 1095, 1096, 1097, 1098, 1124, 1125, 1131, 1132, - 2084, 2085, 2086, 2087, 1911, 2237, 1920, 1921, 2065, 2066, - 1933, 1934, 2269, 2270, -2, -2, -2, 235, 236, 237, - 238, 239, 240, 241, 242, 0, 1872, 2212, 2213, 231, - 0, 1615, 1616, 298, 295, 296, 297, 1138, 1139, 251, - 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, - 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, - 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, - 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, - 292, 0, 300, 301, 2298, 0, 865, 0, 0, 0, - 0, 0, 0, 1659, 1660, 1514, 0, 1506, 1505, 63, - 0, 892, -2, 0, 0, 0, 0, 47, 0, 52, - 953, 0, 895, 77, 76, 1554, 1557, 0, 0, 0, - 59, 1515, 67, 69, 1516, 0, 897, 898, 0, 929, - 933, 0, 0, 0, 1637, 1636, 1636, 105, 0, 0, - 106, 126, 127, 128, 0, 0, 112, 113, 1623, 1624, - 43, 0, 0, 180, 181, 0, 1112, 431, 0, 176, - 0, 424, 363, 0, 1532, 0, 0, 0, 0, 0, - 1634, 0, 1631, 157, 158, 165, 166, 167, 404, 404, - 404, 578, 0, 0, 168, 168, 536, 537, 538, 0, - 0, -2, 429, 0, 516, 0, 0, 418, 418, 422, - 420, 421, 0, 0, 0, 0, 0, 0, 0, 0, - 555, 0, 556, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 673, 0, 405, 0, 576, 577, 467, 0, - 0, 0, 0, 0, 0, 0, 0, 1639, 1640, 0, - 553, 554, 0, 0, 0, 404, 404, 0, 0, 0, - 0, 404, 404, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 156, 1545, 0, 0, 0, -2, 0, 717, 0, - 0, 0, 1632, 1632, 0, 724, 0, 0, 0, 729, - 0, 0, 730, 0, 793, 793, 791, 792, 732, 733, - 734, 735, 796, 0, 0, 413, 414, 415, 793, 796, - 0, 796, 796, 796, 796, 793, 793, 793, 796, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 2299, 799, - 796, 0, 763, 0, 764, 765, 766, 767, 770, 771, - 773, 2300, 2301, 1649, 1650, 1661, 1662, 1663, 1664, 1665, - 1666, 1667, 1668, 1669, 1670, 1671, 1672, 1673, 1674, 1675, - 1676, 1677, 1678, 1679, 1680, 1681, 1682, 1683, 1684, 1685, - 1686, 1687, 1688, 1689, 1690, 1691, 1692, 1693, 1694, 1695, - 1696, 1697, 1698, 1699, 1700, 1701, 1702, 1703, 1704, 1705, - 1706, 1707, 1708, 1709, 1710, 1711, 1712, 1713, 1714, 1715, - 1716, 1717, 1718, 1719, 1720, 1721, 1722, 1723, 1724, 1725, - 1726, 1727, 1728, 1729, 1730, 1731, 1732, 1733, 1734, 1735, - 1736, 1737, 1738, 1739, 1740, 1741, 1742, 1743, 1744, 1745, - 1746, 1747, 1748, 1749, 1750, 1751, 1752, 1753, 1754, 1755, - 1756, 1757, 1758, 1759, 1760, 1761, 1762, 1763, 1764, 1765, - 1766, 1767, 1768, 1769, 1770, 1771, 1772, 1773, 1774, 1775, - 1776, 1777, 1778, 1779, 1780, 1781, 1782, 1783, 1784, 1785, - 1786, 1787, 1788, 1789, 1790, 1791, 1792, 1793, 1794, 1795, - 1796, 1797, 1798, 1799, 1800, 1801, 1802, 1803, 1804, 1805, - 1806, 1807, 1808, 1809, 1810, 1811, 1812, 1813, 2299, 2299, - 777, 781, 785, 783, 1622, 808, 814, 816, 817, 0, - 0, 827, 830, 849, 49, 1919, 835, 49, 837, 838, - 839, 840, 841, 867, 868, 873, 0, 0, 0, 0, - 879, 880, 881, 0, 0, 884, 885, 886, 0, 0, - 0, 0, 0, 1018, 0, 0, 1144, 1145, 1146, 1147, - 1148, 1149, 1150, 1151, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1043, 1044, 0, 0, 0, 1068, 1069, 1070, - 1071, 1074, 0, 1085, 0, 1087, 1485, -2, 0, 0, - 0, 1079, 1080, 0, 0, 0, 1642, 1642, 0, 0, - 0, 1477, 0, 0, 1170, 0, 1171, 1173, 1174, 1175, - 0, 1176, 1177, 902, 902, 902, 902, 902, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 902, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1642, 0, 0, 0, 0, 0, 0, 0, + 0, 169, 614, 531, 583, 529, 568, -2, 517, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 534, 406, 406, 0, 0, -2, 517, 517, 517, + 1640, 0, 0, 0, 565, 468, 406, 406, 406, 0, + 406, 406, 406, 406, 0, 0, 406, 406, 406, 406, + 406, 406, 406, 406, 406, 406, 406, 406, 406, 406, + 406, 406, 406, 1534, 168, 1656, 1653, 1654, 1816, 1817, + 1818, 1819, 1820, 1821, 1822, 1823, 1824, 1825, 1826, 1827, + 1828, 1829, 1830, 1831, 1832, 1833, 1834, 1835, 1836, 1837, + 1838, 1839, 1840, 1841, 1842, 1843, 1844, 1845, 1846, 1847, + 1848, 1849, 1850, 1851, 1852, 1853, 1854, 1855, 1856, 1857, + 1858, 1859, 1860, 1861, 1862, 1863, 1864, 1865, 1866, 1867, + 1868, 1869, 1870, 1871, 1872, 1873, 1874, 1875, 1876, 1877, + 1878, 1879, 1880, 1881, 1882, 1883, 1884, 1885, 1886, 1887, + 1888, 1889, 1890, 1891, 1892, 1893, 1894, 1895, 1896, 1897, + 1898, 1899, 1900, 1901, 1902, 1903, 1904, 1905, 1906, 1907, + 1908, 1909, 1910, 1911, 1912, 1913, 1914, 1915, 1916, 1917, + 1918, 1919, 1920, 1921, 1922, 1923, 1924, 1925, 1926, 1927, + 1928, 1929, 1930, 1931, 1932, 1933, 1934, 1935, 1936, 1937, + 1938, 1939, 1940, 1941, 1942, 1943, 1944, 1945, 1946, 1947, + 1948, 1949, 1950, 1951, 1952, 1953, 1954, 1955, 1956, 1957, + 1958, 1959, 1960, 1961, 1962, 1963, 1964, 1965, 1966, 1967, + 1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976, 1977, + 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, + 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, + 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, + 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, + 2018, 2019, 2020, 2021, 2022, 2023, 2024, 2025, 2026, 2027, + 2028, 2029, 2030, 2031, 2032, 2033, 2034, 2035, 2036, 2037, + 2038, 2039, 2040, 2041, 2042, 2043, 2044, 2045, 2046, 2047, + 2048, 2049, 2050, 2051, 2052, 2053, 2054, 2055, 2056, 2057, + 2058, 2059, 2060, 2061, 2062, 2063, 2064, 2065, 2066, 2067, + 2068, 2069, 2070, 2071, 2072, 2073, 2074, 2075, 2076, 2077, + 2078, 2079, 2080, 2081, 2082, 2083, 2084, 2085, 2086, 2087, + 2088, 2089, 2090, 2091, 2092, 2093, 2094, 2095, 2096, 2097, + 2098, 2099, 2100, 2101, 2102, 2103, 2104, 2105, 2106, 2107, + 2108, 2109, 2110, 2111, 2112, 2113, 2114, 2115, 2116, 2117, + 2118, 2119, 2120, 2121, 2122, 2123, 2124, 2125, 2126, 2127, + 2128, 2129, 2130, 2131, 2132, 2133, 2134, 2135, 2136, 2137, + 2138, 2139, 2140, 2141, 2142, 2143, 2144, 2145, 2146, 2147, + 2148, 2149, 2150, 2151, 2152, 2153, 2154, 2155, 2156, 2157, + 2158, 2159, 2160, 2161, 2162, 2163, 2164, 2165, 2166, 2167, + 2168, 2169, 2170, 2171, 2172, 2173, 2174, 2175, 2176, 2177, + 2178, 2179, 2180, 2181, 2182, 2183, 2184, 2185, 2186, 2187, + 2188, 2189, 2190, 2191, 2192, 2193, 2194, 2195, 2196, 2197, + 2198, 2199, 2200, 2201, 2202, 2203, 2204, 2205, 2206, 2207, + 2208, 2209, 2210, 2211, 2212, 2213, 2214, 2215, 2216, 2217, + 2218, 2219, 2220, 2221, 2222, 2223, 2224, 2225, 2226, 2227, + 2228, 2229, 2230, 2231, 2232, 2233, 2234, 2235, 2236, 2237, + 2238, 2239, 2240, 2241, 2242, 2243, 2244, 2245, 2246, 2247, + 2248, 2249, 2250, 2251, 2252, 2253, 2254, 2255, 2256, 2257, + 2258, 2259, 2260, 2261, 2262, 2263, 2264, 2265, 2266, 2267, + 2268, 2269, 2270, 2271, 2272, 2273, 2274, 2275, 2276, 2277, + 2278, 2279, 2280, 2281, 2282, 2283, 2284, 2285, 2286, 2287, + 2288, 2289, 2290, 2291, 2292, 2293, 2294, 2295, 2296, 2297, + 0, 1632, 0, 727, 998, 0, 890, 891, 0, 798, + 798, 0, 798, 798, 798, 798, 0, 0, 0, 741, + 0, 0, 0, 0, 795, 0, 757, 758, 0, 795, + 0, 764, 801, 0, 0, 771, 798, 798, 774, 2301, + 0, 2301, 2301, 0, 0, 1623, 0, 792, 790, 804, + 805, 42, 808, 811, 812, 813, 814, 817, 0, 828, + 831, 1649, 1650, 0, 833, 838, 857, 858, 0, 45, + 1158, 0, 1022, 0, 1033, -2, 1044, 1061, 1062, 1063, + 1064, 1065, 1067, 1068, 1069, 0, 0, 0, 0, 1074, + 1075, 0, 0, 0, 0, 0, 1138, 0, 0, 0, + 0, 2020, 1478, 0, 0, 1440, 1440, 1174, 1440, 1440, + 1442, 1442, 1442, 1869, 2012, 2021, 2202, 1830, 1836, 1837, + 1838, 2148, 2149, 2150, 2151, 2244, 2245, 2249, 1933, 1825, + 2216, 2217, 0, 2297, 1972, 1980, 1981, 1957, 1966, 2005, + 2110, 2228, 1848, 2000, 2072, 1930, 1952, 1953, 2091, 2092, + 1976, 1977, 1956, 2154, 2156, 2172, 2173, 2158, 2160, 2169, + 2175, 2180, 2159, 2171, 2176, 2189, 2193, 2196, 2197, 2198, + 2166, 2164, 2177, 2181, 2183, 2185, 2191, 2194, 2167, 2165, + 2178, 2182, 2184, 2186, 2192, 2195, 2153, 2157, 2161, 2170, + 2188, 2168, 2187, 2162, 2174, 2179, 2190, 2163, 2155, 1970, + 1973, 1960, 1961, 1963, 1965, 1971, 1978, 1984, 1962, 1983, + 1982, 0, 1958, 1959, 1964, 1975, 1979, 1967, 1968, 1969, + 1974, 1985, 2027, 2026, 2025, 2071, 1996, 2070, 0, 0, + 0, 0, 0, 1819, 1875, 1876, 2199, 1362, 1363, 1364, + 1365, 0, 0, 0, 0, 0, 0, 0, 295, 296, + 1491, 1492, 44, 1157, 1619, 1442, 1442, 1442, 1442, 1442, + 1442, 1096, 1097, 1098, 1099, 1100, 1126, 1127, 1133, 1134, + 2086, 2087, 2088, 2089, 1913, 2239, 1922, 1923, 2067, 2068, + 1935, 1936, 2271, 2272, -2, -2, -2, 237, 238, 239, + 240, 241, 242, 243, 244, 0, 1874, 2214, 2215, 233, + 0, 1617, 1618, 300, 297, 298, 299, 1140, 1141, 253, + 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, + 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, + 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, + 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, + 294, 0, 302, 303, 2300, 0, 867, 0, 0, 0, + 0, 0, 0, 1661, 1662, 1516, 0, 1508, 1507, 63, + 0, 894, -2, 0, 0, 0, 0, 47, 0, 52, + 955, 0, 897, 77, 76, 1556, 1559, 0, 0, 0, + 59, 1517, 67, 69, 1518, 0, 899, 900, 0, 931, + 935, 0, 0, 0, 1639, 1638, 1638, 105, 0, 0, + 106, 126, 127, 128, 0, 0, 112, 113, 1625, 1626, + 43, 0, 0, 180, 181, 0, 1114, 433, 0, 176, + 0, 426, 365, 0, 1534, 0, 0, 0, 0, 0, + 1636, 0, 1633, 157, 158, 165, 166, 167, 406, 406, + 406, 580, 0, 0, 168, 168, 538, 539, 540, 0, + 0, -2, 431, 0, 518, 0, 0, 420, 420, 424, + 422, 423, 0, 0, 0, 0, 0, 0, 0, 0, + 557, 0, 558, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 675, 0, 407, 0, 578, 579, 469, 0, + 0, 0, 0, 0, 0, 0, 0, 1641, 1642, 0, + 555, 556, 0, 0, 0, 406, 406, 0, 0, 0, + 0, 406, 406, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 156, 1547, 0, 0, 0, -2, 0, 719, 0, + 0, 0, 1634, 1634, 0, 726, 0, 0, 0, 731, + 0, 0, 732, 0, 795, 795, 793, 794, 734, 735, + 736, 737, 798, 0, 0, 415, 416, 417, 795, 798, + 0, 798, 798, 798, 798, 795, 795, 795, 798, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 2301, 801, + 798, 0, 765, 0, 766, 767, 768, 769, 772, 773, + 775, 2302, 2303, 1651, 1652, 1663, 1664, 1665, 1666, 1667, + 1668, 1669, 1670, 1671, 1672, 1673, 1674, 1675, 1676, 1677, + 1678, 1679, 1680, 1681, 1682, 1683, 1684, 1685, 1686, 1687, + 1688, 1689, 1690, 1691, 1692, 1693, 1694, 1695, 1696, 1697, + 1698, 1699, 1700, 1701, 1702, 1703, 1704, 1705, 1706, 1707, + 1708, 1709, 1710, 1711, 1712, 1713, 1714, 1715, 1716, 1717, + 1718, 1719, 1720, 1721, 1722, 1723, 1724, 1725, 1726, 1727, + 1728, 1729, 1730, 1731, 1732, 1733, 1734, 1735, 1736, 1737, + 1738, 1739, 1740, 1741, 1742, 1743, 1744, 1745, 1746, 1747, + 1748, 1749, 1750, 1751, 1752, 1753, 1754, 1755, 1756, 1757, + 1758, 1759, 1760, 1761, 1762, 1763, 1764, 1765, 1766, 1767, + 1768, 1769, 1770, 1771, 1772, 1773, 1774, 1775, 1776, 1777, + 1778, 1779, 1780, 1781, 1782, 1783, 1784, 1785, 1786, 1787, + 1788, 1789, 1790, 1791, 1792, 1793, 1794, 1795, 1796, 1797, + 1798, 1799, 1800, 1801, 1802, 1803, 1804, 1805, 1806, 1807, + 1808, 1809, 1810, 1811, 1812, 1813, 1814, 1815, 2301, 2301, + 779, 783, 787, 785, 1624, 810, 816, 818, 819, 0, + 0, 829, 832, 851, 49, 1921, 837, 49, 839, 840, + 841, 842, 843, 869, 870, 875, 0, 0, 0, 0, + 881, 882, 883, 0, 0, 886, 887, 888, 0, 0, + 0, 0, 0, 1020, 0, 0, 1146, 1147, 1148, 1149, + 1150, 1151, 1152, 1153, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1045, 1046, 0, 0, 0, 1070, 1071, 1072, + 1073, 1076, 0, 1087, 0, 1089, 1487, -2, 0, 0, + 0, 1081, 1082, 0, 0, 0, 1644, 1644, 0, 0, + 0, 1479, 0, 0, 1172, 0, 1173, 1175, 1176, 1177, + 0, 1178, 1179, 904, 904, 904, 904, 904, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 904, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1644, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -9614,64 +9577,64 @@ var yyDef = [...]int{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1642, 0, 0, - 1642, 1642, 0, 0, 223, 224, 225, 226, 227, 228, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 299, 243, 244, 245, 246, 247, - 302, 248, 249, 250, 1155, 0, 0, 892, 0, 46, - 857, 858, 0, 979, 1642, 0, 0, 908, 0, 1657, - 57, 66, 68, 1514, 61, 1514, 0, 912, 0, 0, - -2, -2, 913, 914, 918, 919, 920, 921, 922, 923, - 924, 925, 926, 54, 2297, 55, 0, 74, 0, 48, - 0, 0, 79, 80, 1605, 1609, 0, 1555, 0, 1558, - 0, 0, 0, 377, 1562, 0, 0, 1507, 1508, 1511, - 0, 930, 2016, 934, 0, 936, 937, 0, 0, 103, - 0, 995, 0, 0, 0, 114, 0, 116, 117, 0, - 0, 0, 388, 1625, 1626, 1627, -2, 411, 0, 388, - 372, 310, 311, 312, 363, 314, 363, 363, 363, 363, - 377, 377, 377, 377, 345, 346, 347, 348, 349, 0, - 363, 0, 331, 363, 363, 363, 363, 353, 354, 355, - 356, 357, 358, 359, 360, 315, 316, 317, 318, 319, - 320, 321, 322, 323, 365, 365, 365, 365, 365, 369, - 369, 0, 1113, 0, 392, 0, 1511, 0, 0, 1545, - 1634, 1644, 0, 0, 0, 0, 0, 135, 0, 0, - 0, 579, 623, 530, 567, 580, 0, 533, 534, -2, - 0, 0, 515, 0, 517, 0, 412, 0, -2, 0, - 422, 0, 418, 422, 419, 422, 410, 423, 557, 558, - 559, 0, 561, 562, 653, 965, 0, 0, 0, 0, - 0, 659, 660, 661, 0, 663, 664, 665, 666, 667, - 668, 669, 670, 671, 672, 568, 569, 570, 571, 572, - 573, 574, 575, 0, 0, 0, 0, 517, 0, 564, - 0, 0, 468, 469, 470, 0, 0, 473, 474, 475, - 476, 0, 0, 479, 480, 481, 982, 983, 482, 483, - 508, 509, 510, 484, 485, 486, 487, 488, 489, 490, - 502, 503, 504, 505, 506, 507, 491, 492, 493, 494, - 495, 496, 499, 0, 150, 1536, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1632, 0, 0, 0, 0, 911, 997, - 1655, 1656, 726, 0, 0, 797, 798, 0, 416, 417, - 796, 796, 736, 778, 0, 796, 740, 779, 741, 743, - 742, 744, 757, 758, 796, 747, 794, 795, 748, 749, - 750, 751, 752, 753, 754, 774, 759, 760, 761, 800, - 0, 804, 805, 775, 776, 0, 786, 0, 0, 0, - 820, 821, 0, 828, 852, 850, 851, 853, 845, 846, - 847, 848, 0, 854, 0, 0, 870, 99, 875, 876, - 877, 878, 890, 883, 1157, 1015, 1016, 1017, 0, 1019, - 1025, 0, 1140, 1142, 1023, 1024, 1027, 0, 0, 0, - 1021, 1032, 1152, 1153, 1154, 0, 0, 0, 0, 0, - 1036, 1040, 1045, 1046, 1047, 1048, 1049, 0, 1050, 0, - 1053, 1054, 1055, 1056, 1057, 1058, 1064, 1453, 1454, 1455, - 1083, 303, 304, 0, 1084, 0, 0, 0, 0, 0, - 0, 0, 0, 1400, 1401, 1402, 1403, 1404, 1405, 1406, - 1407, 1408, 1409, 1410, 1411, 1412, 1413, 1414, 1415, 1416, - 1417, 1418, 1419, 1156, 0, 1643, 0, 0, 0, 1483, - 1480, 0, 0, 0, 1439, 1441, 0, 0, 0, 903, - 904, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1420, 1421, - 1422, 1423, 1424, 1425, 1426, 1427, 1428, 1429, 1430, 1431, - 1432, 1433, 1434, 1435, 1436, 1437, 0, 0, 1456, 0, - 0, 0, 0, 0, 0, 0, 1476, 0, 1089, 1090, - 1091, 0, 0, 0, 0, 0, 0, 1218, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1644, 0, 0, + 1644, 1644, 0, 0, 225, 226, 227, 228, 229, 230, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 301, 245, 246, 247, 248, 249, + 304, 250, 251, 252, 1157, 0, 0, 894, 0, 46, + 859, 860, 0, 981, 1644, 0, 0, 910, 0, 1659, + 57, 66, 68, 1516, 61, 1516, 0, 914, 0, 0, + -2, -2, 915, 916, 920, 921, 922, 923, 924, 925, + 926, 927, 928, 54, 2299, 55, 0, 74, 0, 48, + 0, 0, 79, 80, 1607, 1611, 0, 1557, 0, 1560, + 0, 0, 0, 379, 1564, 0, 0, 1509, 1510, 1513, + 0, 932, 2018, 936, 0, 938, 939, 0, 0, 103, + 0, 997, 0, 0, 0, 114, 0, 116, 117, 0, + 0, 0, 390, 1627, 1628, 1629, -2, 413, 0, 390, + 374, 312, 313, 314, 365, 316, 365, 365, 365, 365, + 379, 379, 379, 379, 347, 348, 349, 350, 351, 0, + 365, 0, 333, 365, 365, 365, 365, 355, 356, 357, + 358, 359, 360, 361, 362, 317, 318, 319, 320, 321, + 322, 323, 324, 325, 367, 367, 367, 367, 367, 371, + 371, 0, 1115, 0, 394, 0, 1513, 0, 0, 1547, + 1636, 1646, 0, 0, 0, 0, 0, 135, 0, 0, + 0, 581, 625, 532, 569, 582, 0, 535, 536, -2, + 0, 0, 517, 0, 519, 0, 414, 0, -2, 0, + 424, 0, 420, 424, 421, 424, 412, 425, 559, 560, + 561, 0, 563, 564, 655, 967, 0, 0, 0, 0, + 0, 661, 662, 663, 0, 665, 666, 667, 668, 669, + 670, 671, 672, 673, 674, 570, 571, 572, 573, 574, + 575, 576, 577, 0, 0, 0, 0, 519, 0, 566, + 0, 0, 470, 471, 472, 0, 0, 475, 476, 477, + 478, 0, 0, 481, 482, 483, 984, 985, 484, 485, + 510, 511, 512, 486, 487, 488, 489, 490, 491, 492, + 504, 505, 506, 507, 508, 509, 493, 494, 495, 496, + 497, 498, 501, 0, 150, 1538, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1634, 0, 0, 0, 0, 913, 999, + 1657, 1658, 728, 0, 0, 799, 800, 0, 418, 419, + 798, 798, 738, 780, 0, 798, 742, 781, 743, 745, + 744, 746, 759, 760, 798, 749, 796, 797, 750, 751, + 752, 753, 754, 755, 756, 776, 761, 762, 763, 802, + 0, 806, 807, 777, 778, 0, 788, 0, 0, 0, + 822, 823, 0, 830, 854, 852, 853, 855, 847, 848, + 849, 850, 0, 856, 0, 0, 872, 99, 877, 878, + 879, 880, 892, 885, 1159, 1017, 1018, 1019, 0, 1021, + 1027, 0, 1142, 1144, 1025, 1026, 1029, 0, 0, 0, + 1023, 1034, 1154, 1155, 1156, 0, 0, 0, 0, 0, + 1038, 1042, 1047, 1048, 1049, 1050, 1051, 0, 1052, 0, + 1055, 1056, 1057, 1058, 1059, 1060, 1066, 1455, 1456, 1457, + 1085, 305, 306, 0, 1086, 0, 0, 0, 0, 0, + 0, 0, 0, 1402, 1403, 1404, 1405, 1406, 1407, 1408, + 1409, 1410, 1411, 1412, 1413, 1414, 1415, 1416, 1417, 1418, + 1419, 1420, 1421, 1158, 0, 1645, 0, 0, 0, 1485, + 1482, 0, 0, 0, 1441, 1443, 0, 0, 0, 905, + 906, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1422, 1423, + 1424, 1425, 1426, 1427, 1428, 1429, 1430, 1431, 1432, 1433, + 1434, 1435, 1436, 1437, 1438, 1439, 0, 0, 1458, 0, + 0, 0, 0, 0, 0, 0, 1478, 0, 1091, 1092, + 1093, 0, 0, 0, 0, 0, 0, 1220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -9680,199 +9643,199 @@ var yyDef = [...]int{ 146, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1364, 1365, 1366, 1367, 41, 0, 0, - 0, 0, 0, 0, 0, 1487, 0, -2, -2, 0, + 0, 0, 0, 1366, 1367, 1368, 1369, 41, 0, 0, + 0, 0, 0, 0, 0, 1489, 0, -2, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1389, 0, 0, 0, 0, 0, 0, 1613, - 0, 0, 860, 861, 863, 0, 999, 0, 980, 0, - 0, 866, 0, 907, 0, 910, 60, 62, 916, 917, - 0, 938, 927, 915, 56, 51, 0, 0, 957, 0, - 0, 1556, 1559, 1560, 377, 1582, 0, 386, 386, 383, - 1517, 1518, 0, 1510, 1512, 1513, 81, 935, 931, 0, - 1013, 0, 0, 994, 0, 941, 943, 944, 945, 977, - 0, 948, 949, 0, 0, 0, 0, 0, 101, 996, + 0, 0, 1391, 0, 0, 0, 0, 0, 0, 1615, + 0, 0, 862, 863, 865, 0, 1001, 0, 982, 0, + 0, 868, 0, 909, 0, 912, 60, 62, 918, 919, + 0, 940, 929, 917, 56, 51, 0, 0, 959, 0, + 0, 1558, 1561, 1562, 379, 1584, 0, 388, 388, 385, + 1519, 1520, 0, 1512, 1514, 1515, 81, 937, 933, 0, + 1015, 0, 0, 996, 0, 943, 945, 946, 947, 979, + 0, 950, 951, 0, 0, 0, 0, 0, 101, 998, 107, 0, 115, 0, 0, 120, 121, 108, 109, 110, - 111, 0, 612, -2, 463, 182, 184, 185, 186, 177, - -2, 375, 373, 374, 313, 377, 377, 339, 340, 341, - 342, 343, 344, 0, 351, 0, 332, 333, 334, 335, - 324, 0, 325, 326, 327, 367, 0, 328, 329, 0, - 330, 430, 0, 1519, 393, 394, 396, 404, 0, 399, - 400, 0, 404, 404, 0, 425, 426, 0, 1511, 1536, - 0, 0, 1645, 1644, 1644, 1644, 155, 0, 170, 171, - 172, 173, 174, 175, 648, 0, 0, 624, 646, 647, - 168, 0, 0, 178, 519, 518, 0, 680, 0, 428, - 0, 0, 422, 422, 407, 408, 560, 0, 0, 655, - 656, 657, 658, 0, 0, 0, 546, 457, 0, 547, - 548, 517, 519, 0, 0, 388, 471, 472, 477, 478, - 497, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 595, 596, 598, 601, 603, 521, 607, - 609, 0, 597, 600, 602, 604, 521, 608, 610, 1533, - 1534, 1535, 0, 0, 718, 0, 0, 454, 97, 1633, - 723, 727, 728, 793, 746, 780, 793, 738, 745, 768, - 782, 784, 818, 819, 824, 832, 833, 834, 874, 0, - 0, 0, 0, 882, 0, 0, 1026, 1141, 1143, 1028, - 1029, 1030, 1033, 0, 1037, 1041, 0, 0, 0, 0, - 0, 1088, 1086, 1487, 0, 0, 0, 1137, 0, 0, - 1160, 1161, 0, 0, 0, 0, 1481, 0, 0, 1168, - 0, 1442, 1118, 0, 0, 0, 0, 0, 1118, 1118, - 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1118, 1505, 1195, - 0, 0, 0, 0, 0, 1200, 1201, 1202, 1118, 0, - 1205, 1206, 0, 1208, 0, 1209, 0, 0, 0, 0, - 1216, 1217, 1219, 0, 0, 1222, 1223, 0, 1225, 0, - 1227, 1228, 1229, 1230, 1231, 1232, 0, 1234, 0, 1236, - 1237, 1238, 0, 1240, 0, 1242, 1243, 0, 1245, 0, - 1247, 0, 1250, 0, 1253, 0, 1256, 0, 1259, 0, - 1262, 0, 1265, 0, 1268, 0, 1271, 0, 1274, 0, - 1277, 0, 1280, 0, 1283, 0, 1286, 0, 1289, 0, - 1292, 0, 1295, 1296, 1297, 0, 1299, 0, 1301, 0, - 1304, 1305, 0, 1307, 0, 1310, 0, 1313, 0, 0, - 1314, 0, 0, 0, 1318, 0, 0, 0, 0, 1327, - 1328, 1329, 1330, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1341, 1342, 1343, 1344, 1345, 1346, 0, - 1348, 0, 1119, 0, 0, 1119, 0, 0, 0, 0, - 0, 1158, 1642, 0, 1443, 1444, 1445, 1446, 1447, 0, - 0, 0, 0, 0, 0, 1387, 1388, 1390, 0, 0, - 1393, 0, 1395, 0, 1614, 859, 862, 864, 951, 1000, - 1001, 0, 0, 0, 0, 981, 1641, 905, 906, 909, - 959, 0, 1491, 0, 0, 938, 1013, 0, 939, 0, - 53, 954, 0, 1606, 1610, 1564, 1563, 1576, 1589, 386, - 386, 380, 381, 387, 382, 384, 385, 1509, 0, 1514, - 0, 1603, 0, 892, 1592, 0, 0, 0, 0, 0, - 0, 0, 0, 984, 0, 0, 987, 0, 0, 0, - 0, 978, 949, 0, 950, 0, -2, 0, 0, 95, - 96, 0, 0, 0, 118, 119, 0, 0, 125, 389, - 390, 159, 168, 465, 183, 438, 0, 0, 309, 376, - 336, 337, 338, 0, 361, 0, 0, 0, 0, 459, - 131, 1523, 1522, 404, 404, 395, 0, 398, 0, 0, - 0, 1646, 364, 427, 0, 149, 0, 0, 0, 0, - 1635, 618, 0, 0, 625, 0, 0, 0, 528, 0, - 539, 540, 0, 652, -2, 714, 392, 0, 406, 409, - 966, 0, 0, 541, 0, 544, 545, 458, 519, 550, - 551, 565, 552, 500, 501, 498, 0, 0, 1546, 1547, - 1552, 1550, 1551, 136, 586, 588, 592, 587, 591, 0, - 0, 0, 523, 0, 611, 523, 584, 0, 454, 1519, - 0, 722, 455, 456, 796, 796, 869, 100, 0, 872, - 0, 0, 0, 0, 1034, 1038, 1051, 1052, 1448, 1474, - 363, 363, 1461, 363, 369, 1464, 363, 1466, 363, 1469, - 363, 1472, 1473, 0, 0, 1081, 0, 0, 0, 0, - 1167, 1484, 0, 0, 1178, 1117, 1118, 1118, 1118, 1118, - 1118, 1184, 1185, 1186, 1187, 1188, 1189, 1190, 1191, 1192, - 1193, 1478, 0, 0, 0, 1199, 0, 0, 1203, 0, + 111, 0, 614, -2, 465, 182, 184, 185, 186, 177, + -2, 377, 375, 376, 315, 379, 379, 341, 342, 343, + 344, 345, 346, 0, 353, 0, 334, 335, 336, 337, + 326, 0, 327, 328, 329, 369, 0, 330, 331, 0, + 332, 432, 0, 1521, 395, 396, 398, 406, 0, 401, + 402, 0, 406, 406, 0, 427, 428, 0, 1513, 1538, + 0, 0, 1647, 1646, 1646, 1646, 155, 0, 170, 171, + 172, 173, 174, 175, 650, 0, 0, 626, 648, 649, + 168, 0, 0, 178, 521, 520, 0, 682, 0, 430, + 0, 0, 424, 424, 409, 410, 562, 0, 0, 657, + 658, 659, 660, 0, 0, 0, 548, 459, 0, 549, + 550, 519, 521, 0, 0, 390, 473, 474, 479, 480, + 499, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 597, 598, 600, 603, 605, 523, 609, + 611, 0, 599, 602, 604, 606, 523, 610, 612, 1535, + 1536, 1537, 0, 0, 720, 0, 0, 456, 97, 1635, + 725, 729, 730, 795, 748, 782, 795, 740, 747, 770, + 784, 786, 820, 821, 826, 834, 835, 836, 876, 0, + 0, 0, 0, 884, 0, 0, 1028, 1143, 1145, 1030, + 1031, 1032, 1035, 0, 1039, 1043, 0, 0, 0, 0, + 0, 1090, 1088, 1489, 0, 0, 0, 1139, 0, 0, + 1162, 1163, 0, 0, 0, 0, 1483, 0, 0, 1170, + 0, 1444, 1120, 0, 0, 0, 0, 0, 1120, 1120, + 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1120, 1507, 1197, + 0, 0, 0, 0, 0, 1202, 1203, 1204, 1120, 0, + 1207, 1208, 0, 1210, 0, 1211, 0, 0, 0, 0, + 1218, 1219, 1221, 0, 0, 1224, 1225, 0, 1227, 0, + 1229, 1230, 1231, 1232, 1233, 1234, 0, 1236, 0, 1238, + 1239, 1240, 0, 1242, 0, 1244, 1245, 0, 1247, 0, + 1249, 0, 1252, 0, 1255, 0, 1258, 0, 1261, 0, + 1264, 0, 1267, 0, 1270, 0, 1273, 0, 1276, 0, + 1279, 0, 1282, 0, 1285, 0, 1288, 0, 1291, 0, + 1294, 0, 1297, 1298, 1299, 0, 1301, 0, 1303, 0, + 1306, 1307, 0, 1309, 0, 1312, 0, 1315, 0, 0, + 1316, 0, 0, 0, 1320, 0, 0, 0, 0, 1329, + 1330, 1331, 1332, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1343, 1344, 1345, 1346, 1347, 1348, 0, + 1350, 0, 1121, 0, 0, 1121, 0, 0, 0, 0, + 0, 1160, 1644, 0, 1445, 1446, 1447, 1448, 1449, 0, + 0, 0, 0, 0, 0, 1389, 1390, 1392, 0, 0, + 1395, 0, 1397, 0, 1616, 861, 864, 866, 953, 1002, + 1003, 0, 0, 0, 0, 983, 1643, 907, 908, 911, + 961, 0, 1493, 0, 0, 940, 1015, 0, 941, 0, + 53, 956, 0, 1608, 1612, 1566, 1565, 1578, 1591, 388, + 388, 382, 383, 389, 384, 386, 387, 1511, 0, 1516, + 0, 1605, 0, 894, 1594, 0, 0, 0, 0, 0, + 0, 0, 0, 986, 0, 0, 989, 0, 0, 0, + 0, 980, 951, 0, 952, 0, -2, 0, 0, 95, + 96, 0, 0, 0, 118, 119, 0, 0, 125, 391, + 392, 159, 168, 467, 183, 440, 0, 0, 311, 378, + 338, 339, 340, 0, 363, 0, 0, 0, 0, 461, + 131, 1525, 1524, 406, 406, 397, 0, 400, 0, 0, + 0, 1648, 366, 429, 0, 149, 0, 0, 0, 0, + 1637, 620, 0, 0, 627, 0, 0, 0, 530, 0, + 541, 542, 0, 654, -2, 716, 394, 0, 408, 411, + 968, 0, 0, 543, 0, 546, 547, 460, 521, 552, + 553, 567, 554, 502, 503, 500, 0, 0, 1548, 1549, + 1554, 1552, 1553, 136, 588, 590, 594, 589, 593, 0, + 0, 0, 525, 0, 613, 525, 586, 0, 456, 1521, + 0, 724, 457, 458, 798, 798, 871, 100, 0, 874, + 0, 0, 0, 0, 1036, 1040, 1053, 1054, 1450, 1476, + 365, 365, 1463, 365, 371, 1466, 365, 1468, 365, 1471, + 365, 1474, 1475, 0, 0, 1083, 0, 0, 0, 0, + 1169, 1486, 0, 0, 1180, 1119, 1120, 1120, 1120, 1120, + 1120, 1186, 1187, 1188, 1189, 1190, 1191, 1192, 1193, 1194, + 1195, 1480, 0, 0, 0, 1201, 0, 0, 1205, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 147, 148, - 0, 0, 0, 0, 0, 0, 1398, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1112, 1116, - 0, 1120, 1121, 0, 0, 1350, 0, 0, 1368, 0, - 0, 0, 0, 0, 0, 0, 1488, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1002, 1009, 0, - 1009, 0, 1009, 0, 0, 0, 1628, 1629, 1492, 1493, - 1013, 1494, 928, 940, 958, 1582, 0, 1575, 0, -2, - 1584, 0, 0, 0, 1590, 378, 379, 932, 82, 1014, - 86, 0, 1603, 1618, 0, 1600, 1607, 1611, 0, 0, - 0, 1596, 0, 1013, 942, 973, 975, 0, 970, 985, - 986, 988, 0, 990, 0, 992, 993, 953, 947, 0, - 103, 0, 1013, 1013, 102, 0, 998, 122, 123, 124, - 464, 187, 192, 0, 0, 0, 197, 0, 199, 0, - 0, 0, 204, 205, 404, 404, 439, 0, 306, 308, - 0, 0, 190, 377, 0, 377, 0, 368, 370, 0, - 440, 460, 1520, 1521, 0, 0, 397, 401, 402, 403, - 0, 151, 0, 0, 0, 621, 0, 649, 0, 0, - 0, 0, 0, 0, 179, 520, 681, 682, 683, 684, - 685, 686, 687, 688, 689, 0, 404, 0, 0, 0, - 404, 404, 404, 0, 706, 391, 0, 0, 677, 674, - 542, 0, 221, 222, 229, 230, 232, 0, 0, 0, - 0, 0, 549, 953, 1537, 1538, 1539, 0, 1549, 1553, - 139, 0, 0, 0, 0, 594, 599, 605, 0, 522, - 606, 719, 720, 721, 98, 731, 737, 871, 891, 1022, - 1035, 1039, 0, 0, 0, 0, 1475, 1459, 377, 1462, - 1463, 1465, 1467, 1468, 1470, 1471, 1077, 1078, 1082, 0, - 1164, 0, 1166, 0, 1482, 0, 1179, 1180, 1181, 1182, - 1183, 1514, 0, 0, 0, 1198, 0, 0, 1118, 0, - 1211, 1210, 1212, 0, 1214, 1215, 1220, 1221, 1224, 1226, - 1233, 1235, 1239, 1241, 1244, 1246, 1248, 0, 1251, 0, - 1254, 0, 1257, 0, 1260, 0, 1263, 0, 1266, 0, - 1269, 0, 1272, 0, 1275, 0, 1278, 0, 1281, 0, - 1284, 0, 1287, 0, 1290, 0, 1293, 0, 1298, 1300, - 0, 1303, 1306, 1308, 0, 1311, 0, 1315, 0, 1317, - 1319, 1320, 0, 0, 0, 1331, 1332, 1333, 1334, 1335, - 1336, 1337, 1338, 1339, 1340, 1347, 0, 1110, 1349, 1122, - 1123, 1128, 1352, 0, 0, 0, 1355, 0, 0, 0, - 1359, 1159, 1370, 0, 1375, 0, 0, 1381, 0, 1385, - 0, 1391, 1392, 1394, 1396, 0, 0, 0, 0, 0, - 0, 0, 979, 960, 64, 1494, 1498, 0, 1569, 1567, - 1567, 1577, 1578, 0, 0, 1585, 0, 0, 0, 0, - 87, 0, 0, 1591, 0, 0, 1612, 0, 0, 0, - 0, 104, 1505, 967, 974, 0, 0, 968, 0, 969, - 989, 991, 946, 0, 1013, 1013, 93, 94, 0, 193, + 0, 0, 0, 0, 0, 0, 1400, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1114, 1118, + 0, 1122, 1123, 0, 0, 1352, 0, 0, 1370, 0, + 0, 0, 0, 0, 0, 0, 1490, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1004, 1011, 0, + 1011, 0, 1011, 0, 0, 0, 1630, 1631, 1494, 1495, + 1015, 1496, 930, 942, 960, 1584, 0, 1577, 0, -2, + 1586, 0, 0, 0, 1592, 380, 381, 934, 82, 1016, + 86, 0, 1605, 1620, 0, 1602, 1609, 1613, 0, 0, + 0, 1598, 0, 1015, 944, 975, 977, 0, 972, 987, + 988, 990, 0, 992, 0, 994, 995, 955, 949, 0, + 103, 0, 1015, 1015, 102, 0, 1000, 122, 123, 124, + 466, 187, 192, 0, 0, 0, 197, 0, 199, 0, + 0, 0, 204, 205, 406, 406, 441, 0, 308, 310, + 0, 0, 190, 379, 0, 379, 0, 370, 372, 0, + 442, 462, 1522, 1523, 0, 0, 399, 403, 404, 405, + 0, 151, 0, 0, 0, 623, 0, 651, 0, 0, + 0, 0, 0, 0, 179, 522, 683, 684, 685, 686, + 687, 688, 689, 690, 691, 0, 406, 0, 0, 0, + 406, 406, 406, 0, 708, 393, 0, 0, 679, 676, + 544, 0, 223, 224, 231, 232, 234, 0, 0, 0, + 0, 0, 551, 955, 1539, 1540, 1541, 0, 1551, 1555, + 139, 0, 0, 0, 0, 596, 601, 607, 0, 524, + 608, 721, 722, 723, 98, 733, 739, 873, 893, 1024, + 1037, 1041, 0, 0, 0, 0, 1477, 1461, 379, 1464, + 1465, 1467, 1469, 1470, 1472, 1473, 1079, 1080, 1084, 0, + 1166, 0, 1168, 0, 1484, 0, 1181, 1182, 1183, 1184, + 1185, 1516, 0, 0, 0, 1200, 0, 0, 1120, 0, + 1213, 1212, 1214, 0, 1216, 1217, 1222, 1223, 1226, 1228, + 1235, 1237, 1241, 1243, 1246, 1248, 1250, 0, 1253, 0, + 1256, 0, 1259, 0, 1262, 0, 1265, 0, 1268, 0, + 1271, 0, 1274, 0, 1277, 0, 1280, 0, 1283, 0, + 1286, 0, 1289, 0, 1292, 0, 1295, 0, 1300, 1302, + 0, 1305, 1308, 1310, 0, 1313, 0, 1317, 0, 1319, + 1321, 1322, 0, 0, 0, 1333, 1334, 1335, 1336, 1337, + 1338, 1339, 1340, 1341, 1342, 1349, 0, 1112, 1351, 1124, + 1125, 1130, 1354, 0, 0, 0, 1357, 0, 0, 0, + 1361, 1161, 1372, 0, 1377, 0, 0, 1383, 0, 1387, + 0, 1393, 1394, 1396, 1398, 0, 0, 0, 0, 0, + 0, 0, 981, 962, 64, 1496, 1500, 0, 1571, 1569, + 1569, 1579, 1580, 0, 0, 1587, 0, 0, 0, 0, + 87, 0, 0, 1593, 0, 0, 1614, 0, 0, 0, + 0, 104, 1507, 969, 976, 0, 0, 970, 0, 971, + 991, 993, 948, 0, 1015, 1015, 93, 94, 0, 193, 0, 195, 0, 198, 200, 201, 202, 208, 209, 210, - 203, 0, 0, 305, 307, 0, 0, 350, 362, 352, - 0, 0, 1524, 1525, 1526, 1527, 1528, 1529, 1530, 1531, - 953, 152, 153, 154, 613, 0, 623, 0, 955, 0, - 616, 0, 531, 0, 0, 0, 404, 404, 404, 0, - 0, 0, 0, 691, 0, 0, 654, 0, 662, 0, - 0, 0, 233, 234, 0, 1548, 585, 0, 137, 138, - 0, 0, 590, 524, 525, 1075, 0, 0, 0, 1076, - 1460, 0, 0, 0, 0, 0, 1479, 0, 0, 0, - 0, 1204, 1207, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1323, 0, 0, 0, 643, - 644, 0, 1399, 1115, 1505, 0, 1119, 1129, 1130, 0, - 1119, 1369, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1010, 0, 0, 0, 961, 962, 0, - 0, 0, 999, 1498, 1503, 0, 0, 1572, 0, 1565, - 1568, 1566, 1579, 0, 0, 1586, 0, 1588, 0, 1619, - 1620, 1608, 1601, 892, 1595, 1598, 1600, 1597, 1514, 971, - 0, 976, 0, 1505, 92, 0, 196, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 206, 207, - 0, 0, 366, 371, 0, 0, 0, 614, 0, 956, - 626, 617, 0, 704, 0, 708, 0, 0, 0, 711, - 712, 713, 690, 0, 694, 432, 678, 675, 676, 543, - 0, 140, 141, 0, 0, 0, 1449, 0, 1452, 1162, - 1165, 1163, 0, 1194, 1196, 1197, 1457, 1458, 1213, 1249, - 1252, 1255, 1258, 1261, 1264, 1267, 1270, 1273, 1276, 1279, - 1282, 1285, 1288, 1291, 1294, 1302, 1309, 1312, 1316, 1321, - 0, 1324, 0, 0, 1325, 0, 645, 1106, 0, 0, - 1126, 1127, 0, 1354, 1356, 1357, 1358, 1371, 0, 1376, - 1377, 0, 1382, 0, 1386, 1397, 0, 1004, 1011, 1012, - 0, 1007, 0, 1008, 0, 952, 1503, 84, 1504, 1501, - 0, 1499, 1496, 1561, 0, 1570, 1571, 1580, 1581, 1587, - 0, 0, 1600, 0, 1594, 90, 0, 0, 0, 1514, - 194, 0, 213, 0, 622, 0, 625, 615, 702, 703, - 0, 715, 707, 709, 710, 692, -2, 1540, 0, 0, - 0, 593, 1450, 0, 0, 1326, 0, 641, 642, 1114, - 1107, 0, 1092, 1093, 1111, 1351, 1353, 0, 0, 0, - 1003, 963, 964, 1005, 1006, 83, 0, 1500, 1134, 0, - 1495, 0, 1573, 1574, 1604, 0, 1593, 1599, 972, 979, - 0, 91, 445, 438, 1540, 0, 0, 0, 695, 696, - 697, 698, 699, 700, 701, 582, 1542, 142, 143, 0, - 512, 513, 514, 136, 0, 1169, 1322, 1108, 0, 0, - 0, 0, 0, 1372, 0, 1378, 0, 1383, 0, 1502, - 0, 0, 1497, 1602, 627, 0, 629, 0, -2, 433, - 446, 0, 188, 214, 215, 0, 0, 218, 219, 220, - 211, 212, 132, 0, 0, 716, 0, 1543, 1544, 0, - 139, 0, 0, 1099, 1100, 1101, 1102, 1104, 0, 0, - 0, 0, 1135, 1112, 628, 0, 0, 388, 0, 638, - 434, 435, 0, 441, 442, 443, 444, 216, 217, 650, - 0, 0, 511, 589, 1451, 0, 0, 1373, 0, 1379, - 0, 1384, 0, 630, 631, 639, 0, 436, 0, 437, - 0, 0, 0, 619, 0, 650, 1541, 1109, 1103, 1105, - 0, 0, 1133, 0, 640, 636, 447, 449, 450, 0, - 0, 448, 651, 620, 1374, 1380, 0, 451, 452, 453, - 632, 633, 634, 635, + 211, 203, 0, 0, 307, 309, 0, 0, 352, 364, + 354, 0, 0, 1526, 1527, 1528, 1529, 1530, 1531, 1532, + 1533, 955, 152, 153, 154, 615, 0, 625, 0, 957, + 0, 618, 0, 533, 0, 0, 0, 406, 406, 406, + 0, 0, 0, 0, 693, 0, 0, 656, 0, 664, + 0, 0, 0, 235, 236, 0, 1550, 587, 0, 137, + 138, 0, 0, 592, 526, 527, 1077, 0, 0, 0, + 1078, 1462, 0, 0, 0, 0, 0, 1481, 0, 0, + 0, 0, 1206, 1209, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1325, 0, 0, 0, + 645, 646, 0, 1401, 1117, 1507, 0, 1121, 1131, 1132, + 0, 1121, 1371, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1012, 0, 0, 0, 963, 964, + 0, 0, 0, 1001, 1500, 1505, 0, 0, 1574, 0, + 1567, 1570, 1568, 1581, 0, 0, 1588, 0, 1590, 0, + 1621, 1622, 1610, 1603, 894, 1597, 1600, 1602, 1599, 1516, + 973, 0, 978, 0, 1507, 92, 0, 196, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 206, + 207, 0, 0, 368, 373, 0, 0, 0, 616, 0, + 958, 628, 619, 0, 706, 0, 710, 0, 0, 0, + 713, 714, 715, 692, 0, 696, 434, 680, 677, 678, + 545, 0, 140, 141, 0, 0, 0, 1451, 0, 1454, + 1164, 1167, 1165, 0, 1196, 1198, 1199, 1459, 1460, 1215, + 1251, 1254, 1257, 1260, 1263, 1266, 1269, 1272, 1275, 1278, + 1281, 1284, 1287, 1290, 1293, 1296, 1304, 1311, 1314, 1318, + 1323, 0, 1326, 0, 0, 1327, 0, 647, 1108, 0, + 0, 1128, 1129, 0, 1356, 1358, 1359, 1360, 1373, 0, + 1378, 1379, 0, 1384, 0, 1388, 1399, 0, 1006, 1013, + 1014, 0, 1009, 0, 1010, 0, 954, 1505, 84, 1506, + 1503, 0, 1501, 1498, 1563, 0, 1572, 1573, 1582, 1583, + 1589, 0, 0, 1602, 0, 1596, 90, 0, 0, 0, + 1516, 194, 0, 214, 0, 624, 0, 627, 617, 704, + 705, 0, 717, 709, 711, 712, 694, -2, 1542, 0, + 0, 0, 595, 1452, 0, 0, 1328, 0, 643, 644, + 1116, 1109, 0, 1094, 1095, 1113, 1353, 1355, 0, 0, + 0, 1005, 965, 966, 1007, 1008, 83, 0, 1502, 1136, + 0, 1497, 0, 1575, 1576, 1606, 0, 1595, 1601, 974, + 981, 0, 91, 447, 440, 1542, 0, 0, 0, 697, + 698, 699, 700, 701, 702, 703, 584, 1544, 142, 143, + 0, 514, 515, 516, 136, 0, 1171, 1324, 1110, 0, + 0, 0, 0, 0, 1374, 0, 1380, 0, 1385, 0, + 1504, 0, 0, 1499, 1604, 629, 0, 631, 0, -2, + 435, 448, 0, 188, 215, 216, 0, 0, 219, 0, + 221, 222, 212, 213, 132, 0, 0, 718, 0, 1545, + 1546, 0, 139, 0, 0, 1101, 1102, 1103, 1104, 1106, + 0, 0, 0, 0, 1137, 1114, 630, 0, 0, 390, + 0, 640, 436, 437, 0, 443, 444, 445, 446, 217, + 218, 220, 652, 0, 0, 513, 591, 1453, 0, 0, + 1375, 0, 1381, 0, 1386, 0, 632, 633, 641, 0, + 438, 0, 439, 0, 0, 0, 621, 0, 652, 1543, + 1111, 1105, 1107, 0, 0, 1135, 0, 642, 638, 449, + 451, 452, 0, 0, 450, 653, 622, 1376, 1382, 0, + 453, 454, 455, 634, 635, 636, 637, } var yyTok1 = [...]int{ @@ -11759,10 +11722,10 @@ yydefault: yyVAL.union = yyLOCAL case 211: yyDollar = yyS[yypt-1 : yypt+1] - var yyLOCAL ColumnStorage -//line sql.y:1598 + var yyLOCAL ColumnFormat +//line sql.y:1596 { - yyLOCAL = VirtualStorage + yyLOCAL = CompressedFormat } yyVAL.union = yyLOCAL case 212: @@ -11770,747 +11733,748 @@ yydefault: var yyLOCAL ColumnStorage //line sql.y:1602 { - yyLOCAL = StoredStorage + yyLOCAL = VirtualStorage } yyVAL.union = yyLOCAL case 213: + yyDollar = yyS[yypt-1 : yypt+1] + var yyLOCAL ColumnStorage +//line sql.y:1606 + { + yyLOCAL = StoredStorage + } + yyVAL.union = yyLOCAL + case 214: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *ColumnTypeOptions -//line sql.y:1607 +//line sql.y:1611 { yyLOCAL = &ColumnTypeOptions{} } yyVAL.union = yyLOCAL - case 214: + case 215: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *ColumnTypeOptions -//line sql.y:1611 +//line sql.y:1615 { yyDollar[1].columnTypeOptionsUnion().Storage = yyDollar[2].columnStorageUnion() yyLOCAL = yyDollar[1].columnTypeOptionsUnion() } yyVAL.union = yyLOCAL - case 215: + case 216: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *ColumnTypeOptions -//line sql.y:1616 +//line sql.y:1620 { yyDollar[1].columnTypeOptionsUnion().Null = ptr.Of(true) yyLOCAL = yyDollar[1].columnTypeOptionsUnion() } yyVAL.union = yyLOCAL - case 216: + case 217: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *ColumnTypeOptions -//line sql.y:1621 +//line sql.y:1625 { yyDollar[1].columnTypeOptionsUnion().Null = ptr.Of(false) yyLOCAL = yyDollar[1].columnTypeOptionsUnion() } yyVAL.union = yyLOCAL - case 217: + case 218: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *ColumnTypeOptions -//line sql.y:1626 +//line sql.y:1630 { yyDollar[1].columnTypeOptionsUnion().Comment = NewStrLiteral(yyDollar[3].str) yyLOCAL = yyDollar[1].columnTypeOptionsUnion() } yyVAL.union = yyLOCAL - case 218: + case 219: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *ColumnTypeOptions -//line sql.y:1631 +//line sql.y:1635 { yyDollar[1].columnTypeOptionsUnion().KeyOpt = yyDollar[2].colKeyOptUnion() yyLOCAL = yyDollar[1].columnTypeOptionsUnion() } yyVAL.union = yyLOCAL - case 219: + case 220: + yyDollar = yyS[yypt-3 : yypt+1] + var yyLOCAL *ColumnTypeOptions +//line sql.y:1640 + { + yyDollar[1].columnTypeOptionsUnion().SRID = NewIntLiteral(yyDollar[3].str) + yyLOCAL = yyDollar[1].columnTypeOptionsUnion() + } + yyVAL.union = yyLOCAL + case 221: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *ColumnTypeOptions -//line sql.y:1636 +//line sql.y:1645 { yyDollar[1].columnTypeOptionsUnion().Invisible = ptr.Of(false) yyLOCAL = yyDollar[1].columnTypeOptionsUnion() } yyVAL.union = yyLOCAL - case 220: + case 222: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *ColumnTypeOptions -//line sql.y:1641 +//line sql.y:1650 { yyDollar[1].columnTypeOptionsUnion().Invisible = ptr.Of(true) yyLOCAL = yyDollar[1].columnTypeOptionsUnion() } yyVAL.union = yyLOCAL - case 221: + case 223: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:1648 +//line sql.y:1657 { yyLOCAL = yyDollar[1].exprUnion() } yyVAL.union = yyLOCAL - case 223: + case 225: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:1655 +//line sql.y:1664 { yyLOCAL = &CurTimeFuncExpr{Name: NewIdentifierCI("current_timestamp"), Fsp: yyDollar[2].integerUnion()} } yyVAL.union = yyLOCAL - case 224: + case 226: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:1659 +//line sql.y:1668 { yyLOCAL = &CurTimeFuncExpr{Name: NewIdentifierCI("localtime"), Fsp: yyDollar[2].integerUnion()} } yyVAL.union = yyLOCAL - case 225: + case 227: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:1663 +//line sql.y:1672 { yyLOCAL = &CurTimeFuncExpr{Name: NewIdentifierCI("localtimestamp"), Fsp: yyDollar[2].integerUnion()} } yyVAL.union = yyLOCAL - case 226: + case 228: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:1667 +//line sql.y:1676 { yyLOCAL = &CurTimeFuncExpr{Name: NewIdentifierCI("utc_timestamp"), Fsp: yyDollar[2].integerUnion()} } yyVAL.union = yyLOCAL - case 227: + case 229: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:1671 +//line sql.y:1680 { yyLOCAL = &CurTimeFuncExpr{Name: NewIdentifierCI("now"), Fsp: yyDollar[2].integerUnion()} } yyVAL.union = yyLOCAL - case 228: + case 230: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:1675 +//line sql.y:1684 { yyLOCAL = &CurTimeFuncExpr{Name: NewIdentifierCI("sysdate"), Fsp: yyDollar[2].integerUnion()} } yyVAL.union = yyLOCAL - case 231: + case 233: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:1685 +//line sql.y:1694 { yyLOCAL = &NullVal{} } yyVAL.union = yyLOCAL - case 233: + case 235: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:1692 +//line sql.y:1701 { yyLOCAL = yyDollar[2].exprUnion() } yyVAL.union = yyLOCAL - case 234: + case 236: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:1696 +//line sql.y:1705 { yyLOCAL = &UnaryExpr{Operator: UMinusOp, Expr: yyDollar[2].exprUnion()} } yyVAL.union = yyLOCAL - case 235: + case 237: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:1702 +//line sql.y:1711 { yyLOCAL = yyDollar[1].exprUnion() } yyVAL.union = yyLOCAL - case 236: + case 238: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:1706 +//line sql.y:1715 { yyLOCAL = yyDollar[1].exprUnion() } yyVAL.union = yyLOCAL - case 237: + case 239: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:1710 +//line sql.y:1719 { yyLOCAL = yyDollar[1].boolValUnion() } yyVAL.union = yyLOCAL - case 238: + case 240: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:1714 +//line sql.y:1723 { yyLOCAL = NewHexLiteral(yyDollar[1].str) } yyVAL.union = yyLOCAL - case 239: + case 241: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:1718 +//line sql.y:1727 { yyLOCAL = NewHexNumLiteral(yyDollar[1].str) } yyVAL.union = yyLOCAL - case 240: + case 242: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:1722 +//line sql.y:1731 { yyLOCAL = NewBitLiteral(yyDollar[1].str) } yyVAL.union = yyLOCAL - case 241: + case 243: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:1726 +//line sql.y:1735 { yyLOCAL = NewBitLiteral("0b" + yyDollar[1].str) } yyVAL.union = yyLOCAL - case 242: + case 244: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:1730 +//line sql.y:1739 { yyLOCAL = parseBindVariable(yylex, yyDollar[1].str[1:]) } yyVAL.union = yyLOCAL - case 243: + case 245: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:1734 +//line sql.y:1743 { yyLOCAL = &IntroducerExpr{CharacterSet: yyDollar[1].str, Expr: NewBitLiteral("0b" + yyDollar[2].str)} } yyVAL.union = yyLOCAL - case 244: + case 246: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:1738 +//line sql.y:1747 { yyLOCAL = &IntroducerExpr{CharacterSet: yyDollar[1].str, Expr: NewHexNumLiteral(yyDollar[2].str)} } yyVAL.union = yyLOCAL - case 245: + case 247: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:1742 +//line sql.y:1751 { yyLOCAL = &IntroducerExpr{CharacterSet: yyDollar[1].str, Expr: NewBitLiteral(yyDollar[2].str)} } yyVAL.union = yyLOCAL - case 246: + case 248: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:1746 +//line sql.y:1755 { yyLOCAL = &IntroducerExpr{CharacterSet: yyDollar[1].str, Expr: NewHexLiteral(yyDollar[2].str)} } yyVAL.union = yyLOCAL - case 247: + case 249: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:1750 +//line sql.y:1759 { arg := parseBindVariable(yylex, yyDollar[2].str[1:]) yyLOCAL = &IntroducerExpr{CharacterSet: yyDollar[1].str, Expr: arg} } yyVAL.union = yyLOCAL - case 248: + case 250: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:1755 +//line sql.y:1764 { yyLOCAL = NewDateLiteral(yyDollar[2].str) } yyVAL.union = yyLOCAL - case 249: + case 251: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:1759 +//line sql.y:1768 { yyLOCAL = NewTimeLiteral(yyDollar[2].str) } yyVAL.union = yyLOCAL - case 250: + case 252: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:1763 +//line sql.y:1772 { yyLOCAL = NewTimestampLiteral(yyDollar[2].str) } yyVAL.union = yyLOCAL - case 251: + case 253: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1769 +//line sql.y:1778 { yyVAL.str = Armscii8Str } - case 252: + case 254: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1773 +//line sql.y:1782 { yyVAL.str = ASCIIStr } - case 253: + case 255: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1777 +//line sql.y:1786 { yyVAL.str = Big5Str } - case 254: + case 256: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1781 +//line sql.y:1790 { yyVAL.str = UBinaryStr } - case 255: + case 257: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1785 +//line sql.y:1794 { yyVAL.str = Cp1250Str } - case 256: + case 258: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1789 +//line sql.y:1798 { yyVAL.str = Cp1251Str } - case 257: + case 259: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1793 +//line sql.y:1802 { yyVAL.str = Cp1256Str } - case 258: + case 260: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1797 +//line sql.y:1806 { yyVAL.str = Cp1257Str } - case 259: + case 261: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1801 +//line sql.y:1810 { yyVAL.str = Cp850Str } - case 260: + case 262: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1805 +//line sql.y:1814 { yyVAL.str = Cp852Str } - case 261: + case 263: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1809 +//line sql.y:1818 { yyVAL.str = Cp866Str } - case 262: + case 264: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1813 +//line sql.y:1822 { yyVAL.str = Cp932Str } - case 263: + case 265: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1817 +//line sql.y:1826 { yyVAL.str = Dec8Str } - case 264: + case 266: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1821 +//line sql.y:1830 { yyVAL.str = EucjpmsStr } - case 265: + case 267: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1825 +//line sql.y:1834 { yyVAL.str = EuckrStr } - case 266: + case 268: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1829 +//line sql.y:1838 { yyVAL.str = Gb18030Str } - case 267: + case 269: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1833 +//line sql.y:1842 { yyVAL.str = Gb2312Str } - case 268: + case 270: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1837 +//line sql.y:1846 { yyVAL.str = GbkStr } - case 269: + case 271: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1841 +//line sql.y:1850 { yyVAL.str = Geostd8Str } - case 270: + case 272: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1845 +//line sql.y:1854 { yyVAL.str = GreekStr } - case 271: + case 273: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1849 +//line sql.y:1858 { yyVAL.str = HebrewStr } - case 272: + case 274: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1853 +//line sql.y:1862 { yyVAL.str = Hp8Str } - case 273: + case 275: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1857 +//line sql.y:1866 { yyVAL.str = Keybcs2Str } - case 274: + case 276: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1861 +//line sql.y:1870 { yyVAL.str = Koi8rStr } - case 275: + case 277: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1865 +//line sql.y:1874 { yyVAL.str = Koi8uStr } - case 276: + case 278: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1869 +//line sql.y:1878 { yyVAL.str = Latin1Str } - case 277: + case 279: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1873 +//line sql.y:1882 { yyVAL.str = Latin2Str } - case 278: + case 280: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1877 +//line sql.y:1886 { yyVAL.str = Latin5Str } - case 279: + case 281: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1881 +//line sql.y:1890 { yyVAL.str = Latin7Str } - case 280: + case 282: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1885 +//line sql.y:1894 { yyVAL.str = MacceStr } - case 281: + case 283: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1889 +//line sql.y:1898 { yyVAL.str = MacromanStr } - case 282: + case 284: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1893 +//line sql.y:1902 { yyVAL.str = SjisStr } - case 283: + case 285: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1897 +//line sql.y:1906 { yyVAL.str = Swe7Str } - case 284: + case 286: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1901 +//line sql.y:1910 { yyVAL.str = Tis620Str } - case 285: + case 287: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1905 +//line sql.y:1914 { yyVAL.str = Ucs2Str } - case 286: + case 288: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1909 +//line sql.y:1918 { yyVAL.str = UjisStr } - case 287: + case 289: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1913 +//line sql.y:1922 { yyVAL.str = Utf16Str } - case 288: + case 290: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1917 +//line sql.y:1926 { yyVAL.str = Utf16leStr } - case 289: + case 291: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1921 +//line sql.y:1930 { yyVAL.str = Utf32Str } - case 290: + case 292: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1925 +//line sql.y:1934 { yyVAL.str = Utf8mb3Str } - case 291: + case 293: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1929 +//line sql.y:1938 { yyVAL.str = Utf8mb4Str } - case 292: + case 294: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:1933 +//line sql.y:1942 { yyVAL.str = Utf8mb3Str } - case 295: + case 297: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:1943 +//line sql.y:1952 { yyLOCAL = NewIntLiteral(yyDollar[1].str) } yyVAL.union = yyLOCAL - case 296: + case 298: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:1947 +//line sql.y:1956 { yyLOCAL = NewFloatLiteral(yyDollar[1].str) } yyVAL.union = yyLOCAL - case 297: + case 299: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:1951 +//line sql.y:1960 { yyLOCAL = NewDecimalLiteral(yyDollar[1].str) } yyVAL.union = yyLOCAL - case 298: + case 300: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:1957 +//line sql.y:1966 { yyLOCAL = yyDollar[1].exprUnion() } yyVAL.union = yyLOCAL - case 299: + case 301: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:1961 +//line sql.y:1970 { yyLOCAL = AppendString(yyDollar[1].exprUnion(), yyDollar[2].str) } yyVAL.union = yyLOCAL - case 300: + case 302: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:1967 +//line sql.y:1976 { yyLOCAL = NewStrLiteral(yyDollar[1].str) } yyVAL.union = yyLOCAL - case 301: + case 303: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:1971 +//line sql.y:1980 { yyLOCAL = &UnaryExpr{Operator: NStringOp, Expr: NewStrLiteral(yyDollar[1].str)} } yyVAL.union = yyLOCAL - case 302: + case 304: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:1975 +//line sql.y:1984 { yyLOCAL = &IntroducerExpr{CharacterSet: yyDollar[1].str, Expr: NewStrLiteral(yyDollar[2].str)} } yyVAL.union = yyLOCAL - case 303: + case 305: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:1981 +//line sql.y:1990 { yyLOCAL = yyDollar[1].exprUnion() } yyVAL.union = yyLOCAL - case 304: + case 306: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:1985 +//line sql.y:1994 { yyLOCAL = parseBindVariable(yylex, yyDollar[1].str[1:]) } yyVAL.union = yyLOCAL - case 305: + case 307: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL ColumnKeyOption -//line sql.y:1991 +//line sql.y:2000 { yyLOCAL = ColKeyPrimary } yyVAL.union = yyLOCAL - case 306: + case 308: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL ColumnKeyOption -//line sql.y:1995 +//line sql.y:2004 { yyLOCAL = ColKeyUnique } yyVAL.union = yyLOCAL - case 307: + case 309: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL ColumnKeyOption -//line sql.y:1999 +//line sql.y:2008 { yyLOCAL = ColKeyUniqueKey } yyVAL.union = yyLOCAL - case 308: + case 310: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL ColumnKeyOption -//line sql.y:2003 +//line sql.y:2012 { yyLOCAL = ColKey } yyVAL.union = yyLOCAL - case 309: + case 311: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2009 +//line sql.y:2018 { yyVAL.columnType = yyDollar[1].columnType yyVAL.columnType.Unsigned = yyDollar[2].booleanUnion() yyVAL.columnType.Zerofill = yyDollar[3].booleanUnion() } - case 313: + case 315: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2020 +//line sql.y:2029 { yyVAL.columnType = yyDollar[1].columnType yyVAL.columnType.Length = yyDollar[2].intPtrUnion() } - case 314: - yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2025 - { - yyVAL.columnType = yyDollar[1].columnType - } - case 315: - yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2031 - { - yyVAL.columnType = &ColumnType{Type: string(yyDollar[1].str)} - } case 316: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2035 +//line sql.y:2034 { - yyVAL.columnType = &ColumnType{Type: string(yyDollar[1].str)} + yyVAL.columnType = yyDollar[1].columnType } case 317: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2039 +//line sql.y:2040 { yyVAL.columnType = &ColumnType{Type: string(yyDollar[1].str)} } case 318: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2043 +//line sql.y:2044 { yyVAL.columnType = &ColumnType{Type: string(yyDollar[1].str)} } case 319: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2047 +//line sql.y:2048 { yyVAL.columnType = &ColumnType{Type: string(yyDollar[1].str)} } case 320: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2051 +//line sql.y:2052 { yyVAL.columnType = &ColumnType{Type: string(yyDollar[1].str)} } case 321: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2055 +//line sql.y:2056 { yyVAL.columnType = &ColumnType{Type: string(yyDollar[1].str)} } case 322: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2059 +//line sql.y:2060 { yyVAL.columnType = &ColumnType{Type: string(yyDollar[1].str)} } case 323: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2063 +//line sql.y:2064 { yyVAL.columnType = &ColumnType{Type: string(yyDollar[1].str)} } case 324: - yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2069 + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:2068 { yyVAL.columnType = &ColumnType{Type: string(yyDollar[1].str)} - yyVAL.columnType.Length = yyDollar[2].LengthScaleOption.Length - yyVAL.columnType.Scale = yyDollar[2].LengthScaleOption.Scale } case 325: - yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2075 + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:2072 { yyVAL.columnType = &ColumnType{Type: string(yyDollar[1].str)} - yyVAL.columnType.Length = yyDollar[2].LengthScaleOption.Length - yyVAL.columnType.Scale = yyDollar[2].LengthScaleOption.Scale } case 326: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2081 +//line sql.y:2078 { yyVAL.columnType = &ColumnType{Type: string(yyDollar[1].str)} yyVAL.columnType.Length = yyDollar[2].LengthScaleOption.Length @@ -12518,7 +12482,7 @@ yydefault: } case 327: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2087 +//line sql.y:2084 { yyVAL.columnType = &ColumnType{Type: string(yyDollar[1].str)} yyVAL.columnType.Length = yyDollar[2].LengthScaleOption.Length @@ -12526,7 +12490,7 @@ yydefault: } case 328: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2093 +//line sql.y:2090 { yyVAL.columnType = &ColumnType{Type: string(yyDollar[1].str)} yyVAL.columnType.Length = yyDollar[2].LengthScaleOption.Length @@ -12534,7 +12498,7 @@ yydefault: } case 329: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2099 +//line sql.y:2096 { yyVAL.columnType = &ColumnType{Type: string(yyDollar[1].str)} yyVAL.columnType.Length = yyDollar[2].LengthScaleOption.Length @@ -12542,139 +12506,143 @@ yydefault: } case 330: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2105 +//line sql.y:2102 { yyVAL.columnType = &ColumnType{Type: string(yyDollar[1].str)} yyVAL.columnType.Length = yyDollar[2].LengthScaleOption.Length yyVAL.columnType.Scale = yyDollar[2].LengthScaleOption.Scale } case 331: - yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2113 + yyDollar = yyS[yypt-2 : yypt+1] +//line sql.y:2108 { yyVAL.columnType = &ColumnType{Type: string(yyDollar[1].str)} + yyVAL.columnType.Length = yyDollar[2].LengthScaleOption.Length + yyVAL.columnType.Scale = yyDollar[2].LengthScaleOption.Scale } case 332: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2117 +//line sql.y:2114 { - yyVAL.columnType = &ColumnType{Type: string(yyDollar[1].str), Length: yyDollar[2].intPtrUnion()} + yyVAL.columnType = &ColumnType{Type: string(yyDollar[1].str)} + yyVAL.columnType.Length = yyDollar[2].LengthScaleOption.Length + yyVAL.columnType.Scale = yyDollar[2].LengthScaleOption.Scale } case 333: - yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2121 + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:2122 { - yyVAL.columnType = &ColumnType{Type: string(yyDollar[1].str), Length: yyDollar[2].intPtrUnion()} + yyVAL.columnType = &ColumnType{Type: string(yyDollar[1].str)} } case 334: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2125 +//line sql.y:2126 { yyVAL.columnType = &ColumnType{Type: string(yyDollar[1].str), Length: yyDollar[2].intPtrUnion()} } case 335: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2129 +//line sql.y:2130 { yyVAL.columnType = &ColumnType{Type: string(yyDollar[1].str), Length: yyDollar[2].intPtrUnion()} } case 336: - yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2135 + yyDollar = yyS[yypt-2 : yypt+1] +//line sql.y:2134 { - yyVAL.columnType = &ColumnType{Type: string(yyDollar[1].str), Length: yyDollar[2].intPtrUnion(), Charset: yyDollar[3].columnCharset} + yyVAL.columnType = &ColumnType{Type: string(yyDollar[1].str), Length: yyDollar[2].intPtrUnion()} } case 337: - yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2139 + yyDollar = yyS[yypt-2 : yypt+1] +//line sql.y:2138 { - // CHAR BYTE is an alias for binary. See also: - // https://dev.mysql.com/doc/refman/8.0/en/string-type-syntax.html - yyVAL.columnType = &ColumnType{Type: "binary", Length: yyDollar[2].intPtrUnion()} + yyVAL.columnType = &ColumnType{Type: string(yyDollar[1].str), Length: yyDollar[2].intPtrUnion()} } case 338: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2145 +//line sql.y:2144 { yyVAL.columnType = &ColumnType{Type: string(yyDollar[1].str), Length: yyDollar[2].intPtrUnion(), Charset: yyDollar[3].columnCharset} } case 339: - yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2149 + yyDollar = yyS[yypt-3 : yypt+1] +//line sql.y:2148 { - yyVAL.columnType = &ColumnType{Type: string(yyDollar[1].str), Length: yyDollar[2].intPtrUnion()} + // CHAR BYTE is an alias for binary. See also: + // https://dev.mysql.com/doc/refman/8.0/en/string-type-syntax.html + yyVAL.columnType = &ColumnType{Type: "binary", Length: yyDollar[2].intPtrUnion()} } case 340: - yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2153 + yyDollar = yyS[yypt-3 : yypt+1] +//line sql.y:2154 { - yyVAL.columnType = &ColumnType{Type: string(yyDollar[1].str), Length: yyDollar[2].intPtrUnion()} + yyVAL.columnType = &ColumnType{Type: string(yyDollar[1].str), Length: yyDollar[2].intPtrUnion(), Charset: yyDollar[3].columnCharset} } case 341: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2157 +//line sql.y:2158 { - yyVAL.columnType = &ColumnType{Type: string(yyDollar[1].str), Charset: yyDollar[2].columnCharset} + yyVAL.columnType = &ColumnType{Type: string(yyDollar[1].str), Length: yyDollar[2].intPtrUnion()} } case 342: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2161 +//line sql.y:2162 { - yyVAL.columnType = &ColumnType{Type: string(yyDollar[1].str), Charset: yyDollar[2].columnCharset} + yyVAL.columnType = &ColumnType{Type: string(yyDollar[1].str), Length: yyDollar[2].intPtrUnion()} } case 343: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2165 +//line sql.y:2166 { yyVAL.columnType = &ColumnType{Type: string(yyDollar[1].str), Charset: yyDollar[2].columnCharset} } case 344: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2169 +//line sql.y:2170 { yyVAL.columnType = &ColumnType{Type: string(yyDollar[1].str), Charset: yyDollar[2].columnCharset} } case 345: - yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2173 + yyDollar = yyS[yypt-2 : yypt+1] +//line sql.y:2174 { - yyVAL.columnType = &ColumnType{Type: string(yyDollar[1].str)} + yyVAL.columnType = &ColumnType{Type: string(yyDollar[1].str), Charset: yyDollar[2].columnCharset} } case 346: - yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2177 + yyDollar = yyS[yypt-2 : yypt+1] +//line sql.y:2178 { - yyVAL.columnType = &ColumnType{Type: string(yyDollar[1].str)} + yyVAL.columnType = &ColumnType{Type: string(yyDollar[1].str), Charset: yyDollar[2].columnCharset} } case 347: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2181 +//line sql.y:2182 { yyVAL.columnType = &ColumnType{Type: string(yyDollar[1].str)} } case 348: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2185 +//line sql.y:2186 { yyVAL.columnType = &ColumnType{Type: string(yyDollar[1].str)} } case 349: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2189 +//line sql.y:2190 { yyVAL.columnType = &ColumnType{Type: string(yyDollar[1].str)} } case 350: - yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2193 + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:2194 { - yyVAL.columnType = &ColumnType{Type: string(yyDollar[1].str), EnumValues: yyDollar[3].strs, Charset: yyDollar[5].columnCharset} + yyVAL.columnType = &ColumnType{Type: string(yyDollar[1].str)} } case 351: - yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2197 + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:2198 { - yyVAL.columnType = &ColumnType{Type: string(yyDollar[1].str), Length: yyDollar[2].intPtrUnion()} + yyVAL.columnType = &ColumnType{Type: string(yyDollar[1].str)} } case 352: yyDollar = yyS[yypt-5 : yypt+1] @@ -12683,1622 +12651,1634 @@ yydefault: yyVAL.columnType = &ColumnType{Type: string(yyDollar[1].str), EnumValues: yyDollar[3].strs, Charset: yyDollar[5].columnCharset} } case 353: - yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2208 + yyDollar = yyS[yypt-2 : yypt+1] +//line sql.y:2206 { - yyVAL.columnType = &ColumnType{Type: string(yyDollar[1].str)} + yyVAL.columnType = &ColumnType{Type: string(yyDollar[1].str), Length: yyDollar[2].intPtrUnion()} } case 354: - yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2212 + yyDollar = yyS[yypt-5 : yypt+1] +//line sql.y:2211 { - yyVAL.columnType = &ColumnType{Type: string(yyDollar[1].str)} + yyVAL.columnType = &ColumnType{Type: string(yyDollar[1].str), EnumValues: yyDollar[3].strs, Charset: yyDollar[5].columnCharset} } case 355: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2216 +//line sql.y:2217 { yyVAL.columnType = &ColumnType{Type: string(yyDollar[1].str)} } case 356: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2220 +//line sql.y:2221 { yyVAL.columnType = &ColumnType{Type: string(yyDollar[1].str)} } case 357: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2224 +//line sql.y:2225 { yyVAL.columnType = &ColumnType{Type: string(yyDollar[1].str)} } case 358: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2228 +//line sql.y:2229 { yyVAL.columnType = &ColumnType{Type: string(yyDollar[1].str)} } case 359: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2232 +//line sql.y:2233 { yyVAL.columnType = &ColumnType{Type: string(yyDollar[1].str)} } case 360: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2236 +//line sql.y:2237 { yyVAL.columnType = &ColumnType{Type: string(yyDollar[1].str)} } case 361: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2242 +//line sql.y:2241 + { + yyVAL.columnType = &ColumnType{Type: string(yyDollar[1].str)} + } + case 362: + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:2245 + { + yyVAL.columnType = &ColumnType{Type: string(yyDollar[1].str)} + } + case 363: + yyDollar = yyS[yypt-1 : yypt+1] +//line sql.y:2251 { yyVAL.strs = make([]string, 0, 4) yyVAL.strs = append(yyVAL.strs, encodeSQLString(yyDollar[1].str)) } - case 362: + case 364: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2247 +//line sql.y:2256 { yyVAL.strs = append(yyDollar[1].strs, encodeSQLString(yyDollar[3].str)) } - case 363: + case 365: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *int -//line sql.y:2252 +//line sql.y:2261 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 364: + case 366: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *int -//line sql.y:2256 +//line sql.y:2265 { yyLOCAL = ptr.Of(convertStringToInt(yyDollar[2].str)) } yyVAL.union = yyLOCAL - case 365: + case 367: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2261 +//line sql.y:2270 { yyVAL.LengthScaleOption = LengthScaleOption{} } - case 366: + case 368: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2265 +//line sql.y:2274 { yyVAL.LengthScaleOption = LengthScaleOption{ Length: ptr.Of(convertStringToInt(yyDollar[2].str)), Scale: ptr.Of(convertStringToInt(yyDollar[4].str)), } } - case 367: + case 369: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2274 +//line sql.y:2283 { yyVAL.LengthScaleOption = yyDollar[1].LengthScaleOption } - case 368: + case 370: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2278 +//line sql.y:2287 { yyVAL.LengthScaleOption = LengthScaleOption{ Length: ptr.Of(convertStringToInt(yyDollar[2].str)), } } - case 369: + case 371: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2285 +//line sql.y:2294 { yyVAL.LengthScaleOption = LengthScaleOption{} } - case 370: + case 372: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2289 +//line sql.y:2298 { yyVAL.LengthScaleOption = LengthScaleOption{ Length: ptr.Of(convertStringToInt(yyDollar[2].str)), } } - case 371: + case 373: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2295 +//line sql.y:2304 { yyVAL.LengthScaleOption = LengthScaleOption{ Length: ptr.Of(convertStringToInt(yyDollar[2].str)), Scale: ptr.Of(convertStringToInt(yyDollar[4].str)), } } - case 372: + case 374: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line sql.y:2303 +//line sql.y:2312 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 373: + case 375: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line sql.y:2307 +//line sql.y:2316 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 374: + case 376: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line sql.y:2311 +//line sql.y:2320 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 375: + case 377: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line sql.y:2316 +//line sql.y:2325 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 376: + case 378: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line sql.y:2320 +//line sql.y:2329 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 377: + case 379: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2325 +//line sql.y:2334 { yyVAL.columnCharset = ColumnCharset{} } - case 378: + case 380: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2329 +//line sql.y:2338 { yyVAL.columnCharset = ColumnCharset{Name: string(yyDollar[2].identifierCI.String()), Binary: yyDollar[3].booleanUnion()} } - case 379: + case 381: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2333 +//line sql.y:2342 { yyVAL.columnCharset = ColumnCharset{Name: encodeSQLString(yyDollar[2].str), Binary: yyDollar[3].booleanUnion()} } - case 380: + case 382: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2337 +//line sql.y:2346 { yyVAL.columnCharset = ColumnCharset{Name: string(yyDollar[2].str)} } - case 381: + case 383: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2341 +//line sql.y:2350 { // ASCII: Shorthand for CHARACTER SET latin1. yyVAL.columnCharset = ColumnCharset{Name: "latin1", Binary: yyDollar[2].booleanUnion()} } - case 382: + case 384: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2346 +//line sql.y:2355 { // UNICODE: Shorthand for CHARACTER SET ucs2. yyVAL.columnCharset = ColumnCharset{Name: "ucs2", Binary: yyDollar[2].booleanUnion()} } - case 383: + case 385: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2351 +//line sql.y:2360 { // BINARY: Shorthand for default CHARACTER SET but with binary collation yyVAL.columnCharset = ColumnCharset{Name: "", Binary: true} } - case 384: + case 386: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2356 +//line sql.y:2365 { // BINARY ASCII: Shorthand for CHARACTER SET latin1 with binary collation yyVAL.columnCharset = ColumnCharset{Name: "latin1", Binary: true} } - case 385: + case 387: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2361 +//line sql.y:2370 { // BINARY UNICODE: Shorthand for CHARACTER SET ucs2 with binary collation yyVAL.columnCharset = ColumnCharset{Name: "ucs2", Binary: true} } - case 386: + case 388: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line sql.y:2367 +//line sql.y:2376 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 387: + case 389: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line sql.y:2371 +//line sql.y:2380 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 388: + case 390: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2376 +//line sql.y:2385 { yyVAL.str = "" } - case 389: + case 391: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2380 +//line sql.y:2389 { yyVAL.str = string(yyDollar[2].identifierCI.String()) } - case 390: + case 392: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2384 +//line sql.y:2393 { yyVAL.str = encodeSQLString(yyDollar[2].str) } - case 391: + case 393: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *IndexDefinition -//line sql.y:2390 +//line sql.y:2399 { yyLOCAL = &IndexDefinition{Info: yyDollar[1].indexInfoUnion(), Columns: yyDollar[3].indexColumnsUnion(), Options: yyDollar[5].indexOptionsUnion()} } yyVAL.union = yyLOCAL - case 392: + case 394: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL []*IndexOption -//line sql.y:2395 +//line sql.y:2404 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 393: + case 395: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []*IndexOption -//line sql.y:2399 +//line sql.y:2408 { yyLOCAL = yyDollar[1].indexOptionsUnion() } yyVAL.union = yyLOCAL - case 394: + case 396: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []*IndexOption -//line sql.y:2405 +//line sql.y:2414 { yyLOCAL = []*IndexOption{yyDollar[1].indexOptionUnion()} } yyVAL.union = yyLOCAL - case 395: + case 397: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2409 +//line sql.y:2418 { yySLICE := (*[]*IndexOption)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[2].indexOptionUnion()) } - case 396: + case 398: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *IndexOption -//line sql.y:2415 +//line sql.y:2424 { yyLOCAL = yyDollar[1].indexOptionUnion() } yyVAL.union = yyLOCAL - case 397: + case 399: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *IndexOption -//line sql.y:2419 +//line sql.y:2428 { // should not be string yyLOCAL = &IndexOption{Name: string(yyDollar[1].str), Value: NewIntLiteral(yyDollar[3].str)} } yyVAL.union = yyLOCAL - case 398: + case 400: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *IndexOption -//line sql.y:2424 +//line sql.y:2433 { yyLOCAL = &IndexOption{Name: string(yyDollar[1].str), Value: NewStrLiteral(yyDollar[2].str)} } yyVAL.union = yyLOCAL - case 399: + case 401: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *IndexOption -//line sql.y:2428 +//line sql.y:2437 { yyLOCAL = &IndexOption{Name: string(yyDollar[1].str)} } yyVAL.union = yyLOCAL - case 400: + case 402: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *IndexOption -//line sql.y:2432 +//line sql.y:2441 { yyLOCAL = &IndexOption{Name: string(yyDollar[1].str)} } yyVAL.union = yyLOCAL - case 401: + case 403: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *IndexOption -//line sql.y:2436 +//line sql.y:2445 { yyLOCAL = &IndexOption{Name: string(yyDollar[1].str) + " " + string(yyDollar[2].str), String: yyDollar[3].identifierCI.String()} } yyVAL.union = yyLOCAL - case 402: + case 404: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *IndexOption -//line sql.y:2440 +//line sql.y:2449 { yyLOCAL = &IndexOption{Name: string(yyDollar[1].str), Value: NewStrLiteral(yyDollar[3].str)} } yyVAL.union = yyLOCAL - case 403: + case 405: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *IndexOption -//line sql.y:2444 +//line sql.y:2453 { yyLOCAL = &IndexOption{Name: string(yyDollar[1].str), Value: NewStrLiteral(yyDollar[3].str)} } yyVAL.union = yyLOCAL - case 404: + case 406: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2450 +//line sql.y:2459 { yyVAL.str = "" } - case 405: + case 407: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2454 +//line sql.y:2463 { yyVAL.str = string(yyDollar[1].str) } - case 406: + case 408: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *IndexInfo -//line sql.y:2460 +//line sql.y:2469 { yyLOCAL = &IndexInfo{Type: IndexTypePrimary, ConstraintName: NewIdentifierCI(yyDollar[1].str), Name: NewIdentifierCI("PRIMARY")} } yyVAL.union = yyLOCAL - case 407: + case 409: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *IndexInfo -//line sql.y:2464 +//line sql.y:2473 { yyLOCAL = &IndexInfo{Type: IndexTypeSpatial, Name: NewIdentifierCI(yyDollar[3].str)} } yyVAL.union = yyLOCAL - case 408: + case 410: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *IndexInfo -//line sql.y:2468 +//line sql.y:2477 { yyLOCAL = &IndexInfo{Type: IndexTypeFullText, Name: NewIdentifierCI(yyDollar[3].str)} } yyVAL.union = yyLOCAL - case 409: + case 411: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *IndexInfo -//line sql.y:2472 +//line sql.y:2481 { yyLOCAL = &IndexInfo{Type: IndexTypeUnique, ConstraintName: NewIdentifierCI(yyDollar[1].str), Name: NewIdentifierCI(yyDollar[4].str)} } yyVAL.union = yyLOCAL - case 410: + case 412: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *IndexInfo -//line sql.y:2476 +//line sql.y:2485 { yyLOCAL = &IndexInfo{Type: IndexTypeDefault, Name: NewIdentifierCI(yyDollar[2].str)} } yyVAL.union = yyLOCAL - case 411: + case 413: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2481 +//line sql.y:2490 { yyVAL.str = "" } - case 412: + case 414: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2485 +//line sql.y:2494 { yyVAL.str = yyDollar[2].str } - case 413: + case 415: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2491 +//line sql.y:2500 { yyVAL.str = string(yyDollar[1].str) } - case 414: + case 416: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2495 +//line sql.y:2504 { yyVAL.str = string(yyDollar[1].str) } - case 415: + case 417: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2499 +//line sql.y:2508 { yyVAL.str = string(yyDollar[1].str) } - case 416: + case 418: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2505 +//line sql.y:2514 { yyVAL.str = string(yyDollar[1].str) } - case 417: + case 419: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2509 +//line sql.y:2518 { yyVAL.str = string(yyDollar[1].str) } - case 418: + case 420: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2514 +//line sql.y:2523 { yyVAL.str = "" } - case 419: + case 421: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2518 +//line sql.y:2527 { yyVAL.str = yyDollar[1].str } - case 420: + case 422: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2524 +//line sql.y:2533 { yyVAL.str = string(yyDollar[1].str) } - case 421: + case 423: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2528 +//line sql.y:2537 { yyVAL.str = string(yyDollar[1].str) } - case 422: + case 424: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2533 +//line sql.y:2542 { yyVAL.str = "" } - case 423: + case 425: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2537 +//line sql.y:2546 { yyVAL.str = string(yyDollar[1].identifierCI.String()) } - case 424: + case 426: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []*IndexColumn -//line sql.y:2543 +//line sql.y:2552 { yyLOCAL = []*IndexColumn{yyDollar[1].indexColumnUnion()} } yyVAL.union = yyLOCAL - case 425: + case 427: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2547 +//line sql.y:2556 { yySLICE := (*[]*IndexColumn)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].indexColumnUnion()) } - case 426: + case 428: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *IndexColumn -//line sql.y:2553 +//line sql.y:2562 { yyLOCAL = &IndexColumn{Column: yyDollar[1].identifierCI, Length: yyDollar[2].intPtrUnion(), Direction: yyDollar[3].orderDirectionUnion()} } yyVAL.union = yyLOCAL - case 427: + case 429: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *IndexColumn -//line sql.y:2557 +//line sql.y:2566 { yyLOCAL = &IndexColumn{Expression: yyDollar[2].exprUnion(), Direction: yyDollar[4].orderDirectionUnion()} } yyVAL.union = yyLOCAL - case 428: + case 430: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *ConstraintDefinition -//line sql.y:2563 +//line sql.y:2572 { yyLOCAL = &ConstraintDefinition{Name: yyDollar[2].identifierCI, Details: yyDollar[3].constraintInfoUnion()} } yyVAL.union = yyLOCAL - case 429: + case 431: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *ConstraintDefinition -//line sql.y:2567 +//line sql.y:2576 { yyLOCAL = &ConstraintDefinition{Details: yyDollar[1].constraintInfoUnion()} } yyVAL.union = yyLOCAL - case 430: + case 432: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *ConstraintDefinition -//line sql.y:2573 +//line sql.y:2582 { yyLOCAL = &ConstraintDefinition{Name: yyDollar[2].identifierCI, Details: yyDollar[3].constraintInfoUnion()} } yyVAL.union = yyLOCAL - case 431: + case 433: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *ConstraintDefinition -//line sql.y:2577 +//line sql.y:2586 { yyLOCAL = &ConstraintDefinition{Details: yyDollar[1].constraintInfoUnion()} } yyVAL.union = yyLOCAL - case 432: + case 434: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL ConstraintInfo -//line sql.y:2583 +//line sql.y:2592 { yyLOCAL = &ForeignKeyDefinition{IndexName: NewIdentifierCI(yyDollar[3].str), Source: yyDollar[5].columnsUnion(), ReferenceDefinition: yyDollar[7].referenceDefinitionUnion()} } yyVAL.union = yyLOCAL - case 433: + case 435: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *ReferenceDefinition -//line sql.y:2589 +//line sql.y:2598 { yyLOCAL = &ReferenceDefinition{ReferencedTable: yyDollar[2].tableName, ReferencedColumns: yyDollar[4].columnsUnion(), Match: yyDollar[6].matchActionUnion()} } yyVAL.union = yyLOCAL - case 434: + case 436: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL *ReferenceDefinition -//line sql.y:2593 +//line sql.y:2602 { yyLOCAL = &ReferenceDefinition{ReferencedTable: yyDollar[2].tableName, ReferencedColumns: yyDollar[4].columnsUnion(), Match: yyDollar[6].matchActionUnion(), OnDelete: yyDollar[7].referenceActionUnion()} } yyVAL.union = yyLOCAL - case 435: + case 437: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL *ReferenceDefinition -//line sql.y:2597 +//line sql.y:2606 { yyLOCAL = &ReferenceDefinition{ReferencedTable: yyDollar[2].tableName, ReferencedColumns: yyDollar[4].columnsUnion(), Match: yyDollar[6].matchActionUnion(), OnUpdate: yyDollar[7].referenceActionUnion()} } yyVAL.union = yyLOCAL - case 436: + case 438: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL *ReferenceDefinition -//line sql.y:2601 +//line sql.y:2610 { yyLOCAL = &ReferenceDefinition{ReferencedTable: yyDollar[2].tableName, ReferencedColumns: yyDollar[4].columnsUnion(), Match: yyDollar[6].matchActionUnion(), OnDelete: yyDollar[7].referenceActionUnion(), OnUpdate: yyDollar[8].referenceActionUnion()} } yyVAL.union = yyLOCAL - case 437: + case 439: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL *ReferenceDefinition -//line sql.y:2605 +//line sql.y:2614 { yyLOCAL = &ReferenceDefinition{ReferencedTable: yyDollar[2].tableName, ReferencedColumns: yyDollar[4].columnsUnion(), Match: yyDollar[6].matchActionUnion(), OnUpdate: yyDollar[7].referenceActionUnion(), OnDelete: yyDollar[8].referenceActionUnion()} } yyVAL.union = yyLOCAL - case 438: + case 440: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *ReferenceDefinition -//line sql.y:2610 +//line sql.y:2619 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 439: + case 441: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *ReferenceDefinition -//line sql.y:2614 +//line sql.y:2623 { yyLOCAL = yyDollar[1].referenceDefinitionUnion() } yyVAL.union = yyLOCAL - case 440: + case 442: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL ConstraintInfo -//line sql.y:2620 +//line sql.y:2629 { yyLOCAL = &CheckConstraintDefinition{Expr: yyDollar[3].exprUnion(), Enforced: yyDollar[5].booleanUnion()} } yyVAL.union = yyLOCAL - case 441: + case 443: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL MatchAction -//line sql.y:2626 +//line sql.y:2635 { yyLOCAL = yyDollar[2].matchActionUnion() } yyVAL.union = yyLOCAL - case 442: + case 444: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL MatchAction -//line sql.y:2632 +//line sql.y:2641 { yyLOCAL = Full } yyVAL.union = yyLOCAL - case 443: + case 445: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL MatchAction -//line sql.y:2636 +//line sql.y:2645 { yyLOCAL = Partial } yyVAL.union = yyLOCAL - case 444: + case 446: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL MatchAction -//line sql.y:2640 +//line sql.y:2649 { yyLOCAL = Simple } yyVAL.union = yyLOCAL - case 445: + case 447: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL MatchAction -//line sql.y:2645 +//line sql.y:2654 { yyLOCAL = DefaultMatch } yyVAL.union = yyLOCAL - case 446: + case 448: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL MatchAction -//line sql.y:2649 +//line sql.y:2658 { yyLOCAL = yyDollar[1].matchActionUnion() } yyVAL.union = yyLOCAL - case 447: + case 449: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL ReferenceAction -//line sql.y:2655 +//line sql.y:2664 { yyLOCAL = yyDollar[3].referenceActionUnion() } yyVAL.union = yyLOCAL - case 448: + case 450: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL ReferenceAction -//line sql.y:2661 +//line sql.y:2670 { yyLOCAL = yyDollar[3].referenceActionUnion() } yyVAL.union = yyLOCAL - case 449: + case 451: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL ReferenceAction -//line sql.y:2667 +//line sql.y:2676 { yyLOCAL = Restrict } yyVAL.union = yyLOCAL - case 450: + case 452: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL ReferenceAction -//line sql.y:2671 +//line sql.y:2680 { yyLOCAL = Cascade } yyVAL.union = yyLOCAL - case 451: + case 453: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL ReferenceAction -//line sql.y:2675 +//line sql.y:2684 { yyLOCAL = NoAction } yyVAL.union = yyLOCAL - case 452: + case 454: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL ReferenceAction -//line sql.y:2679 +//line sql.y:2688 { yyLOCAL = SetDefault } yyVAL.union = yyLOCAL - case 453: + case 455: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL ReferenceAction -//line sql.y:2683 +//line sql.y:2692 { yyLOCAL = SetNull } yyVAL.union = yyLOCAL - case 454: + case 456: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2688 +//line sql.y:2697 { yyVAL.str = "" } - case 455: + case 457: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2692 +//line sql.y:2701 { yyVAL.str = string(yyDollar[1].str) } - case 456: + case 458: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2696 +//line sql.y:2705 { yyVAL.str = string(yyDollar[1].str) } - case 457: + case 459: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line sql.y:2702 +//line sql.y:2711 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 458: + case 460: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL bool -//line sql.y:2706 +//line sql.y:2715 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 459: + case 461: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line sql.y:2711 +//line sql.y:2720 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 460: + case 462: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line sql.y:2715 +//line sql.y:2724 { yyLOCAL = yyDollar[1].booleanUnion() } yyVAL.union = yyLOCAL - case 461: + case 463: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL TableOptions -//line sql.y:2720 +//line sql.y:2729 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 462: + case 464: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL TableOptions -//line sql.y:2724 +//line sql.y:2733 { yyLOCAL = yyDollar[1].tableOptionsUnion() } yyVAL.union = yyLOCAL - case 463: + case 465: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL TableOptions -//line sql.y:2730 +//line sql.y:2739 { yyLOCAL = TableOptions{yyDollar[1].tableOptionUnion()} } yyVAL.union = yyLOCAL - case 464: + case 466: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2734 +//line sql.y:2743 { yySLICE := (*TableOptions)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].tableOptionUnion()) } - case 465: + case 467: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2738 +//line sql.y:2747 { yySLICE := (*TableOptions)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[2].tableOptionUnion()) } - case 466: + case 468: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL TableOptions -//line sql.y:2744 +//line sql.y:2753 { yyLOCAL = TableOptions{yyDollar[1].tableOptionUnion()} } yyVAL.union = yyLOCAL - case 467: + case 469: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2748 +//line sql.y:2757 { yySLICE := (*TableOptions)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[2].tableOptionUnion()) } - case 468: + case 470: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *TableOption -//line sql.y:2754 +//line sql.y:2763 { yyLOCAL = &TableOption{Name: string(yyDollar[1].str), Value: NewIntLiteral(yyDollar[3].str)} } yyVAL.union = yyLOCAL - case 469: + case 471: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *TableOption -//line sql.y:2758 +//line sql.y:2767 { yyLOCAL = &TableOption{Name: string(yyDollar[1].str), Value: NewIntLiteral(yyDollar[3].str)} } yyVAL.union = yyLOCAL - case 470: + case 472: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *TableOption -//line sql.y:2762 +//line sql.y:2771 { yyLOCAL = &TableOption{Name: string(yyDollar[1].str), Value: NewIntLiteral(yyDollar[3].str)} } yyVAL.union = yyLOCAL - case 471: + case 473: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *TableOption -//line sql.y:2766 +//line sql.y:2775 { yyLOCAL = &TableOption{Name: (string(yyDollar[2].str)), String: yyDollar[4].str, CaseSensitive: true} } yyVAL.union = yyLOCAL - case 472: + case 474: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *TableOption -//line sql.y:2770 +//line sql.y:2779 { yyLOCAL = &TableOption{Name: string(yyDollar[2].str), String: yyDollar[4].str, CaseSensitive: true} } yyVAL.union = yyLOCAL - case 473: + case 475: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *TableOption -//line sql.y:2774 +//line sql.y:2783 { yyLOCAL = &TableOption{Name: string(yyDollar[1].str), Value: NewIntLiteral(yyDollar[3].str)} } yyVAL.union = yyLOCAL - case 474: + case 476: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *TableOption -//line sql.y:2778 +//line sql.y:2787 { yyLOCAL = &TableOption{Name: string(yyDollar[1].str), Value: NewStrLiteral(yyDollar[3].str)} } yyVAL.union = yyLOCAL - case 475: + case 477: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *TableOption -//line sql.y:2782 +//line sql.y:2791 { yyLOCAL = &TableOption{Name: string(yyDollar[1].str), Value: NewStrLiteral(yyDollar[3].str)} } yyVAL.union = yyLOCAL - case 476: + case 478: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *TableOption -//line sql.y:2786 +//line sql.y:2795 { yyLOCAL = &TableOption{Name: string(yyDollar[1].str), Value: NewStrLiteral(yyDollar[3].str)} } yyVAL.union = yyLOCAL - case 477: + case 479: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *TableOption -//line sql.y:2790 +//line sql.y:2799 { yyLOCAL = &TableOption{Name: (string(yyDollar[1].str) + " " + string(yyDollar[2].str)), Value: NewStrLiteral(yyDollar[4].str)} } yyVAL.union = yyLOCAL - case 478: + case 480: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *TableOption -//line sql.y:2794 +//line sql.y:2803 { yyLOCAL = &TableOption{Name: (string(yyDollar[1].str) + " " + string(yyDollar[2].str)), Value: NewStrLiteral(yyDollar[4].str)} } yyVAL.union = yyLOCAL - case 479: + case 481: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *TableOption -//line sql.y:2798 +//line sql.y:2807 { yyLOCAL = &TableOption{Name: string(yyDollar[1].str), Value: NewIntLiteral(yyDollar[3].str)} } yyVAL.union = yyLOCAL - case 480: + case 482: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *TableOption -//line sql.y:2802 +//line sql.y:2811 { yyLOCAL = &TableOption{Name: string(yyDollar[1].str), Value: NewStrLiteral(yyDollar[3].str)} } yyVAL.union = yyLOCAL - case 481: + case 483: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *TableOption -//line sql.y:2806 +//line sql.y:2815 { yyLOCAL = &TableOption{Name: string(yyDollar[1].str), String: yyDollar[3].identifierCS.String(), CaseSensitive: true} } yyVAL.union = yyLOCAL - case 482: + case 484: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *TableOption -//line sql.y:2810 +//line sql.y:2819 { yyLOCAL = &TableOption{Name: string(yyDollar[1].str), Value: NewStrLiteral(yyDollar[3].str)} } yyVAL.union = yyLOCAL - case 483: + case 485: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *TableOption -//line sql.y:2814 +//line sql.y:2823 { yyLOCAL = &TableOption{Name: string(yyDollar[1].str), String: string(yyDollar[3].str)} } yyVAL.union = yyLOCAL - case 484: + case 486: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *TableOption -//line sql.y:2818 +//line sql.y:2827 { yyLOCAL = &TableOption{Name: string(yyDollar[1].str), Value: NewIntLiteral(yyDollar[3].str)} } yyVAL.union = yyLOCAL - case 485: + case 487: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *TableOption -//line sql.y:2822 +//line sql.y:2831 { yyLOCAL = &TableOption{Name: string(yyDollar[1].str), Value: NewIntLiteral(yyDollar[3].str)} } yyVAL.union = yyLOCAL - case 486: + case 488: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *TableOption -//line sql.y:2826 +//line sql.y:2835 { yyLOCAL = &TableOption{Name: string(yyDollar[1].str), Value: NewIntLiteral(yyDollar[3].str)} } yyVAL.union = yyLOCAL - case 487: + case 489: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *TableOption -//line sql.y:2830 +//line sql.y:2839 { yyLOCAL = &TableOption{Name: string(yyDollar[1].str), Value: NewIntLiteral(yyDollar[3].str)} } yyVAL.union = yyLOCAL - case 488: + case 490: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *TableOption -//line sql.y:2834 +//line sql.y:2843 { yyLOCAL = &TableOption{Name: string(yyDollar[1].str), String: string(yyDollar[3].str)} } yyVAL.union = yyLOCAL - case 489: + case 491: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *TableOption -//line sql.y:2838 +//line sql.y:2847 { yyLOCAL = &TableOption{Name: string(yyDollar[1].str), Value: NewStrLiteral(yyDollar[3].str)} } yyVAL.union = yyLOCAL - case 490: + case 492: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *TableOption -//line sql.y:2842 +//line sql.y:2851 { yyLOCAL = &TableOption{Name: string(yyDollar[1].str), String: string(yyDollar[3].str)} } yyVAL.union = yyLOCAL - case 491: + case 493: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *TableOption -//line sql.y:2846 +//line sql.y:2855 { yyLOCAL = &TableOption{Name: string(yyDollar[1].str), Value: NewStrLiteral(yyDollar[3].str)} } yyVAL.union = yyLOCAL - case 492: + case 494: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *TableOption -//line sql.y:2850 +//line sql.y:2859 { yyLOCAL = &TableOption{Name: string(yyDollar[1].str), Value: NewIntLiteral(yyDollar[3].str)} } yyVAL.union = yyLOCAL - case 493: + case 495: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *TableOption -//line sql.y:2854 +//line sql.y:2863 { yyLOCAL = &TableOption{Name: string(yyDollar[1].str), String: string(yyDollar[3].str)} } yyVAL.union = yyLOCAL - case 494: + case 496: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *TableOption -//line sql.y:2858 +//line sql.y:2867 { yyLOCAL = &TableOption{Name: string(yyDollar[1].str), Value: NewIntLiteral(yyDollar[3].str)} } yyVAL.union = yyLOCAL - case 495: + case 497: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *TableOption -//line sql.y:2862 +//line sql.y:2871 { yyLOCAL = &TableOption{Name: string(yyDollar[1].str), String: string(yyDollar[3].str)} } yyVAL.union = yyLOCAL - case 496: + case 498: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *TableOption -//line sql.y:2866 +//line sql.y:2875 { yyLOCAL = &TableOption{Name: string(yyDollar[1].str), Value: NewIntLiteral(yyDollar[3].str)} } yyVAL.union = yyLOCAL - case 497: + case 499: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *TableOption -//line sql.y:2870 +//line sql.y:2879 { yyLOCAL = &TableOption{Name: string(yyDollar[1].str), String: (yyDollar[3].identifierCI.String() + yyDollar[4].str), CaseSensitive: true} } yyVAL.union = yyLOCAL - case 498: + case 500: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *TableOption -//line sql.y:2874 +//line sql.y:2883 { yyLOCAL = &TableOption{Name: string(yyDollar[1].str), Tables: yyDollar[4].tableNamesUnion()} } yyVAL.union = yyLOCAL - case 499: + case 501: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2879 +//line sql.y:2888 { yyVAL.str = "" } - case 500: + case 502: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2883 +//line sql.y:2892 { yyVAL.str = " " + string(yyDollar[1].str) + " " + string(yyDollar[2].str) } - case 501: + case 503: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2887 +//line sql.y:2896 { yyVAL.str = " " + string(yyDollar[1].str) + " " + string(yyDollar[2].str) } - case 511: + case 513: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2906 +//line sql.y:2915 { yyVAL.str = String(TableName{Qualifier: yyDollar[1].identifierCS, Name: yyDollar[3].identifierCS}) } - case 512: + case 514: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2910 +//line sql.y:2919 { yyVAL.str = yyDollar[1].identifierCI.String() } - case 513: + case 515: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2914 +//line sql.y:2923 { yyVAL.str = encodeSQLString(yyDollar[1].str) } - case 514: + case 516: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:2918 +//line sql.y:2927 { yyVAL.str = string(yyDollar[1].str) } - case 515: + case 517: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2923 +//line sql.y:2932 { yyVAL.str = "" } - case 517: + case 519: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line sql.y:2929 +//line sql.y:2938 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 518: + case 520: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line sql.y:2933 +//line sql.y:2942 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 519: + case 521: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *ColName -//line sql.y:2938 +//line sql.y:2947 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 520: + case 522: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *ColName -//line sql.y:2942 +//line sql.y:2951 { yyLOCAL = yyDollar[2].colNameUnion() } yyVAL.union = yyLOCAL - case 521: + case 523: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:2947 +//line sql.y:2956 { yyVAL.str = "" } - case 522: + case 524: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:2951 +//line sql.y:2960 { yyVAL.str = string(yyDollar[2].str) } - case 523: + case 525: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *Literal -//line sql.y:2956 +//line sql.y:2965 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 524: + case 526: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *Literal -//line sql.y:2960 +//line sql.y:2969 { yyLOCAL = NewIntLiteral(yyDollar[2].str) } yyVAL.union = yyLOCAL - case 525: + case 527: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *Literal -//line sql.y:2964 +//line sql.y:2973 { yyLOCAL = NewDecimalLiteral(yyDollar[2].str) } yyVAL.union = yyLOCAL - case 526: + case 528: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL []AlterOption -//line sql.y:2969 +//line sql.y:2978 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 527: + case 529: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []AlterOption -//line sql.y:2973 +//line sql.y:2982 { yyLOCAL = yyDollar[1].alterOptionsUnion() } yyVAL.union = yyLOCAL - case 528: + case 530: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:2977 +//line sql.y:2986 { yySLICE := (*[]AlterOption)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, &OrderByOption{Cols: yyDollar[5].columnsUnion()}) } - case 529: + case 531: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []AlterOption -//line sql.y:2981 +//line sql.y:2990 { yyLOCAL = yyDollar[1].alterOptionsUnion() } yyVAL.union = yyLOCAL - case 530: + case 532: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2985 +//line sql.y:2994 { yySLICE := (*[]AlterOption)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].alterOptionsUnion()...) } - case 531: + case 533: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL []AlterOption -//line sql.y:2989 +//line sql.y:2998 { yyLOCAL = append(append(yyDollar[1].alterOptionsUnion(), yyDollar[3].alterOptionsUnion()...), &OrderByOption{Cols: yyDollar[7].columnsUnion()}) } yyVAL.union = yyLOCAL - case 532: + case 534: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []AlterOption -//line sql.y:2995 +//line sql.y:3004 { yyLOCAL = []AlterOption{yyDollar[1].alterOptionUnion()} } yyVAL.union = yyLOCAL - case 533: + case 535: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:2999 +//line sql.y:3008 { yySLICE := (*[]AlterOption)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].alterOptionUnion()) } - case 534: + case 536: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3003 +//line sql.y:3012 { yySLICE := (*[]AlterOption)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].alterOptionUnion()) } - case 535: + case 537: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL AlterOption -//line sql.y:3009 +//line sql.y:3018 { yyLOCAL = yyDollar[1].tableOptionsUnion() } yyVAL.union = yyLOCAL - case 536: + case 538: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL AlterOption -//line sql.y:3013 +//line sql.y:3022 { yyLOCAL = &AddConstraintDefinition{ConstraintDefinition: yyDollar[2].constraintDefinitionUnion()} } yyVAL.union = yyLOCAL - case 537: + case 539: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL AlterOption -//line sql.y:3017 +//line sql.y:3026 { yyLOCAL = &AddConstraintDefinition{ConstraintDefinition: yyDollar[2].constraintDefinitionUnion()} } yyVAL.union = yyLOCAL - case 538: + case 540: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL AlterOption -//line sql.y:3021 +//line sql.y:3030 { yyLOCAL = &AddIndexDefinition{IndexDefinition: yyDollar[2].indexDefinitionUnion()} } yyVAL.union = yyLOCAL - case 539: + case 541: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL AlterOption -//line sql.y:3025 +//line sql.y:3034 { yyLOCAL = &AddColumns{Columns: yyDollar[4].columnDefinitionsUnion()} } yyVAL.union = yyLOCAL - case 540: + case 542: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL AlterOption -//line sql.y:3029 +//line sql.y:3038 { yyLOCAL = &AddColumns{Columns: []*ColumnDefinition{yyDollar[3].columnDefinitionUnion()}, First: yyDollar[4].booleanUnion(), After: yyDollar[5].colNameUnion()} } yyVAL.union = yyLOCAL - case 541: + case 543: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL AlterOption -//line sql.y:3033 +//line sql.y:3042 { yyLOCAL = &AlterColumn{Column: yyDollar[3].colNameUnion(), DropDefault: true} } yyVAL.union = yyLOCAL - case 542: + case 544: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL AlterOption -//line sql.y:3037 +//line sql.y:3046 { yyLOCAL = &AlterColumn{Column: yyDollar[3].colNameUnion(), DropDefault: false, DefaultVal: yyDollar[6].exprUnion(), DefaultLiteral: true} } yyVAL.union = yyLOCAL - case 543: + case 545: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL AlterOption -//line sql.y:3041 +//line sql.y:3050 { yyLOCAL = &AlterColumn{Column: yyDollar[3].colNameUnion(), DropDefault: false, DefaultVal: yyDollar[7].exprUnion()} } yyVAL.union = yyLOCAL - case 544: + case 546: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL AlterOption -//line sql.y:3045 +//line sql.y:3054 { yyLOCAL = &AlterColumn{Column: yyDollar[3].colNameUnion(), Invisible: ptr.Of(false)} } yyVAL.union = yyLOCAL - case 545: + case 547: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL AlterOption -//line sql.y:3049 +//line sql.y:3058 { yyLOCAL = &AlterColumn{Column: yyDollar[3].colNameUnion(), Invisible: ptr.Of(true)} } yyVAL.union = yyLOCAL - case 546: + case 548: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL AlterOption -//line sql.y:3053 +//line sql.y:3062 { yyLOCAL = &AlterCheck{Name: yyDollar[3].identifierCI, Enforced: yyDollar[4].booleanUnion()} } yyVAL.union = yyLOCAL - case 547: + case 549: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL AlterOption -//line sql.y:3057 +//line sql.y:3066 { yyLOCAL = &AlterIndex{Name: yyDollar[3].identifierCI, Invisible: false} } yyVAL.union = yyLOCAL - case 548: + case 550: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL AlterOption -//line sql.y:3061 +//line sql.y:3070 { yyLOCAL = &AlterIndex{Name: yyDollar[3].identifierCI, Invisible: true} } yyVAL.union = yyLOCAL - case 549: + case 551: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL AlterOption -//line sql.y:3065 +//line sql.y:3074 { yyLOCAL = &ChangeColumn{OldColumn: yyDollar[3].colNameUnion(), NewColDefinition: yyDollar[4].columnDefinitionUnion(), First: yyDollar[5].booleanUnion(), After: yyDollar[6].colNameUnion()} } yyVAL.union = yyLOCAL - case 550: + case 552: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL AlterOption -//line sql.y:3069 +//line sql.y:3078 { yyLOCAL = &ModifyColumn{NewColDefinition: yyDollar[3].columnDefinitionUnion(), First: yyDollar[4].booleanUnion(), After: yyDollar[5].colNameUnion()} } yyVAL.union = yyLOCAL - case 551: + case 553: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL AlterOption -//line sql.y:3073 +//line sql.y:3082 { yyLOCAL = &RenameColumn{OldName: yyDollar[3].colNameUnion(), NewName: yyDollar[5].colNameUnion()} } yyVAL.union = yyLOCAL - case 552: + case 554: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL AlterOption -//line sql.y:3077 +//line sql.y:3086 { yyLOCAL = &AlterCharset{CharacterSet: yyDollar[4].str, Collate: yyDollar[5].str} } yyVAL.union = yyLOCAL - case 553: + case 555: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL AlterOption -//line sql.y:3081 +//line sql.y:3090 { yyLOCAL = &KeyState{Enable: false} } yyVAL.union = yyLOCAL - case 554: + case 556: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL AlterOption -//line sql.y:3085 +//line sql.y:3094 { yyLOCAL = &KeyState{Enable: true} } yyVAL.union = yyLOCAL - case 555: + case 557: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL AlterOption -//line sql.y:3089 +//line sql.y:3098 { yyLOCAL = &TablespaceOperation{Import: false} } yyVAL.union = yyLOCAL - case 556: + case 558: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL AlterOption -//line sql.y:3093 +//line sql.y:3102 { yyLOCAL = &TablespaceOperation{Import: true} } yyVAL.union = yyLOCAL - case 557: + case 559: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL AlterOption -//line sql.y:3097 +//line sql.y:3106 { yyLOCAL = &DropColumn{Name: yyDollar[3].colNameUnion()} } yyVAL.union = yyLOCAL - case 558: + case 560: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL AlterOption -//line sql.y:3101 +//line sql.y:3110 { yyLOCAL = &DropKey{Type: NormalKeyType, Name: yyDollar[3].identifierCI} } yyVAL.union = yyLOCAL - case 559: + case 561: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL AlterOption -//line sql.y:3105 +//line sql.y:3114 { yyLOCAL = &DropKey{Type: PrimaryKeyType} } yyVAL.union = yyLOCAL - case 560: + case 562: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL AlterOption -//line sql.y:3109 +//line sql.y:3118 { yyLOCAL = &DropKey{Type: ForeignKeyType, Name: yyDollar[4].identifierCI} } yyVAL.union = yyLOCAL - case 561: + case 563: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL AlterOption -//line sql.y:3113 +//line sql.y:3122 { yyLOCAL = &DropKey{Type: CheckKeyType, Name: yyDollar[3].identifierCI} } yyVAL.union = yyLOCAL - case 562: + case 564: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL AlterOption -//line sql.y:3117 +//line sql.y:3126 { yyLOCAL = &DropKey{Type: CheckKeyType, Name: yyDollar[3].identifierCI} } yyVAL.union = yyLOCAL - case 563: + case 565: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL AlterOption -//line sql.y:3121 +//line sql.y:3130 { yyLOCAL = &Force{} } yyVAL.union = yyLOCAL - case 564: + case 566: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL AlterOption -//line sql.y:3125 +//line sql.y:3134 { yyLOCAL = &RenameTableName{Table: yyDollar[3].tableName} } yyVAL.union = yyLOCAL - case 565: + case 567: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL AlterOption -//line sql.y:3129 +//line sql.y:3138 { yyLOCAL = &RenameIndex{OldName: yyDollar[3].identifierCI, NewName: yyDollar[5].identifierCI} } yyVAL.union = yyLOCAL - case 566: + case 568: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []AlterOption -//line sql.y:3135 +//line sql.y:3144 { yyLOCAL = []AlterOption{yyDollar[1].alterOptionUnion()} } yyVAL.union = yyLOCAL - case 567: + case 569: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3139 +//line sql.y:3148 { yySLICE := (*[]AlterOption)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].alterOptionUnion()) } - case 568: + case 570: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL AlterOption -//line sql.y:3145 +//line sql.y:3154 { yyLOCAL = AlgorithmValue(string(yyDollar[3].str)) } yyVAL.union = yyLOCAL - case 569: + case 571: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL AlterOption -//line sql.y:3149 +//line sql.y:3158 { yyLOCAL = AlgorithmValue(string(yyDollar[3].str)) } yyVAL.union = yyLOCAL - case 570: + case 572: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL AlterOption -//line sql.y:3153 +//line sql.y:3162 { yyLOCAL = AlgorithmValue(string(yyDollar[3].str)) } yyVAL.union = yyLOCAL - case 571: + case 573: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL AlterOption -//line sql.y:3157 +//line sql.y:3166 { yyLOCAL = AlgorithmValue(string(yyDollar[3].str)) } yyVAL.union = yyLOCAL - case 572: + case 574: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL AlterOption -//line sql.y:3161 +//line sql.y:3170 { yyLOCAL = &LockOption{Type: DefaultType} } yyVAL.union = yyLOCAL - case 573: + case 575: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL AlterOption -//line sql.y:3165 +//line sql.y:3174 { yyLOCAL = &LockOption{Type: NoneType} } yyVAL.union = yyLOCAL - case 574: + case 576: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL AlterOption -//line sql.y:3169 +//line sql.y:3178 { yyLOCAL = &LockOption{Type: SharedType} } yyVAL.union = yyLOCAL - case 575: + case 577: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL AlterOption -//line sql.y:3173 +//line sql.y:3182 { yyLOCAL = &LockOption{Type: ExclusiveType} } yyVAL.union = yyLOCAL - case 576: + case 578: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL AlterOption -//line sql.y:3177 +//line sql.y:3186 { yyLOCAL = &Validation{With: true} } yyVAL.union = yyLOCAL - case 577: + case 579: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL AlterOption -//line sql.y:3181 +//line sql.y:3190 { yyLOCAL = &Validation{With: false} } yyVAL.union = yyLOCAL - case 578: + case 580: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Statement -//line sql.y:3187 +//line sql.y:3196 { yyDollar[1].alterTableUnion().FullyParsed = true yyDollar[1].alterTableUnion().AlterOptions = yyDollar[2].alterOptionsUnion() @@ -14306,10 +14286,10 @@ yydefault: yyLOCAL = yyDollar[1].alterTableUnion() } yyVAL.union = yyLOCAL - case 579: + case 581: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Statement -//line sql.y:3194 +//line sql.y:3203 { yyDollar[1].alterTableUnion().FullyParsed = true yyDollar[1].alterTableUnion().AlterOptions = yyDollar[2].alterOptionsUnion() @@ -14317,10 +14297,10 @@ yydefault: yyLOCAL = yyDollar[1].alterTableUnion() } yyVAL.union = yyLOCAL - case 580: + case 582: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Statement -//line sql.y:3201 +//line sql.y:3210 { yyDollar[1].alterTableUnion().FullyParsed = true yyDollar[1].alterTableUnion().AlterOptions = yyDollar[2].alterOptionsUnion() @@ -14328,28 +14308,28 @@ yydefault: yyLOCAL = yyDollar[1].alterTableUnion() } yyVAL.union = yyLOCAL - case 581: + case 583: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Statement -//line sql.y:3208 +//line sql.y:3217 { yyDollar[1].alterTableUnion().FullyParsed = true yyDollar[1].alterTableUnion().PartitionSpec = yyDollar[2].partSpecUnion() yyLOCAL = yyDollar[1].alterTableUnion() } yyVAL.union = yyLOCAL - case 582: + case 584: yyDollar = yyS[yypt-11 : yypt+1] var yyLOCAL Statement -//line sql.y:3214 +//line sql.y:3223 { yyLOCAL = &AlterView{ViewName: yyDollar[7].tableName, Comments: Comments(yyDollar[2].strs).Parsed(), Algorithm: yyDollar[3].str, Definer: yyDollar[4].definerUnion(), Security: yyDollar[5].str, Columns: yyDollar[8].columnsUnion(), Select: yyDollar[10].tableStmtUnion(), CheckOption: yyDollar[11].str} } yyVAL.union = yyLOCAL - case 583: + case 585: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Statement -//line sql.y:3224 +//line sql.y:3233 { yyDollar[1].alterDatabaseUnion().FullyParsed = true yyDollar[1].alterDatabaseUnion().DBName = yyDollar[2].identifierCS @@ -14357,10 +14337,10 @@ yydefault: yyLOCAL = yyDollar[1].alterDatabaseUnion() } yyVAL.union = yyLOCAL - case 584: + case 586: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Statement -//line sql.y:3231 +//line sql.y:3240 { yyDollar[1].alterDatabaseUnion().FullyParsed = true yyDollar[1].alterDatabaseUnion().DBName = yyDollar[2].identifierCS @@ -14368,10 +14348,10 @@ yydefault: yyLOCAL = yyDollar[1].alterDatabaseUnion() } yyVAL.union = yyLOCAL - case 585: + case 587: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Statement -//line sql.y:3238 +//line sql.y:3247 { yyLOCAL = &AlterVschema{ Action: CreateVindexDDLAction, @@ -14384,10 +14364,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 586: + case 588: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Statement -//line sql.y:3250 +//line sql.y:3259 { yyLOCAL = &AlterVschema{ Action: DropVindexDDLAction, @@ -14398,26 +14378,26 @@ yydefault: } } yyVAL.union = yyLOCAL - case 587: + case 589: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Statement -//line sql.y:3260 +//line sql.y:3269 { yyLOCAL = &AlterVschema{Action: AddVschemaTableDDLAction, Table: yyDollar[6].tableName} } yyVAL.union = yyLOCAL - case 588: + case 590: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Statement -//line sql.y:3264 +//line sql.y:3273 { yyLOCAL = &AlterVschema{Action: DropVschemaTableDDLAction, Table: yyDollar[6].tableName} } yyVAL.union = yyLOCAL - case 589: + case 591: yyDollar = yyS[yypt-13 : yypt+1] var yyLOCAL Statement -//line sql.y:3268 +//line sql.y:3277 { yyLOCAL = &AlterVschema{ Action: AddColVindexDDLAction, @@ -14431,10 +14411,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 590: + case 592: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Statement -//line sql.y:3281 +//line sql.y:3290 { yyLOCAL = &AlterVschema{ Action: DropColVindexDDLAction, @@ -14445,26 +14425,26 @@ yydefault: } } yyVAL.union = yyLOCAL - case 591: + case 593: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Statement -//line sql.y:3291 +//line sql.y:3300 { yyLOCAL = &AlterVschema{Action: AddSequenceDDLAction, Table: yyDollar[6].tableName} } yyVAL.union = yyLOCAL - case 592: + case 594: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Statement -//line sql.y:3295 +//line sql.y:3304 { yyLOCAL = &AlterVschema{Action: DropSequenceDDLAction, Table: yyDollar[6].tableName} } yyVAL.union = yyLOCAL - case 593: + case 595: yyDollar = yyS[yypt-10 : yypt+1] var yyLOCAL Statement -//line sql.y:3299 +//line sql.y:3308 { yyLOCAL = &AlterVschema{ Action: AddAutoIncDDLAction, @@ -14476,10 +14456,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 594: + case 596: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL Statement -//line sql.y:3310 +//line sql.y:3319 { yyLOCAL = &AlterVschema{ Action: DropAutoIncDDLAction, @@ -14487,10 +14467,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 595: + case 597: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Statement -//line sql.y:3317 +//line sql.y:3326 { yyLOCAL = &AlterMigration{ Type: RetryMigrationType, @@ -14498,10 +14478,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 596: + case 598: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Statement -//line sql.y:3324 +//line sql.y:3333 { yyLOCAL = &AlterMigration{ Type: CleanupMigrationType, @@ -14509,20 +14489,20 @@ yydefault: } } yyVAL.union = yyLOCAL - case 597: + case 599: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Statement -//line sql.y:3331 +//line sql.y:3340 { yyLOCAL = &AlterMigration{ Type: CleanupAllMigrationType, } } yyVAL.union = yyLOCAL - case 598: + case 600: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Statement -//line sql.y:3337 +//line sql.y:3346 { yyLOCAL = &AlterMigration{ Type: LaunchMigrationType, @@ -14530,10 +14510,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 599: + case 601: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL Statement -//line sql.y:3344 +//line sql.y:3353 { yyLOCAL = &AlterMigration{ Type: LaunchMigrationType, @@ -14542,20 +14522,20 @@ yydefault: } } yyVAL.union = yyLOCAL - case 600: + case 602: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Statement -//line sql.y:3352 +//line sql.y:3361 { yyLOCAL = &AlterMigration{ Type: LaunchAllMigrationType, } } yyVAL.union = yyLOCAL - case 601: + case 603: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Statement -//line sql.y:3358 +//line sql.y:3367 { yyLOCAL = &AlterMigration{ Type: CompleteMigrationType, @@ -14563,20 +14543,20 @@ yydefault: } } yyVAL.union = yyLOCAL - case 602: + case 604: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Statement -//line sql.y:3365 +//line sql.y:3374 { yyLOCAL = &AlterMigration{ Type: CompleteAllMigrationType, } } yyVAL.union = yyLOCAL - case 603: + case 605: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Statement -//line sql.y:3371 +//line sql.y:3380 { yyLOCAL = &AlterMigration{ Type: CancelMigrationType, @@ -14584,20 +14564,20 @@ yydefault: } } yyVAL.union = yyLOCAL - case 604: + case 606: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Statement -//line sql.y:3378 +//line sql.y:3387 { yyLOCAL = &AlterMigration{ Type: CancelAllMigrationType, } } yyVAL.union = yyLOCAL - case 605: + case 607: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL Statement -//line sql.y:3384 +//line sql.y:3393 { yyLOCAL = &AlterMigration{ Type: ThrottleMigrationType, @@ -14607,10 +14587,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 606: + case 608: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL Statement -//line sql.y:3393 +//line sql.y:3402 { yyLOCAL = &AlterMigration{ Type: ThrottleAllMigrationType, @@ -14619,10 +14599,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 607: + case 609: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Statement -//line sql.y:3401 +//line sql.y:3410 { yyLOCAL = &AlterMigration{ Type: UnthrottleMigrationType, @@ -14630,20 +14610,20 @@ yydefault: } } yyVAL.union = yyLOCAL - case 608: + case 610: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Statement -//line sql.y:3408 +//line sql.y:3417 { yyLOCAL = &AlterMigration{ Type: UnthrottleAllMigrationType, } } yyVAL.union = yyLOCAL - case 609: + case 611: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Statement -//line sql.y:3414 +//line sql.y:3423 { yyLOCAL = &AlterMigration{ Type: ForceCutOverMigrationType, @@ -14651,20 +14631,20 @@ yydefault: } } yyVAL.union = yyLOCAL - case 610: + case 612: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Statement -//line sql.y:3421 +//line sql.y:3430 { yyLOCAL = &AlterMigration{ Type: ForceCutOverAllMigrationType, } } yyVAL.union = yyLOCAL - case 611: + case 613: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Statement -//line sql.y:3427 +//line sql.y:3436 { yyLOCAL = &AlterMigration{ Type: SetCutOverThresholdMigrationType, @@ -14673,18 +14653,18 @@ yydefault: } } yyVAL.union = yyLOCAL - case 612: + case 614: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *PartitionOption -//line sql.y:3436 +//line sql.y:3445 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 613: + case 615: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *PartitionOption -//line sql.y:3440 +//line sql.y:3449 { yyDollar[3].partitionOptionUnion().Partitions = yyDollar[4].integerUnion() yyDollar[3].partitionOptionUnion().SubPartition = yyDollar[5].subPartitionUnion() @@ -14692,10 +14672,10 @@ yydefault: yyLOCAL = yyDollar[3].partitionOptionUnion() } yyVAL.union = yyLOCAL - case 614: + case 616: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *PartitionOption -//line sql.y:3449 +//line sql.y:3458 { yyLOCAL = &PartitionOption{ IsLinear: yyDollar[1].booleanUnion(), @@ -14704,10 +14684,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 615: + case 617: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *PartitionOption -//line sql.y:3457 +//line sql.y:3466 { yyLOCAL = &PartitionOption{ IsLinear: yyDollar[1].booleanUnion(), @@ -14717,10 +14697,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 616: + case 618: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *PartitionOption -//line sql.y:3466 +//line sql.y:3475 { yyLOCAL = &PartitionOption{ Type: yyDollar[1].partitionByTypeUnion(), @@ -14728,10 +14708,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 617: + case 619: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *PartitionOption -//line sql.y:3473 +//line sql.y:3482 { yyLOCAL = &PartitionOption{ Type: yyDollar[1].partitionByTypeUnion(), @@ -14739,18 +14719,18 @@ yydefault: } } yyVAL.union = yyLOCAL - case 618: + case 620: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *SubPartition -//line sql.y:3481 +//line sql.y:3490 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 619: + case 621: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL *SubPartition -//line sql.y:3485 +//line sql.y:3494 { yyLOCAL = &SubPartition{ IsLinear: yyDollar[3].booleanUnion(), @@ -14760,10 +14740,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 620: + case 622: yyDollar = yyS[yypt-9 : yypt+1] var yyLOCAL *SubPartition -//line sql.y:3494 +//line sql.y:3503 { yyLOCAL = &SubPartition{ IsLinear: yyDollar[3].booleanUnion(), @@ -14774,678 +14754,678 @@ yydefault: } } yyVAL.union = yyLOCAL - case 621: + case 623: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL []*PartitionDefinition -//line sql.y:3505 +//line sql.y:3514 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 622: + case 624: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []*PartitionDefinition -//line sql.y:3509 +//line sql.y:3518 { yyLOCAL = yyDollar[2].partDefsUnion() } yyVAL.union = yyLOCAL - case 623: + case 625: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line sql.y:3514 +//line sql.y:3523 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 624: + case 626: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line sql.y:3518 +//line sql.y:3527 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 625: + case 627: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL int -//line sql.y:3523 +//line sql.y:3532 { yyLOCAL = 0 } yyVAL.union = yyLOCAL - case 626: + case 628: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL int -//line sql.y:3527 +//line sql.y:3536 { yyLOCAL = convertStringToInt(yyDollar[3].str) } yyVAL.union = yyLOCAL - case 627: + case 629: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL TableExpr -//line sql.y:3533 +//line sql.y:3542 { yyLOCAL = &JSONTableExpr{Expr: yyDollar[3].exprUnion(), Filter: yyDollar[5].exprUnion(), Columns: yyDollar[6].jtColumnListUnion(), Alias: yyDollar[8].identifierCS} } yyVAL.union = yyLOCAL - case 628: + case 630: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL []*JtColumnDefinition -//line sql.y:3539 +//line sql.y:3548 { yyLOCAL = yyDollar[3].jtColumnListUnion() } yyVAL.union = yyLOCAL - case 629: + case 631: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []*JtColumnDefinition -//line sql.y:3545 +//line sql.y:3554 { yyLOCAL = []*JtColumnDefinition{yyDollar[1].jtColumnDefinitionUnion()} } yyVAL.union = yyLOCAL - case 630: + case 632: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3549 +//line sql.y:3558 { yySLICE := (*[]*JtColumnDefinition)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].jtColumnDefinitionUnion()) } - case 631: + case 633: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *JtColumnDefinition -//line sql.y:3555 +//line sql.y:3564 { yyLOCAL = &JtColumnDefinition{JtOrdinal: &JtOrdinalColDef{Name: yyDollar[1].identifierCI}} } yyVAL.union = yyLOCAL - case 632: + case 634: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *JtColumnDefinition -//line sql.y:3559 +//line sql.y:3568 { yyDollar[2].columnType.Options = &ColumnTypeOptions{Collate: yyDollar[3].str} jtPath := &JtPathColDef{Name: yyDollar[1].identifierCI, Type: yyDollar[2].columnType, JtColExists: yyDollar[4].booleanUnion(), Path: yyDollar[6].exprUnion()} yyLOCAL = &JtColumnDefinition{JtPath: jtPath} } yyVAL.union = yyLOCAL - case 633: + case 635: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL *JtColumnDefinition -//line sql.y:3565 +//line sql.y:3574 { yyDollar[2].columnType.Options = &ColumnTypeOptions{Collate: yyDollar[3].str} jtPath := &JtPathColDef{Name: yyDollar[1].identifierCI, Type: yyDollar[2].columnType, JtColExists: yyDollar[4].booleanUnion(), Path: yyDollar[6].exprUnion(), EmptyOnResponse: yyDollar[7].jtOnResponseUnion()} yyLOCAL = &JtColumnDefinition{JtPath: jtPath} } yyVAL.union = yyLOCAL - case 634: + case 636: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL *JtColumnDefinition -//line sql.y:3571 +//line sql.y:3580 { yyDollar[2].columnType.Options = &ColumnTypeOptions{Collate: yyDollar[3].str} jtPath := &JtPathColDef{Name: yyDollar[1].identifierCI, Type: yyDollar[2].columnType, JtColExists: yyDollar[4].booleanUnion(), Path: yyDollar[6].exprUnion(), ErrorOnResponse: yyDollar[7].jtOnResponseUnion()} yyLOCAL = &JtColumnDefinition{JtPath: jtPath} } yyVAL.union = yyLOCAL - case 635: + case 637: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL *JtColumnDefinition -//line sql.y:3577 +//line sql.y:3586 { yyDollar[2].columnType.Options = &ColumnTypeOptions{Collate: yyDollar[3].str} jtPath := &JtPathColDef{Name: yyDollar[1].identifierCI, Type: yyDollar[2].columnType, JtColExists: yyDollar[4].booleanUnion(), Path: yyDollar[6].exprUnion(), EmptyOnResponse: yyDollar[7].jtOnResponseUnion(), ErrorOnResponse: yyDollar[8].jtOnResponseUnion()} yyLOCAL = &JtColumnDefinition{JtPath: jtPath} } yyVAL.union = yyLOCAL - case 636: + case 638: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *JtColumnDefinition -//line sql.y:3583 +//line sql.y:3592 { jtNestedPath := &JtNestedPathColDef{Path: yyDollar[3].exprUnion(), Columns: yyDollar[4].jtColumnListUnion()} yyLOCAL = &JtColumnDefinition{JtNestedPath: jtNestedPath} } yyVAL.union = yyLOCAL - case 637: + case 639: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line sql.y:3589 +//line sql.y:3598 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 638: + case 640: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line sql.y:3593 +//line sql.y:3602 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 639: + case 641: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line sql.y:3597 +//line sql.y:3606 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 640: + case 642: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line sql.y:3601 +//line sql.y:3610 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 641: + case 643: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *JtOnResponse -//line sql.y:3607 +//line sql.y:3616 { yyLOCAL = yyDollar[1].jtOnResponseUnion() } yyVAL.union = yyLOCAL - case 642: + case 644: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *JtOnResponse -//line sql.y:3613 +//line sql.y:3622 { yyLOCAL = yyDollar[1].jtOnResponseUnion() } yyVAL.union = yyLOCAL - case 643: + case 645: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *JtOnResponse -//line sql.y:3619 +//line sql.y:3628 { yyLOCAL = &JtOnResponse{ResponseType: ErrorJSONType} } yyVAL.union = yyLOCAL - case 644: + case 646: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *JtOnResponse -//line sql.y:3623 +//line sql.y:3632 { yyLOCAL = &JtOnResponse{ResponseType: NullJSONType} } yyVAL.union = yyLOCAL - case 645: + case 647: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *JtOnResponse -//line sql.y:3627 +//line sql.y:3636 { yyLOCAL = &JtOnResponse{ResponseType: DefaultJSONType, Expr: yyDollar[2].exprUnion()} } yyVAL.union = yyLOCAL - case 646: + case 648: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL PartitionByType -//line sql.y:3633 +//line sql.y:3642 { yyLOCAL = RangeType } yyVAL.union = yyLOCAL - case 647: + case 649: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL PartitionByType -//line sql.y:3637 +//line sql.y:3646 { yyLOCAL = ListType } yyVAL.union = yyLOCAL - case 648: + case 650: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL int -//line sql.y:3642 +//line sql.y:3651 { yyLOCAL = -1 } yyVAL.union = yyLOCAL - case 649: + case 651: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL int -//line sql.y:3646 +//line sql.y:3655 { yyLOCAL = convertStringToInt(yyDollar[2].str) } yyVAL.union = yyLOCAL - case 650: + case 652: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL int -//line sql.y:3651 +//line sql.y:3660 { yyLOCAL = -1 } yyVAL.union = yyLOCAL - case 651: + case 653: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL int -//line sql.y:3655 +//line sql.y:3664 { yyLOCAL = convertStringToInt(yyDollar[2].str) } yyVAL.union = yyLOCAL - case 652: + case 654: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *PartitionSpec -//line sql.y:3661 +//line sql.y:3670 { yyLOCAL = &PartitionSpec{Action: AddAction, Definitions: []*PartitionDefinition{yyDollar[4].partDefUnion()}} } yyVAL.union = yyLOCAL - case 653: + case 655: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *PartitionSpec -//line sql.y:3665 +//line sql.y:3674 { yyLOCAL = &PartitionSpec{Action: DropAction, Names: yyDollar[3].partitionsUnion()} } yyVAL.union = yyLOCAL - case 654: + case 656: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL *PartitionSpec -//line sql.y:3669 +//line sql.y:3678 { yyLOCAL = &PartitionSpec{Action: ReorganizeAction, Names: yyDollar[3].partitionsUnion(), Definitions: yyDollar[6].partDefsUnion()} } yyVAL.union = yyLOCAL - case 655: + case 657: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *PartitionSpec -//line sql.y:3673 +//line sql.y:3682 { yyLOCAL = &PartitionSpec{Action: DiscardAction, Names: yyDollar[3].partitionsUnion()} } yyVAL.union = yyLOCAL - case 656: + case 658: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *PartitionSpec -//line sql.y:3677 +//line sql.y:3686 { yyLOCAL = &PartitionSpec{Action: DiscardAction, IsAll: true} } yyVAL.union = yyLOCAL - case 657: + case 659: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *PartitionSpec -//line sql.y:3681 +//line sql.y:3690 { yyLOCAL = &PartitionSpec{Action: ImportAction, Names: yyDollar[3].partitionsUnion()} } yyVAL.union = yyLOCAL - case 658: + case 660: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *PartitionSpec -//line sql.y:3685 +//line sql.y:3694 { yyLOCAL = &PartitionSpec{Action: ImportAction, IsAll: true} } yyVAL.union = yyLOCAL - case 659: + case 661: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *PartitionSpec -//line sql.y:3689 +//line sql.y:3698 { yyLOCAL = &PartitionSpec{Action: TruncateAction, Names: yyDollar[3].partitionsUnion()} } yyVAL.union = yyLOCAL - case 660: + case 662: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *PartitionSpec -//line sql.y:3693 +//line sql.y:3702 { yyLOCAL = &PartitionSpec{Action: TruncateAction, IsAll: true} } yyVAL.union = yyLOCAL - case 661: + case 663: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *PartitionSpec -//line sql.y:3697 +//line sql.y:3706 { yyLOCAL = &PartitionSpec{Action: CoalesceAction, Number: NewIntLiteral(yyDollar[3].str)} } yyVAL.union = yyLOCAL - case 662: + case 664: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL *PartitionSpec -//line sql.y:3701 +//line sql.y:3710 { yyLOCAL = &PartitionSpec{Action: ExchangeAction, Names: Partitions{yyDollar[3].identifierCI}, TableName: yyDollar[6].tableName, WithoutValidation: yyDollar[7].booleanUnion()} } yyVAL.union = yyLOCAL - case 663: + case 665: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *PartitionSpec -//line sql.y:3705 +//line sql.y:3714 { yyLOCAL = &PartitionSpec{Action: AnalyzeAction, Names: yyDollar[3].partitionsUnion()} } yyVAL.union = yyLOCAL - case 664: + case 666: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *PartitionSpec -//line sql.y:3709 +//line sql.y:3718 { yyLOCAL = &PartitionSpec{Action: AnalyzeAction, IsAll: true} } yyVAL.union = yyLOCAL - case 665: + case 667: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *PartitionSpec -//line sql.y:3713 +//line sql.y:3722 { yyLOCAL = &PartitionSpec{Action: CheckAction, Names: yyDollar[3].partitionsUnion()} } yyVAL.union = yyLOCAL - case 666: + case 668: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *PartitionSpec -//line sql.y:3717 +//line sql.y:3726 { yyLOCAL = &PartitionSpec{Action: CheckAction, IsAll: true} } yyVAL.union = yyLOCAL - case 667: + case 669: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *PartitionSpec -//line sql.y:3721 +//line sql.y:3730 { yyLOCAL = &PartitionSpec{Action: OptimizeAction, Names: yyDollar[3].partitionsUnion()} } yyVAL.union = yyLOCAL - case 668: + case 670: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *PartitionSpec -//line sql.y:3725 +//line sql.y:3734 { yyLOCAL = &PartitionSpec{Action: OptimizeAction, IsAll: true} } yyVAL.union = yyLOCAL - case 669: + case 671: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *PartitionSpec -//line sql.y:3729 +//line sql.y:3738 { yyLOCAL = &PartitionSpec{Action: RebuildAction, Names: yyDollar[3].partitionsUnion()} } yyVAL.union = yyLOCAL - case 670: + case 672: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *PartitionSpec -//line sql.y:3733 +//line sql.y:3742 { yyLOCAL = &PartitionSpec{Action: RebuildAction, IsAll: true} } yyVAL.union = yyLOCAL - case 671: + case 673: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *PartitionSpec -//line sql.y:3737 +//line sql.y:3746 { yyLOCAL = &PartitionSpec{Action: RepairAction, Names: yyDollar[3].partitionsUnion()} } yyVAL.union = yyLOCAL - case 672: + case 674: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *PartitionSpec -//line sql.y:3741 +//line sql.y:3750 { yyLOCAL = &PartitionSpec{Action: RepairAction, IsAll: true} } yyVAL.union = yyLOCAL - case 673: + case 675: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *PartitionSpec -//line sql.y:3745 +//line sql.y:3754 { yyLOCAL = &PartitionSpec{Action: UpgradeAction} } yyVAL.union = yyLOCAL - case 674: + case 676: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line sql.y:3750 +//line sql.y:3759 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 675: + case 677: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL bool -//line sql.y:3754 +//line sql.y:3763 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 676: + case 678: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL bool -//line sql.y:3758 +//line sql.y:3767 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 677: + case 679: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []*PartitionDefinition -//line sql.y:3764 +//line sql.y:3773 { yyLOCAL = []*PartitionDefinition{yyDollar[1].partDefUnion()} } yyVAL.union = yyLOCAL - case 678: + case 680: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3768 +//line sql.y:3777 { yySLICE := (*[]*PartitionDefinition)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].partDefUnion()) } - case 679: + case 681: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:3774 +//line sql.y:3783 { yyVAL.partDefUnion().Options = yyDollar[2].partitionDefinitionOptionsUnion() } - case 680: + case 682: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *PartitionDefinitionOptions -//line sql.y:3779 +//line sql.y:3788 { yyLOCAL = &PartitionDefinitionOptions{} } yyVAL.union = yyLOCAL - case 681: + case 683: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *PartitionDefinitionOptions -//line sql.y:3783 +//line sql.y:3792 { yyDollar[1].partitionDefinitionOptionsUnion().ValueRange = yyDollar[2].partitionValueRangeUnion() yyLOCAL = yyDollar[1].partitionDefinitionOptionsUnion() } yyVAL.union = yyLOCAL - case 682: + case 684: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *PartitionDefinitionOptions -//line sql.y:3788 +//line sql.y:3797 { yyDollar[1].partitionDefinitionOptionsUnion().Comment = yyDollar[2].literalUnion() yyLOCAL = yyDollar[1].partitionDefinitionOptionsUnion() } yyVAL.union = yyLOCAL - case 683: + case 685: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *PartitionDefinitionOptions -//line sql.y:3793 +//line sql.y:3802 { yyDollar[1].partitionDefinitionOptionsUnion().Engine = yyDollar[2].partitionEngineUnion() yyLOCAL = yyDollar[1].partitionDefinitionOptionsUnion() } yyVAL.union = yyLOCAL - case 684: + case 686: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *PartitionDefinitionOptions -//line sql.y:3798 +//line sql.y:3807 { yyDollar[1].partitionDefinitionOptionsUnion().DataDirectory = yyDollar[2].literalUnion() yyLOCAL = yyDollar[1].partitionDefinitionOptionsUnion() } yyVAL.union = yyLOCAL - case 685: + case 687: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *PartitionDefinitionOptions -//line sql.y:3803 +//line sql.y:3812 { yyDollar[1].partitionDefinitionOptionsUnion().IndexDirectory = yyDollar[2].literalUnion() yyLOCAL = yyDollar[1].partitionDefinitionOptionsUnion() } yyVAL.union = yyLOCAL - case 686: + case 688: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *PartitionDefinitionOptions -//line sql.y:3808 +//line sql.y:3817 { yyDollar[1].partitionDefinitionOptionsUnion().MaxRows = ptr.Of(yyDollar[2].integerUnion()) yyLOCAL = yyDollar[1].partitionDefinitionOptionsUnion() } yyVAL.union = yyLOCAL - case 687: + case 689: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *PartitionDefinitionOptions -//line sql.y:3813 +//line sql.y:3822 { yyDollar[1].partitionDefinitionOptionsUnion().MinRows = ptr.Of(yyDollar[2].integerUnion()) yyLOCAL = yyDollar[1].partitionDefinitionOptionsUnion() } yyVAL.union = yyLOCAL - case 688: + case 690: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *PartitionDefinitionOptions -//line sql.y:3818 +//line sql.y:3827 { yyDollar[1].partitionDefinitionOptionsUnion().TableSpace = yyDollar[2].str yyLOCAL = yyDollar[1].partitionDefinitionOptionsUnion() } yyVAL.union = yyLOCAL - case 689: + case 691: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *PartitionDefinitionOptions -//line sql.y:3823 +//line sql.y:3832 { yyDollar[1].partitionDefinitionOptionsUnion().SubPartitionDefinitions = yyDollar[2].subPartitionDefinitionsUnion() yyLOCAL = yyDollar[1].partitionDefinitionOptionsUnion() } yyVAL.union = yyLOCAL - case 690: + case 692: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL SubPartitionDefinitions -//line sql.y:3829 +//line sql.y:3838 { yyLOCAL = yyDollar[2].subPartitionDefinitionsUnion() } yyVAL.union = yyLOCAL - case 691: + case 693: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL SubPartitionDefinitions -//line sql.y:3835 +//line sql.y:3844 { yyLOCAL = SubPartitionDefinitions{yyDollar[1].subPartitionDefinitionUnion()} } yyVAL.union = yyLOCAL - case 692: + case 694: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3839 +//line sql.y:3848 { yySLICE := (*SubPartitionDefinitions)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].subPartitionDefinitionUnion()) } - case 693: + case 695: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *SubPartitionDefinition -//line sql.y:3845 +//line sql.y:3854 { yyLOCAL = &SubPartitionDefinition{Name: yyDollar[2].identifierCI, Options: yyDollar[3].subPartitionDefinitionOptionsUnion()} } yyVAL.union = yyLOCAL - case 694: + case 696: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *SubPartitionDefinitionOptions -//line sql.y:3850 +//line sql.y:3859 { yyLOCAL = &SubPartitionDefinitionOptions{} } yyVAL.union = yyLOCAL - case 695: + case 697: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *SubPartitionDefinitionOptions -//line sql.y:3854 +//line sql.y:3863 { yyDollar[1].subPartitionDefinitionOptionsUnion().Comment = yyDollar[2].literalUnion() yyLOCAL = yyDollar[1].subPartitionDefinitionOptionsUnion() } yyVAL.union = yyLOCAL - case 696: + case 698: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *SubPartitionDefinitionOptions -//line sql.y:3859 +//line sql.y:3868 { yyDollar[1].subPartitionDefinitionOptionsUnion().Engine = yyDollar[2].partitionEngineUnion() yyLOCAL = yyDollar[1].subPartitionDefinitionOptionsUnion() } yyVAL.union = yyLOCAL - case 697: + case 699: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *SubPartitionDefinitionOptions -//line sql.y:3864 +//line sql.y:3873 { yyDollar[1].subPartitionDefinitionOptionsUnion().DataDirectory = yyDollar[2].literalUnion() yyLOCAL = yyDollar[1].subPartitionDefinitionOptionsUnion() } yyVAL.union = yyLOCAL - case 698: + case 700: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *SubPartitionDefinitionOptions -//line sql.y:3869 +//line sql.y:3878 { yyDollar[1].subPartitionDefinitionOptionsUnion().IndexDirectory = yyDollar[2].literalUnion() yyLOCAL = yyDollar[1].subPartitionDefinitionOptionsUnion() } yyVAL.union = yyLOCAL - case 699: + case 701: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *SubPartitionDefinitionOptions -//line sql.y:3874 +//line sql.y:3883 { yyDollar[1].subPartitionDefinitionOptionsUnion().MaxRows = ptr.Of(yyDollar[2].integerUnion()) yyLOCAL = yyDollar[1].subPartitionDefinitionOptionsUnion() } yyVAL.union = yyLOCAL - case 700: + case 702: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *SubPartitionDefinitionOptions -//line sql.y:3879 +//line sql.y:3888 { yyDollar[1].subPartitionDefinitionOptionsUnion().MinRows = ptr.Of(yyDollar[2].integerUnion()) yyLOCAL = yyDollar[1].subPartitionDefinitionOptionsUnion() } yyVAL.union = yyLOCAL - case 701: + case 703: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *SubPartitionDefinitionOptions -//line sql.y:3884 +//line sql.y:3893 { yyDollar[1].subPartitionDefinitionOptionsUnion().TableSpace = yyDollar[2].str yyLOCAL = yyDollar[1].subPartitionDefinitionOptionsUnion() } yyVAL.union = yyLOCAL - case 702: + case 704: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *PartitionValueRange -//line sql.y:3891 +//line sql.y:3900 { yyLOCAL = &PartitionValueRange{ Type: LessThanType, @@ -15453,10 +15433,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 703: + case 705: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *PartitionValueRange -//line sql.y:3898 +//line sql.y:3907 { yyLOCAL = &PartitionValueRange{ Type: LessThanType, @@ -15464,10 +15444,10 @@ yydefault: } } yyVAL.union = yyLOCAL - case 704: + case 706: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *PartitionValueRange -//line sql.y:3905 +//line sql.y:3914 { yyLOCAL = &PartitionValueRange{ Type: InType, @@ -15475,131 +15455,131 @@ yydefault: } } yyVAL.union = yyLOCAL - case 705: + case 707: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line sql.y:3913 +//line sql.y:3922 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 706: + case 708: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line sql.y:3917 +//line sql.y:3926 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 707: + case 709: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *PartitionEngine -//line sql.y:3923 +//line sql.y:3932 { yyLOCAL = &PartitionEngine{Storage: yyDollar[1].booleanUnion(), Name: yyDollar[4].identifierCS.String()} } yyVAL.union = yyLOCAL - case 708: + case 710: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *Literal -//line sql.y:3929 +//line sql.y:3938 { yyLOCAL = NewStrLiteral(yyDollar[3].str) } yyVAL.union = yyLOCAL - case 709: + case 711: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *Literal -//line sql.y:3935 +//line sql.y:3944 { yyLOCAL = NewStrLiteral(yyDollar[4].str) } yyVAL.union = yyLOCAL - case 710: + case 712: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *Literal -//line sql.y:3941 +//line sql.y:3950 { yyLOCAL = NewStrLiteral(yyDollar[4].str) } yyVAL.union = yyLOCAL - case 711: + case 713: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL int -//line sql.y:3947 +//line sql.y:3956 { yyLOCAL = convertStringToInt(yyDollar[3].str) } yyVAL.union = yyLOCAL - case 712: + case 714: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL int -//line sql.y:3953 +//line sql.y:3962 { yyLOCAL = convertStringToInt(yyDollar[3].str) } yyVAL.union = yyLOCAL - case 713: + case 715: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3959 +//line sql.y:3968 { yyVAL.str = yyDollar[3].identifierCS.String() } - case 714: + case 716: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *PartitionDefinition -//line sql.y:3965 +//line sql.y:3974 { yyLOCAL = &PartitionDefinition{Name: yyDollar[2].identifierCI} } yyVAL.union = yyLOCAL - case 715: + case 717: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:3971 +//line sql.y:3980 { yyVAL.str = "" } - case 716: + case 718: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:3975 +//line sql.y:3984 { yyVAL.str = "" } - case 717: + case 719: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Statement -//line sql.y:3981 +//line sql.y:3990 { yyLOCAL = &RenameTable{TablePairs: yyDollar[3].renameTablePairsUnion()} } yyVAL.union = yyLOCAL - case 718: + case 720: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []*RenameTablePair -//line sql.y:3987 +//line sql.y:3996 { yyLOCAL = []*RenameTablePair{{FromTable: yyDollar[1].tableName, ToTable: yyDollar[3].tableName}} } yyVAL.union = yyLOCAL - case 719: + case 721: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:3991 +//line sql.y:4000 { yySLICE := (*[]*RenameTablePair)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, &RenameTablePair{FromTable: yyDollar[3].tableName, ToTable: yyDollar[5].tableName}) } - case 720: + case 722: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL Statement -//line sql.y:3997 +//line sql.y:4006 { yyLOCAL = &DropTable{FromTables: yyDollar[6].tableNamesUnion(), IfExists: yyDollar[5].booleanUnion(), Comments: Comments(yyDollar[2].strs).Parsed(), Temp: yyDollar[3].booleanUnion()} } yyVAL.union = yyLOCAL - case 721: + case 723: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL Statement -//line sql.y:4001 +//line sql.y:4010 { // Change this to an alter statement if yyDollar[4].identifierCI.Lowered() == "primary" { @@ -15609,1377 +15589,1377 @@ yydefault: } } yyVAL.union = yyLOCAL - case 722: + case 724: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Statement -//line sql.y:4010 +//line sql.y:4019 { yyLOCAL = &DropView{FromTables: yyDollar[5].tableNamesUnion(), Comments: Comments(yyDollar[2].strs).Parsed(), IfExists: yyDollar[4].booleanUnion()} } yyVAL.union = yyLOCAL - case 723: + case 725: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Statement -//line sql.y:4014 +//line sql.y:4023 { yyLOCAL = &DropDatabase{Comments: Comments(yyDollar[2].strs).Parsed(), DBName: yyDollar[5].identifierCS, IfExists: yyDollar[4].booleanUnion()} } yyVAL.union = yyLOCAL - case 724: + case 726: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Statement -//line sql.y:4020 +//line sql.y:4029 { yyLOCAL = &TruncateTable{Table: yyDollar[3].tableName} } yyVAL.union = yyLOCAL - case 725: + case 727: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Statement -//line sql.y:4024 +//line sql.y:4033 { yyLOCAL = &TruncateTable{Table: yyDollar[2].tableName} } yyVAL.union = yyLOCAL - case 726: + case 728: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Statement -//line sql.y:4030 +//line sql.y:4039 { yyLOCAL = &Analyze{IsLocal: yyDollar[2].booleanUnion(), Table: yyDollar[4].tableName} } yyVAL.union = yyLOCAL - case 727: + case 729: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Statement -//line sql.y:4036 +//line sql.y:4045 { yyLOCAL = &PurgeBinaryLogs{To: string(yyDollar[5].str)} } yyVAL.union = yyLOCAL - case 728: + case 730: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Statement -//line sql.y:4040 +//line sql.y:4049 { yyLOCAL = &PurgeBinaryLogs{Before: string(yyDollar[5].str)} } yyVAL.union = yyLOCAL - case 729: + case 731: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Statement -//line sql.y:4046 +//line sql.y:4055 { yyLOCAL = &Show{&ShowBasic{Command: Charset, Filter: yyDollar[3].showFilterUnion()}} } yyVAL.union = yyLOCAL - case 730: + case 732: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Statement -//line sql.y:4050 +//line sql.y:4059 { yyLOCAL = &Show{&ShowBasic{Command: Collation, Filter: yyDollar[3].showFilterUnion()}} } yyVAL.union = yyLOCAL - case 731: + case 733: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL Statement -//line sql.y:4054 +//line sql.y:4063 { yyLOCAL = &Show{&ShowBasic{Full: yyDollar[2].booleanUnion(), Command: Column, Tbl: yyDollar[5].tableName, DbName: yyDollar[6].identifierCS, Filter: yyDollar[7].showFilterUnion()}} } yyVAL.union = yyLOCAL - case 732: + case 734: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Statement -//line sql.y:4058 +//line sql.y:4067 { yyLOCAL = &Show{&ShowBasic{Command: Database, Filter: yyDollar[3].showFilterUnion()}} } yyVAL.union = yyLOCAL - case 733: + case 735: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Statement -//line sql.y:4062 +//line sql.y:4071 { yyLOCAL = &Show{&ShowBasic{Command: Database, Filter: yyDollar[3].showFilterUnion()}} } yyVAL.union = yyLOCAL - case 734: + case 736: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Statement -//line sql.y:4066 +//line sql.y:4075 { yyLOCAL = &Show{&ShowBasic{Command: Keyspace, Filter: yyDollar[3].showFilterUnion()}} } yyVAL.union = yyLOCAL - case 735: + case 737: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Statement -//line sql.y:4070 +//line sql.y:4079 { yyLOCAL = &Show{&ShowBasic{Command: Keyspace, Filter: yyDollar[3].showFilterUnion()}} } yyVAL.union = yyLOCAL - case 736: + case 738: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Statement -//line sql.y:4074 +//line sql.y:4083 { yyLOCAL = &Show{&ShowBasic{Command: Function, Filter: yyDollar[4].showFilterUnion()}} } yyVAL.union = yyLOCAL - case 737: + case 739: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL Statement -//line sql.y:4078 +//line sql.y:4087 { yyLOCAL = &Show{&ShowBasic{Command: Index, Tbl: yyDollar[5].tableName, DbName: yyDollar[6].identifierCS, Filter: yyDollar[7].showFilterUnion()}} } yyVAL.union = yyLOCAL - case 738: + case 740: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Statement -//line sql.y:4082 +//line sql.y:4091 { yyLOCAL = &Show{&ShowBasic{Command: OpenTable, DbName: yyDollar[4].identifierCS, Filter: yyDollar[5].showFilterUnion()}} } yyVAL.union = yyLOCAL - case 739: + case 741: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Statement -//line sql.y:4086 +//line sql.y:4095 { yyLOCAL = &Show{&ShowBasic{Command: Privilege}} } yyVAL.union = yyLOCAL - case 740: + case 742: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Statement -//line sql.y:4090 +//line sql.y:4099 { yyLOCAL = &Show{&ShowBasic{Command: Procedure, Filter: yyDollar[4].showFilterUnion()}} } yyVAL.union = yyLOCAL - case 741: + case 743: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Statement -//line sql.y:4094 +//line sql.y:4103 { yyLOCAL = &Show{&ShowBasic{Command: StatusSession, Filter: yyDollar[4].showFilterUnion()}} } yyVAL.union = yyLOCAL - case 742: + case 744: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Statement -//line sql.y:4098 +//line sql.y:4107 { yyLOCAL = &Show{&ShowBasic{Command: StatusGlobal, Filter: yyDollar[4].showFilterUnion()}} } yyVAL.union = yyLOCAL - case 743: + case 745: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Statement -//line sql.y:4102 +//line sql.y:4111 { yyLOCAL = &Show{&ShowBasic{Command: VariableSession, Filter: yyDollar[4].showFilterUnion()}} } yyVAL.union = yyLOCAL - case 744: + case 746: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Statement -//line sql.y:4106 +//line sql.y:4115 { yyLOCAL = &Show{&ShowBasic{Command: VariableGlobal, Filter: yyDollar[4].showFilterUnion()}} } yyVAL.union = yyLOCAL - case 745: + case 747: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Statement -//line sql.y:4110 +//line sql.y:4119 { yyLOCAL = &Show{&ShowBasic{Command: TableStatus, DbName: yyDollar[4].identifierCS, Filter: yyDollar[5].showFilterUnion()}} } yyVAL.union = yyLOCAL - case 746: + case 748: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Statement -//line sql.y:4114 +//line sql.y:4123 { yyLOCAL = &Show{&ShowBasic{Command: Table, Full: yyDollar[2].booleanUnion(), DbName: yyDollar[4].identifierCS, Filter: yyDollar[5].showFilterUnion()}} } yyVAL.union = yyLOCAL - case 747: + case 749: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Statement -//line sql.y:4118 +//line sql.y:4127 { yyLOCAL = &Show{&ShowBasic{Command: Trigger, DbName: yyDollar[3].identifierCS, Filter: yyDollar[4].showFilterUnion()}} } yyVAL.union = yyLOCAL - case 748: + case 750: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Statement -//line sql.y:4122 +//line sql.y:4131 { yyLOCAL = &Show{&ShowCreate{Command: CreateDb, Op: yyDollar[4].tableName}} } yyVAL.union = yyLOCAL - case 749: + case 751: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Statement -//line sql.y:4126 +//line sql.y:4135 { yyLOCAL = &Show{&ShowCreate{Command: CreateE, Op: yyDollar[4].tableName}} } yyVAL.union = yyLOCAL - case 750: + case 752: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Statement -//line sql.y:4130 +//line sql.y:4139 { yyLOCAL = &Show{&ShowCreate{Command: CreateF, Op: yyDollar[4].tableName}} } yyVAL.union = yyLOCAL - case 751: + case 753: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Statement -//line sql.y:4134 +//line sql.y:4143 { yyLOCAL = &Show{&ShowCreate{Command: CreateProc, Op: yyDollar[4].tableName}} } yyVAL.union = yyLOCAL - case 752: + case 754: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Statement -//line sql.y:4138 +//line sql.y:4147 { yyLOCAL = &Show{&ShowCreate{Command: CreateTbl, Op: yyDollar[4].tableName}} } yyVAL.union = yyLOCAL - case 753: + case 755: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Statement -//line sql.y:4142 +//line sql.y:4151 { yyLOCAL = &Show{&ShowCreate{Command: CreateTr, Op: yyDollar[4].tableName}} } yyVAL.union = yyLOCAL - case 754: + case 756: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Statement -//line sql.y:4146 +//line sql.y:4155 { yyLOCAL = &Show{&ShowCreate{Command: CreateV, Op: yyDollar[4].tableName}} } yyVAL.union = yyLOCAL - case 755: + case 757: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Statement -//line sql.y:4150 +//line sql.y:4159 { yyLOCAL = &Show{&ShowBasic{Command: Engines}} } yyVAL.union = yyLOCAL - case 756: + case 758: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Statement -//line sql.y:4154 +//line sql.y:4163 { yyLOCAL = &Show{&ShowBasic{Command: Plugins}} } yyVAL.union = yyLOCAL - case 757: + case 759: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Statement -//line sql.y:4158 +//line sql.y:4167 { yyLOCAL = &Show{&ShowBasic{Command: GtidExecGlobal, DbName: yyDollar[4].identifierCS}} } yyVAL.union = yyLOCAL - case 758: + case 760: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Statement -//line sql.y:4162 +//line sql.y:4171 { yyLOCAL = &Show{&ShowBasic{Command: VGtidExecGlobal, DbName: yyDollar[4].identifierCS}} } yyVAL.union = yyLOCAL - case 759: + case 761: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Statement -//line sql.y:4166 +//line sql.y:4175 { yyLOCAL = &Show{&ShowBasic{Command: VitessVariables, Filter: yyDollar[4].showFilterUnion()}} } yyVAL.union = yyLOCAL - case 760: + case 762: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Statement -//line sql.y:4170 +//line sql.y:4179 { yyLOCAL = &Show{&ShowBasic{Command: VitessMigrations, Filter: yyDollar[4].showFilterUnion(), DbName: yyDollar[3].identifierCS}} } yyVAL.union = yyLOCAL - case 761: + case 763: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Statement -//line sql.y:4174 +//line sql.y:4183 { yyLOCAL = &ShowMigrationLogs{UUID: string(yyDollar[3].str)} } yyVAL.union = yyLOCAL - case 762: + case 764: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Statement -//line sql.y:4178 +//line sql.y:4187 { yyLOCAL = &ShowThrottledApps{} } yyVAL.union = yyLOCAL - case 763: + case 765: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Statement -//line sql.y:4182 +//line sql.y:4191 { yyLOCAL = &Show{&ShowBasic{Command: VitessReplicationStatus, Filter: yyDollar[3].showFilterUnion()}} } yyVAL.union = yyLOCAL - case 764: + case 766: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Statement -//line sql.y:4186 +//line sql.y:4195 { yyLOCAL = &ShowThrottlerStatus{} } yyVAL.union = yyLOCAL - case 765: + case 767: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Statement -//line sql.y:4190 +//line sql.y:4199 { yyLOCAL = &Show{&ShowBasic{Command: VschemaTables}} } yyVAL.union = yyLOCAL - case 766: + case 768: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Statement -//line sql.y:4194 +//line sql.y:4203 { yyLOCAL = &Show{&ShowBasic{Command: VschemaKeyspaces}} } yyVAL.union = yyLOCAL - case 767: + case 769: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Statement -//line sql.y:4198 +//line sql.y:4207 { yyLOCAL = &Show{&ShowBasic{Command: VschemaVindexes}} } yyVAL.union = yyLOCAL - case 768: + case 770: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Statement -//line sql.y:4202 +//line sql.y:4211 { yyLOCAL = &Show{&ShowBasic{Command: VschemaVindexes, Tbl: yyDollar[5].tableName}} } yyVAL.union = yyLOCAL - case 769: + case 771: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Statement -//line sql.y:4206 +//line sql.y:4215 { yyLOCAL = &Show{&ShowBasic{Command: Warnings}} } yyVAL.union = yyLOCAL - case 770: + case 772: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Statement -//line sql.y:4210 +//line sql.y:4219 { yyLOCAL = &Show{&ShowBasic{Command: VitessShards, Filter: yyDollar[3].showFilterUnion()}} } yyVAL.union = yyLOCAL - case 771: + case 773: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Statement -//line sql.y:4214 +//line sql.y:4223 { yyLOCAL = &Show{&ShowBasic{Command: VitessTablets, Filter: yyDollar[3].showFilterUnion()}} } yyVAL.union = yyLOCAL - case 772: + case 774: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Statement -//line sql.y:4218 +//line sql.y:4227 { yyLOCAL = &Show{&ShowBasic{Command: VitessTarget}} } yyVAL.union = yyLOCAL - case 773: + case 775: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Statement -//line sql.y:4225 +//line sql.y:4234 { yyLOCAL = &Show{&ShowOther{Command: string(yyDollar[2].identifierCI.String())}} } yyVAL.union = yyLOCAL - case 774: + case 776: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Statement -//line sql.y:4229 +//line sql.y:4238 { yyLOCAL = &Show{&ShowOther{Command: string(yyDollar[2].str) + " " + string(yyDollar[3].str)}} } yyVAL.union = yyLOCAL - case 775: + case 777: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Statement -//line sql.y:4233 +//line sql.y:4242 { yyLOCAL = &Show{&ShowOther{Command: string(yyDollar[2].str) + " " + yyDollar[3].identifierCI.String()}} } yyVAL.union = yyLOCAL - case 776: + case 778: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Statement -//line sql.y:4237 +//line sql.y:4246 { yyLOCAL = &Show{&ShowOther{Command: string(yyDollar[2].str) + " " + string(yyDollar[3].str)}} } yyVAL.union = yyLOCAL - case 777: + case 779: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Statement -//line sql.y:4241 +//line sql.y:4250 { yyLOCAL = &Show{&ShowOther{Command: string(yyDollar[2].str)}} } yyVAL.union = yyLOCAL - case 778: + case 780: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Statement -//line sql.y:4245 +//line sql.y:4254 { yyLOCAL = &Show{&ShowOther{Command: string(yyDollar[2].str) + " " + string(yyDollar[3].str) + " " + String(yyDollar[4].tableName)}} } yyVAL.union = yyLOCAL - case 779: + case 781: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Statement -//line sql.y:4249 +//line sql.y:4258 { yyLOCAL = &Show{&ShowOther{Command: string(yyDollar[2].str) + " " + string(yyDollar[3].str) + " " + String(yyDollar[4].tableName)}} } yyVAL.union = yyLOCAL - case 780: + case 782: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Statement -//line sql.y:4253 +//line sql.y:4262 { yyLOCAL = &Show{&ShowOther{Command: string(yyDollar[3].str)}} } yyVAL.union = yyLOCAL - case 781: + case 783: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Statement -//line sql.y:4257 +//line sql.y:4266 { yyLOCAL = &Show{&ShowOther{Command: string(yyDollar[2].str)}} } yyVAL.union = yyLOCAL - case 782: + case 784: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Statement -//line sql.y:4261 +//line sql.y:4270 { yyLOCAL = &Show{&ShowTransactionStatus{TransactionID: string(yyDollar[5].str)}} } yyVAL.union = yyLOCAL - case 783: + case 785: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Statement -//line sql.y:4265 +//line sql.y:4274 { yyLOCAL = &Show{&ShowTransactionStatus{}} } yyVAL.union = yyLOCAL - case 784: + case 786: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Statement -//line sql.y:4269 +//line sql.y:4278 { yyLOCAL = &Show{&ShowTransactionStatus{Keyspace: yyDollar[5].identifierCS.String()}} } yyVAL.union = yyLOCAL - case 785: + case 787: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4274 +//line sql.y:4283 { } - case 786: + case 788: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4276 +//line sql.y:4285 { } - case 787: + case 789: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4280 +//line sql.y:4289 { yyVAL.str = "" } - case 788: + case 790: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4284 +//line sql.y:4293 { yyVAL.str = "extended " } - case 789: + case 791: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line sql.y:4290 +//line sql.y:4299 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 790: + case 792: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line sql.y:4294 +//line sql.y:4303 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 791: + case 793: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4300 +//line sql.y:4309 { yyVAL.str = string(yyDollar[1].str) } - case 792: + case 794: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4304 +//line sql.y:4313 { yyVAL.str = string(yyDollar[1].str) } - case 793: + case 795: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4310 +//line sql.y:4319 { yyVAL.identifierCS = NewIdentifierCS("") } - case 794: + case 796: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4314 +//line sql.y:4323 { yyVAL.identifierCS = yyDollar[2].identifierCS } - case 795: + case 797: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4318 +//line sql.y:4327 { yyVAL.identifierCS = yyDollar[2].identifierCS } - case 796: + case 798: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *ShowFilter -//line sql.y:4324 +//line sql.y:4333 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 797: + case 799: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *ShowFilter -//line sql.y:4328 +//line sql.y:4337 { yyLOCAL = &ShowFilter{Like: string(yyDollar[2].str)} } yyVAL.union = yyLOCAL - case 798: + case 800: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *ShowFilter -//line sql.y:4332 +//line sql.y:4341 { yyLOCAL = &ShowFilter{Filter: yyDollar[2].exprUnion()} } yyVAL.union = yyLOCAL - case 799: + case 801: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *ShowFilter -//line sql.y:4338 +//line sql.y:4347 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 800: + case 802: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *ShowFilter -//line sql.y:4342 +//line sql.y:4351 { yyLOCAL = &ShowFilter{Like: string(yyDollar[2].str)} } yyVAL.union = yyLOCAL - case 801: + case 803: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4348 +//line sql.y:4357 { yyVAL.empty = struct{}{} } - case 802: + case 804: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4352 +//line sql.y:4361 { yyVAL.empty = struct{}{} } - case 803: + case 805: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4356 +//line sql.y:4365 { yyVAL.empty = struct{}{} } - case 804: + case 806: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4362 +//line sql.y:4371 { yyVAL.str = string(yyDollar[1].str) } - case 805: + case 807: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4366 +//line sql.y:4375 { yyVAL.str = string(yyDollar[1].str) } - case 806: + case 808: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Statement -//line sql.y:4372 +//line sql.y:4381 { yyLOCAL = &Use{DBName: yyDollar[2].identifierCS} } yyVAL.union = yyLOCAL - case 807: + case 809: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Statement -//line sql.y:4376 +//line sql.y:4385 { yyLOCAL = &Use{DBName: IdentifierCS{v: ""}} } yyVAL.union = yyLOCAL - case 808: + case 810: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Statement -//line sql.y:4380 +//line sql.y:4389 { yyLOCAL = &Use{DBName: NewIdentifierCS(yyDollar[2].identifierCS.String() + "@" + string(yyDollar[3].str))} } yyVAL.union = yyLOCAL - case 809: + case 811: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4387 +//line sql.y:4396 { yyVAL.identifierCS = NewIdentifierCS(string(yyDollar[1].str)) } - case 810: + case 812: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4391 +//line sql.y:4400 { yyVAL.identifierCS = NewIdentifierCS("@" + string(yyDollar[1].str)) } - case 811: + case 813: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4395 +//line sql.y:4404 { yyVAL.identifierCS = NewIdentifierCS("@@" + string(yyDollar[1].str)) } - case 812: + case 814: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4399 +//line sql.y:4408 { yyVAL.identifierCS = NewIdentifierCS(string(yyDollar[1].str)) } - case 813: + case 815: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Statement -//line sql.y:4406 +//line sql.y:4415 { yyLOCAL = &Begin{} } yyVAL.union = yyLOCAL - case 814: + case 816: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Statement -//line sql.y:4410 +//line sql.y:4419 { yyLOCAL = &Begin{TxAccessModes: yyDollar[3].txAccessModesUnion()} } yyVAL.union = yyLOCAL - case 815: + case 817: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL []TxAccessMode -//line sql.y:4415 +//line sql.y:4424 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 816: + case 818: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []TxAccessMode -//line sql.y:4419 +//line sql.y:4428 { yyLOCAL = yyDollar[1].txAccessModesUnion() } yyVAL.union = yyLOCAL - case 817: + case 819: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []TxAccessMode -//line sql.y:4425 +//line sql.y:4434 { yyLOCAL = []TxAccessMode{yyDollar[1].txAccessModeUnion()} } yyVAL.union = yyLOCAL - case 818: + case 820: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4429 +//line sql.y:4438 { yySLICE := (*[]TxAccessMode)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].txAccessModeUnion()) } - case 819: + case 821: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL TxAccessMode -//line sql.y:4435 +//line sql.y:4444 { yyLOCAL = WithConsistentSnapshot } yyVAL.union = yyLOCAL - case 820: + case 822: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL TxAccessMode -//line sql.y:4439 +//line sql.y:4448 { yyLOCAL = ReadWrite } yyVAL.union = yyLOCAL - case 821: + case 823: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL TxAccessMode -//line sql.y:4443 +//line sql.y:4452 { yyLOCAL = ReadOnly } yyVAL.union = yyLOCAL - case 822: + case 824: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Statement -//line sql.y:4450 +//line sql.y:4459 { yyLOCAL = &Commit{} } yyVAL.union = yyLOCAL - case 823: + case 825: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Statement -//line sql.y:4456 +//line sql.y:4465 { yyLOCAL = &Rollback{} } yyVAL.union = yyLOCAL - case 824: + case 826: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Statement -//line sql.y:4460 +//line sql.y:4469 { yyLOCAL = &SRollback{Name: yyDollar[5].identifierCI} } yyVAL.union = yyLOCAL - case 825: + case 827: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4465 +//line sql.y:4474 { yyVAL.empty = struct{}{} } - case 826: + case 828: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4467 +//line sql.y:4476 { yyVAL.empty = struct{}{} } - case 827: + case 829: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4470 +//line sql.y:4479 { yyVAL.empty = struct{}{} } - case 828: + case 830: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4472 +//line sql.y:4481 { yyVAL.empty = struct{}{} } - case 829: + case 831: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Statement -//line sql.y:4476 +//line sql.y:4485 { yyLOCAL = &Savepoint{Name: yyDollar[2].identifierCI} } yyVAL.union = yyLOCAL - case 830: + case 832: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Statement -//line sql.y:4482 +//line sql.y:4491 { yyLOCAL = &Release{Name: yyDollar[3].identifierCI} } yyVAL.union = yyLOCAL - case 831: + case 833: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL ExplainType -//line sql.y:4487 +//line sql.y:4496 { yyLOCAL = EmptyType } yyVAL.union = yyLOCAL - case 832: + case 834: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL ExplainType -//line sql.y:4491 +//line sql.y:4500 { yyLOCAL = JSONType } yyVAL.union = yyLOCAL - case 833: + case 835: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL ExplainType -//line sql.y:4495 +//line sql.y:4504 { yyLOCAL = TreeType } yyVAL.union = yyLOCAL - case 834: + case 836: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL ExplainType -//line sql.y:4499 +//line sql.y:4508 { yyLOCAL = TraditionalType } yyVAL.union = yyLOCAL - case 835: + case 837: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL ExplainType -//line sql.y:4503 +//line sql.y:4512 { yyLOCAL = AnalyzeType } yyVAL.union = yyLOCAL - case 836: + case 838: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL VExplainType -//line sql.y:4508 +//line sql.y:4517 { yyLOCAL = PlanVExplainType } yyVAL.union = yyLOCAL - case 837: + case 839: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL VExplainType -//line sql.y:4512 +//line sql.y:4521 { yyLOCAL = PlanVExplainType } yyVAL.union = yyLOCAL - case 838: + case 840: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL VExplainType -//line sql.y:4516 +//line sql.y:4525 { yyLOCAL = AllVExplainType } yyVAL.union = yyLOCAL - case 839: + case 841: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL VExplainType -//line sql.y:4520 +//line sql.y:4529 { yyLOCAL = QueriesVExplainType } yyVAL.union = yyLOCAL - case 840: + case 842: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL VExplainType -//line sql.y:4524 +//line sql.y:4533 { yyLOCAL = TraceVExplainType } yyVAL.union = yyLOCAL - case 841: + case 843: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL VExplainType -//line sql.y:4528 +//line sql.y:4537 { yyLOCAL = KeysVExplainType } yyVAL.union = yyLOCAL - case 842: + case 844: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4534 +//line sql.y:4543 { yyVAL.str = yyDollar[1].str } - case 843: + case 845: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4538 +//line sql.y:4547 { yyVAL.str = yyDollar[1].str } - case 844: + case 846: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4542 +//line sql.y:4551 { yyVAL.str = yyDollar[1].str } - case 845: + case 847: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Statement -//line sql.y:4548 +//line sql.y:4557 { yyLOCAL = yyDollar[1].tableStmtUnion() } yyVAL.union = yyLOCAL - case 846: + case 848: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Statement -//line sql.y:4552 +//line sql.y:4561 { yyLOCAL = yyDollar[1].statementUnion() } yyVAL.union = yyLOCAL - case 847: + case 849: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Statement -//line sql.y:4556 +//line sql.y:4565 { yyLOCAL = yyDollar[1].statementUnion() } yyVAL.union = yyLOCAL - case 848: + case 850: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Statement -//line sql.y:4560 +//line sql.y:4569 { yyLOCAL = yyDollar[1].statementUnion() } yyVAL.union = yyLOCAL - case 849: + case 851: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4565 +//line sql.y:4574 { yyVAL.str = "" } - case 850: + case 852: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4569 +//line sql.y:4578 { yyVAL.str = yyDollar[1].identifierCI.val } - case 851: + case 853: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4573 +//line sql.y:4582 { yyVAL.str = encodeSQLString(yyDollar[1].str) } - case 852: + case 854: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Statement -//line sql.y:4579 +//line sql.y:4588 { yyLOCAL = &ExplainTab{Table: yyDollar[3].tableName, Wild: yyDollar[4].str} } yyVAL.union = yyLOCAL - case 853: + case 855: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Statement -//line sql.y:4583 +//line sql.y:4592 { yyLOCAL = &ExplainStmt{Type: yyDollar[3].explainTypeUnion(), Statement: yyDollar[4].statementUnion(), Comments: Comments(yyDollar[2].strs).Parsed()} } yyVAL.union = yyLOCAL - case 854: + case 856: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Statement -//line sql.y:4589 +//line sql.y:4598 { yyLOCAL = &VExplainStmt{Type: yyDollar[3].vexplainTypeUnion(), Statement: yyDollar[4].statementUnion(), Comments: Comments(yyDollar[2].strs).Parsed()} } yyVAL.union = yyLOCAL - case 855: + case 857: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Statement -//line sql.y:4595 +//line sql.y:4604 { yyLOCAL = &OtherAdmin{} } yyVAL.union = yyLOCAL - case 856: + case 858: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Statement -//line sql.y:4599 +//line sql.y:4608 { yyLOCAL = &OtherAdmin{} } yyVAL.union = yyLOCAL - case 857: + case 859: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Statement -//line sql.y:4605 +//line sql.y:4614 { yyLOCAL = &LockTables{Tables: yyDollar[3].tableAndLockTypesUnion()} } yyVAL.union = yyLOCAL - case 858: + case 860: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL TableAndLockTypes -//line sql.y:4611 +//line sql.y:4620 { yyLOCAL = TableAndLockTypes{yyDollar[1].tableAndLockTypeUnion()} } yyVAL.union = yyLOCAL - case 859: + case 861: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4615 +//line sql.y:4624 { yySLICE := (*TableAndLockTypes)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].tableAndLockTypeUnion()) } - case 860: + case 862: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *TableAndLockType -//line sql.y:4621 +//line sql.y:4630 { yyLOCAL = &TableAndLockType{Table: yyDollar[1].aliasedTableNameUnion(), Lock: yyDollar[2].lockTypeUnion()} } yyVAL.union = yyLOCAL - case 861: + case 863: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL LockType -//line sql.y:4627 +//line sql.y:4636 { yyLOCAL = Read } yyVAL.union = yyLOCAL - case 862: + case 864: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL LockType -//line sql.y:4631 +//line sql.y:4640 { yyLOCAL = ReadLocal } yyVAL.union = yyLOCAL - case 863: + case 865: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL LockType -//line sql.y:4635 +//line sql.y:4644 { yyLOCAL = Write } yyVAL.union = yyLOCAL - case 864: + case 866: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL LockType -//line sql.y:4639 +//line sql.y:4648 { yyLOCAL = LowPriorityWrite } yyVAL.union = yyLOCAL - case 865: + case 867: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Statement -//line sql.y:4645 +//line sql.y:4654 { yyLOCAL = &UnlockTables{} } yyVAL.union = yyLOCAL - case 866: + case 868: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Statement -//line sql.y:4651 +//line sql.y:4660 { yyLOCAL = &RevertMigration{Comments: Comments(yyDollar[2].strs).Parsed(), UUID: string(yyDollar[4].str)} } yyVAL.union = yyLOCAL - case 867: + case 869: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Statement -//line sql.y:4657 +//line sql.y:4666 { yyLOCAL = &Flush{IsLocal: yyDollar[2].booleanUnion(), FlushOptions: yyDollar[3].strs} } yyVAL.union = yyLOCAL - case 868: + case 870: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Statement -//line sql.y:4661 +//line sql.y:4670 { yyLOCAL = &Flush{IsLocal: yyDollar[2].booleanUnion()} } yyVAL.union = yyLOCAL - case 869: + case 871: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Statement -//line sql.y:4665 +//line sql.y:4674 { yyLOCAL = &Flush{IsLocal: yyDollar[2].booleanUnion(), WithLock: true} } yyVAL.union = yyLOCAL - case 870: + case 872: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Statement -//line sql.y:4669 +//line sql.y:4678 { yyLOCAL = &Flush{IsLocal: yyDollar[2].booleanUnion(), TableNames: yyDollar[4].tableNamesUnion()} } yyVAL.union = yyLOCAL - case 871: + case 873: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL Statement -//line sql.y:4673 +//line sql.y:4682 { yyLOCAL = &Flush{IsLocal: yyDollar[2].booleanUnion(), TableNames: yyDollar[4].tableNamesUnion(), WithLock: true} } yyVAL.union = yyLOCAL - case 872: + case 874: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Statement -//line sql.y:4677 +//line sql.y:4686 { yyLOCAL = &Flush{IsLocal: yyDollar[2].booleanUnion(), TableNames: yyDollar[4].tableNamesUnion(), ForExport: true} } yyVAL.union = yyLOCAL - case 873: + case 875: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4683 +//line sql.y:4692 { yyVAL.strs = []string{yyDollar[1].str} } - case 874: + case 876: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4687 +//line sql.y:4696 { yyVAL.strs = append(yyDollar[1].strs, yyDollar[3].str) } - case 875: + case 877: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4693 +//line sql.y:4702 { yyVAL.str = string(yyDollar[1].str) + " " + string(yyDollar[2].str) } - case 876: + case 878: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4697 +//line sql.y:4706 { yyVAL.str = string(yyDollar[1].str) + " " + string(yyDollar[2].str) } - case 877: + case 879: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4701 +//line sql.y:4710 { yyVAL.str = string(yyDollar[1].str) + " " + string(yyDollar[2].str) } - case 878: + case 880: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4705 +//line sql.y:4714 { yyVAL.str = string(yyDollar[1].str) + " " + string(yyDollar[2].str) } - case 879: + case 881: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4709 +//line sql.y:4718 { yyVAL.str = string(yyDollar[1].str) } - case 880: + case 882: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4713 +//line sql.y:4722 { yyVAL.str = string(yyDollar[1].str) } - case 881: + case 883: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4717 +//line sql.y:4726 { yyVAL.str = string(yyDollar[1].str) } - case 882: + case 884: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4721 +//line sql.y:4730 { yyVAL.str = string(yyDollar[1].str) + " " + string(yyDollar[2].str) + yyDollar[3].str } - case 883: + case 885: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4725 +//line sql.y:4734 { yyVAL.str = string(yyDollar[1].str) + " " + string(yyDollar[2].str) } - case 884: + case 886: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4729 +//line sql.y:4738 { yyVAL.str = string(yyDollar[1].str) } - case 885: + case 887: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4733 +//line sql.y:4742 { yyVAL.str = string(yyDollar[1].str) } - case 886: + case 888: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4737 +//line sql.y:4746 { yyVAL.str = string(yyDollar[1].str) } - case 887: + case 889: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line sql.y:4742 +//line sql.y:4751 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 888: + case 890: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line sql.y:4746 +//line sql.y:4755 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 889: + case 891: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line sql.y:4750 +//line sql.y:4759 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 890: + case 892: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4755 +//line sql.y:4764 { yyVAL.str = "" } - case 891: + case 893: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4759 +//line sql.y:4768 { yyVAL.str = " " + string(yyDollar[1].str) + " " + string(yyDollar[2].str) + " " + yyDollar[3].identifierCI.String() } - case 892: + case 894: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4764 +//line sql.y:4773 { setAllowComments(yylex, true) } - case 893: + case 895: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4768 +//line sql.y:4777 { yyVAL.strs = yyDollar[2].strs setAllowComments(yylex, false) } - case 894: + case 896: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4774 +//line sql.y:4783 { yyVAL.strs = nil } - case 895: + case 897: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4778 +//line sql.y:4787 { yyVAL.strs = append(yyDollar[1].strs, yyDollar[2].str) } - case 896: + case 898: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line sql.y:4784 +//line sql.y:4793 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 897: + case 899: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL bool -//line sql.y:4788 +//line sql.y:4797 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 898: + case 900: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL bool -//line sql.y:4792 +//line sql.y:4801 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 899: + case 901: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4797 +//line sql.y:4806 { yyVAL.str = "" } - case 900: + case 902: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4801 +//line sql.y:4810 { yyVAL.str = SQLNoCacheStr } - case 901: + case 903: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4805 +//line sql.y:4814 { yyVAL.str = SQLCacheStr } - case 902: + case 904: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line sql.y:4810 +//line sql.y:4819 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 903: + case 905: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line sql.y:4814 +//line sql.y:4823 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 904: + case 906: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line sql.y:4818 +//line sql.y:4827 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 905: + case 907: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Statement -//line sql.y:4824 +//line sql.y:4833 { yyLOCAL = &PrepareStmt{Name: yyDollar[3].identifierCI, Comments: Comments(yyDollar[2].strs).Parsed(), Statement: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 906: + case 908: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Statement -//line sql.y:4828 +//line sql.y:4837 { yyLOCAL = &PrepareStmt{ Name: yyDollar[3].identifierCI, @@ -16988,597 +16968,597 @@ yydefault: } } yyVAL.union = yyLOCAL - case 907: + case 909: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Statement -//line sql.y:4838 +//line sql.y:4847 { yyLOCAL = &ExecuteStmt{Name: yyDollar[3].identifierCI, Comments: Comments(yyDollar[2].strs).Parsed(), Arguments: yyDollar[4].variablesUnion()} } yyVAL.union = yyLOCAL - case 908: + case 910: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL []*Variable -//line sql.y:4843 +//line sql.y:4852 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 909: + case 911: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL []*Variable -//line sql.y:4847 +//line sql.y:4856 { yyLOCAL = yyDollar[2].variablesUnion() } yyVAL.union = yyLOCAL - case 910: + case 912: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Statement -//line sql.y:4853 +//line sql.y:4862 { yyLOCAL = &DeallocateStmt{Comments: Comments(yyDollar[2].strs).Parsed(), Name: yyDollar[4].identifierCI} } yyVAL.union = yyLOCAL - case 911: + case 913: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Statement -//line sql.y:4857 +//line sql.y:4866 { yyLOCAL = &DeallocateStmt{Comments: Comments(yyDollar[2].strs).Parsed(), Name: yyDollar[4].identifierCI} } yyVAL.union = yyLOCAL - case 912: + case 914: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4862 +//line sql.y:4871 { yyVAL.strs = nil } - case 913: + case 915: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4866 +//line sql.y:4875 { yyVAL.strs = yyDollar[1].strs } - case 914: + case 916: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4872 +//line sql.y:4881 { yyVAL.strs = []string{yyDollar[1].str} } - case 915: + case 917: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4876 +//line sql.y:4885 { yyVAL.strs = append(yyDollar[1].strs, yyDollar[2].str) } - case 916: + case 918: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4882 +//line sql.y:4891 { yyVAL.str = SQLNoCacheStr } - case 917: + case 919: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4886 +//line sql.y:4895 { yyVAL.str = SQLCacheStr } - case 918: + case 920: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4890 +//line sql.y:4899 { yyVAL.str = DistinctStr } - case 919: + case 921: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4894 +//line sql.y:4903 { yyVAL.str = DistinctStr } - case 920: + case 922: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4898 +//line sql.y:4907 { yyVAL.str = HighPriorityStr } - case 921: + case 923: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4902 +//line sql.y:4911 { yyVAL.str = StraightJoinHint } - case 922: + case 924: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4906 +//line sql.y:4915 { yyVAL.str = SQLBufferResultStr } - case 923: + case 925: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4910 +//line sql.y:4919 { yyVAL.str = SQLSmallResultStr } - case 924: + case 926: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4914 +//line sql.y:4923 { yyVAL.str = SQLBigResultStr } - case 925: + case 927: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4918 +//line sql.y:4927 { yyVAL.str = SQLCalcFoundRowsStr } - case 926: + case 928: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4922 +//line sql.y:4931 { yyVAL.str = AllStr // These are not picked up by NewSelect, and so ALL will be dropped. But this is OK, since it's redundant anyway } - case 927: + case 929: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL SelectExprs -//line sql.y:4928 +//line sql.y:4937 { yyLOCAL = SelectExprs{yyDollar[1].selectExprUnion()} } yyVAL.union = yyLOCAL - case 928: + case 930: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4932 +//line sql.y:4941 { yySLICE := (*SelectExprs)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].selectExprUnion()) } - case 929: + case 931: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL SelectExpr -//line sql.y:4938 +//line sql.y:4947 { yyLOCAL = &StarExpr{} } yyVAL.union = yyLOCAL - case 930: + case 932: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL SelectExpr -//line sql.y:4942 +//line sql.y:4951 { yyLOCAL = &AliasedExpr{Expr: yyDollar[1].exprUnion(), As: yyDollar[2].identifierCI} } yyVAL.union = yyLOCAL - case 931: + case 933: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL SelectExpr -//line sql.y:4946 +//line sql.y:4955 { yyLOCAL = &StarExpr{TableName: TableName{Name: yyDollar[1].identifierCS}} } yyVAL.union = yyLOCAL - case 932: + case 934: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL SelectExpr -//line sql.y:4950 +//line sql.y:4959 { yyLOCAL = &StarExpr{TableName: TableName{Qualifier: yyDollar[1].identifierCS, Name: yyDollar[3].identifierCS}} } yyVAL.union = yyLOCAL - case 933: + case 935: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:4955 +//line sql.y:4964 { yyVAL.identifierCI = IdentifierCI{} } - case 934: + case 936: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4959 +//line sql.y:4968 { yyVAL.identifierCI = yyDollar[1].identifierCI } - case 935: + case 937: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:4963 +//line sql.y:4972 { yyVAL.identifierCI = yyDollar[2].identifierCI } - case 937: + case 939: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:4970 +//line sql.y:4979 { yyVAL.identifierCI = NewIdentifierCI(string(yyDollar[1].str)) } - case 938: + case 940: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL TableExprs -//line sql.y:4975 +//line sql.y:4984 { yyLOCAL = TableExprs{&AliasedTableExpr{Expr: TableName{Name: NewIdentifierCS("dual")}}} } yyVAL.union = yyLOCAL - case 939: + case 941: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL TableExprs -//line sql.y:4979 +//line sql.y:4988 { yyLOCAL = yyDollar[1].tableExprsUnion() } yyVAL.union = yyLOCAL - case 940: + case 942: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL TableExprs -//line sql.y:4985 +//line sql.y:4994 { yyLOCAL = yyDollar[2].tableExprsUnion() } yyVAL.union = yyLOCAL - case 941: + case 943: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL TableExprs -//line sql.y:4991 +//line sql.y:5000 { yyLOCAL = TableExprs{yyDollar[1].tableExprUnion()} } yyVAL.union = yyLOCAL - case 942: + case 944: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:4995 +//line sql.y:5004 { yySLICE := (*TableExprs)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].tableExprUnion()) } - case 945: + case 947: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL TableExpr -//line sql.y:5005 +//line sql.y:5014 { yyLOCAL = yyDollar[1].aliasedTableNameUnion() } yyVAL.union = yyLOCAL - case 946: + case 948: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL TableExpr -//line sql.y:5009 +//line sql.y:5018 { yyLOCAL = &AliasedTableExpr{Expr: yyDollar[1].derivedTableUnion(), As: yyDollar[3].identifierCS, Columns: yyDollar[4].columnsUnion()} } yyVAL.union = yyLOCAL - case 947: + case 949: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL TableExpr -//line sql.y:5013 +//line sql.y:5022 { yyLOCAL = &ParenTableExpr{Exprs: yyDollar[2].tableExprsUnion()} } yyVAL.union = yyLOCAL - case 948: + case 950: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL TableExpr -//line sql.y:5017 +//line sql.y:5026 { yyLOCAL = yyDollar[1].tableExprUnion() } yyVAL.union = yyLOCAL - case 949: + case 951: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *DerivedTable -//line sql.y:5023 +//line sql.y:5032 { yyLOCAL = &DerivedTable{Lateral: false, Select: yyDollar[1].tableStmtUnion()} } yyVAL.union = yyLOCAL - case 950: + case 952: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *DerivedTable -//line sql.y:5027 +//line sql.y:5036 { yyLOCAL = &DerivedTable{Lateral: true, Select: yyDollar[2].tableStmtUnion()} } yyVAL.union = yyLOCAL - case 951: + case 953: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *AliasedTableExpr -//line sql.y:5033 +//line sql.y:5042 { yyLOCAL = &AliasedTableExpr{Expr: yyDollar[1].tableName, As: yyDollar[2].identifierCS, Hints: yyDollar[3].indexHintsUnion()} } yyVAL.union = yyLOCAL - case 952: + case 954: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL *AliasedTableExpr -//line sql.y:5037 +//line sql.y:5046 { yyLOCAL = &AliasedTableExpr{Expr: yyDollar[1].tableName, Partitions: yyDollar[4].partitionsUnion(), As: yyDollar[6].identifierCS, Hints: yyDollar[7].indexHintsUnion()} } yyVAL.union = yyLOCAL - case 953: + case 955: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL Columns -//line sql.y:5042 +//line sql.y:5051 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 954: + case 956: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Columns -//line sql.y:5046 +//line sql.y:5055 { yyLOCAL = yyDollar[2].columnsUnion() } yyVAL.union = yyLOCAL - case 955: + case 957: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL Columns -//line sql.y:5051 +//line sql.y:5060 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 956: + case 958: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Columns -//line sql.y:5055 +//line sql.y:5064 { yyLOCAL = yyDollar[1].columnsUnion() } yyVAL.union = yyLOCAL - case 957: + case 959: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Columns -//line sql.y:5061 +//line sql.y:5070 { yyLOCAL = Columns{yyDollar[1].identifierCI} } yyVAL.union = yyLOCAL - case 958: + case 960: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:5065 +//line sql.y:5074 { yySLICE := (*Columns)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].identifierCI) } - case 959: + case 961: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []*Variable -//line sql.y:5071 +//line sql.y:5080 { yyLOCAL = []*Variable{yyDollar[1].variableUnion()} } yyVAL.union = yyLOCAL - case 960: + case 962: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:5075 +//line sql.y:5084 { yySLICE := (*[]*Variable)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].variableUnion()) } - case 961: + case 963: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Columns -//line sql.y:5081 +//line sql.y:5090 { yyLOCAL = Columns{yyDollar[1].identifierCI} } yyVAL.union = yyLOCAL - case 962: + case 964: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Columns -//line sql.y:5085 +//line sql.y:5094 { yyLOCAL = Columns{NewIdentifierCI(string(yyDollar[1].str))} } yyVAL.union = yyLOCAL - case 963: + case 965: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:5089 +//line sql.y:5098 { yySLICE := (*Columns)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].identifierCI) } - case 964: + case 966: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:5093 +//line sql.y:5102 { yySLICE := (*Columns)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, NewIdentifierCI(string(yyDollar[3].str))) } - case 965: + case 967: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Partitions -//line sql.y:5099 +//line sql.y:5108 { yyLOCAL = Partitions{yyDollar[1].identifierCI} } yyVAL.union = yyLOCAL - case 966: + case 968: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:5103 +//line sql.y:5112 { yySLICE := (*Partitions)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].identifierCI) } - case 967: + case 969: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL TableExpr -//line sql.y:5116 +//line sql.y:5125 { yyLOCAL = &JoinTableExpr{LeftExpr: yyDollar[1].tableExprUnion(), Join: yyDollar[2].joinTypeUnion(), RightExpr: yyDollar[3].tableExprUnion(), Condition: yyDollar[4].joinCondition} } yyVAL.union = yyLOCAL - case 968: + case 970: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL TableExpr -//line sql.y:5120 +//line sql.y:5129 { yyLOCAL = &JoinTableExpr{LeftExpr: yyDollar[1].tableExprUnion(), Join: yyDollar[2].joinTypeUnion(), RightExpr: yyDollar[3].tableExprUnion(), Condition: yyDollar[4].joinCondition} } yyVAL.union = yyLOCAL - case 969: + case 971: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL TableExpr -//line sql.y:5124 +//line sql.y:5133 { yyLOCAL = &JoinTableExpr{LeftExpr: yyDollar[1].tableExprUnion(), Join: yyDollar[2].joinTypeUnion(), RightExpr: yyDollar[3].tableExprUnion(), Condition: yyDollar[4].joinCondition} } yyVAL.union = yyLOCAL - case 970: + case 972: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL TableExpr -//line sql.y:5128 +//line sql.y:5137 { yyLOCAL = &JoinTableExpr{LeftExpr: yyDollar[1].tableExprUnion(), Join: yyDollar[2].joinTypeUnion(), RightExpr: yyDollar[3].tableExprUnion()} } yyVAL.union = yyLOCAL - case 971: + case 973: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:5134 +//line sql.y:5143 { yyVAL.joinCondition = &JoinCondition{On: yyDollar[2].exprUnion()} } - case 972: + case 974: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:5136 +//line sql.y:5145 { yyVAL.joinCondition = &JoinCondition{Using: yyDollar[3].columnsUnion()} } - case 973: + case 975: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:5140 +//line sql.y:5149 { yyVAL.joinCondition = &JoinCondition{} } - case 974: + case 976: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:5142 +//line sql.y:5151 { yyVAL.joinCondition = yyDollar[1].joinCondition } - case 975: + case 977: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:5146 +//line sql.y:5155 { yyVAL.joinCondition = &JoinCondition{} } - case 976: + case 978: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:5148 +//line sql.y:5157 { yyVAL.joinCondition = &JoinCondition{On: yyDollar[2].exprUnion()} } - case 977: + case 979: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:5151 +//line sql.y:5160 { yyVAL.empty = struct{}{} } - case 978: + case 980: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:5153 +//line sql.y:5162 { yyVAL.empty = struct{}{} } - case 979: + case 981: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:5156 +//line sql.y:5165 { yyVAL.identifierCS = NewIdentifierCS("") } - case 980: + case 982: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:5160 +//line sql.y:5169 { yyVAL.identifierCS = yyDollar[1].identifierCS } - case 981: + case 983: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:5164 +//line sql.y:5173 { yyVAL.identifierCS = yyDollar[2].identifierCS } - case 983: + case 985: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:5171 +//line sql.y:5180 { yyVAL.identifierCS = NewIdentifierCS(string(yyDollar[1].str)) } - case 984: + case 986: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL JoinType -//line sql.y:5177 +//line sql.y:5186 { yyLOCAL = NormalJoinType } yyVAL.union = yyLOCAL - case 985: + case 987: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL JoinType -//line sql.y:5181 +//line sql.y:5190 { yyLOCAL = NormalJoinType } yyVAL.union = yyLOCAL - case 986: + case 988: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL JoinType -//line sql.y:5185 +//line sql.y:5194 { yyLOCAL = NormalJoinType } yyVAL.union = yyLOCAL - case 987: + case 989: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL JoinType -//line sql.y:5191 +//line sql.y:5200 { yyLOCAL = StraightJoinType } yyVAL.union = yyLOCAL - case 988: + case 990: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL JoinType -//line sql.y:5197 +//line sql.y:5206 { yyLOCAL = LeftJoinType } yyVAL.union = yyLOCAL - case 989: + case 991: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL JoinType -//line sql.y:5201 +//line sql.y:5210 { yyLOCAL = LeftJoinType } yyVAL.union = yyLOCAL - case 990: + case 992: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL JoinType -//line sql.y:5205 +//line sql.y:5214 { yyLOCAL = RightJoinType } yyVAL.union = yyLOCAL - case 991: + case 993: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL JoinType -//line sql.y:5209 +//line sql.y:5218 { yyLOCAL = RightJoinType } yyVAL.union = yyLOCAL - case 992: + case 994: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL JoinType -//line sql.y:5215 +//line sql.y:5224 { yyLOCAL = NaturalJoinType } yyVAL.union = yyLOCAL - case 993: + case 995: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL JoinType -//line sql.y:5219 +//line sql.y:5228 { if yyDollar[2].joinTypeUnion() == LeftJoinType { yyLOCAL = NaturalLeftJoinType @@ -17587,667 +17567,667 @@ yydefault: } } yyVAL.union = yyLOCAL - case 994: + case 996: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:5229 +//line sql.y:5238 { yyVAL.tableName = yyDollar[2].tableName } - case 995: + case 997: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:5233 +//line sql.y:5242 { yyVAL.tableName = yyDollar[1].tableName } - case 996: + case 998: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:5239 +//line sql.y:5248 { yyVAL.tableName = TableName{Name: yyDollar[1].identifierCS} } - case 997: + case 999: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:5243 +//line sql.y:5252 { yyVAL.tableName = TableName{Qualifier: yyDollar[1].identifierCS, Name: yyDollar[3].identifierCS} } - case 998: + case 1000: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:5249 +//line sql.y:5258 { yyVAL.tableName = TableName{Name: yyDollar[1].identifierCS} } - case 999: + case 1001: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL IndexHints -//line sql.y:5254 +//line sql.y:5263 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1000: + case 1002: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL IndexHints -//line sql.y:5258 +//line sql.y:5267 { yyLOCAL = yyDollar[1].indexHintsUnion() } yyVAL.union = yyLOCAL - case 1001: + case 1003: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL IndexHints -//line sql.y:5264 +//line sql.y:5273 { yyLOCAL = IndexHints{yyDollar[1].indexHintUnion()} } yyVAL.union = yyLOCAL - case 1002: + case 1004: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:5268 +//line sql.y:5277 { yySLICE := (*IndexHints)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[2].indexHintUnion()) } - case 1003: + case 1005: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *IndexHint -//line sql.y:5274 +//line sql.y:5283 { yyLOCAL = &IndexHint{Type: UseOp, ForType: yyDollar[3].indexHintForTypeUnion(), Indexes: yyDollar[5].columnsUnion()} } yyVAL.union = yyLOCAL - case 1004: + case 1006: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *IndexHint -//line sql.y:5278 +//line sql.y:5287 { yyLOCAL = &IndexHint{Type: UseOp, ForType: yyDollar[3].indexHintForTypeUnion()} } yyVAL.union = yyLOCAL - case 1005: + case 1007: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *IndexHint -//line sql.y:5282 +//line sql.y:5291 { yyLOCAL = &IndexHint{Type: IgnoreOp, ForType: yyDollar[3].indexHintForTypeUnion(), Indexes: yyDollar[5].columnsUnion()} } yyVAL.union = yyLOCAL - case 1006: + case 1008: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *IndexHint -//line sql.y:5286 +//line sql.y:5295 { yyLOCAL = &IndexHint{Type: ForceOp, ForType: yyDollar[3].indexHintForTypeUnion(), Indexes: yyDollar[5].columnsUnion()} } yyVAL.union = yyLOCAL - case 1007: + case 1009: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *IndexHint -//line sql.y:5290 +//line sql.y:5299 { yyLOCAL = &IndexHint{Type: UseVindexOp, Indexes: yyDollar[4].columnsUnion()} } yyVAL.union = yyLOCAL - case 1008: + case 1010: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *IndexHint -//line sql.y:5294 +//line sql.y:5303 { yyLOCAL = &IndexHint{Type: IgnoreVindexOp, Indexes: yyDollar[4].columnsUnion()} } yyVAL.union = yyLOCAL - case 1009: + case 1011: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL IndexHintForType -//line sql.y:5299 +//line sql.y:5308 { yyLOCAL = NoForType } yyVAL.union = yyLOCAL - case 1010: + case 1012: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL IndexHintForType -//line sql.y:5303 +//line sql.y:5312 { yyLOCAL = JoinForType } yyVAL.union = yyLOCAL - case 1011: + case 1013: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL IndexHintForType -//line sql.y:5307 +//line sql.y:5316 { yyLOCAL = OrderByForType } yyVAL.union = yyLOCAL - case 1012: + case 1014: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL IndexHintForType -//line sql.y:5311 +//line sql.y:5320 { yyLOCAL = GroupByForType } yyVAL.union = yyLOCAL - case 1013: + case 1015: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL Expr -//line sql.y:5317 +//line sql.y:5326 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1014: + case 1016: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:5321 +//line sql.y:5330 { yyLOCAL = yyDollar[2].exprUnion() } yyVAL.union = yyLOCAL - case 1015: + case 1017: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr -//line sql.y:5328 +//line sql.y:5337 { yyLOCAL = &OrExpr{Left: yyDollar[1].exprUnion(), Right: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1016: + case 1018: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr -//line sql.y:5332 +//line sql.y:5341 { yyLOCAL = &XorExpr{Left: yyDollar[1].exprUnion(), Right: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1017: + case 1019: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr -//line sql.y:5336 +//line sql.y:5345 { yyLOCAL = &AndExpr{Left: yyDollar[1].exprUnion(), Right: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1018: + case 1020: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:5340 +//line sql.y:5349 { yyLOCAL = &NotExpr{Expr: yyDollar[2].exprUnion()} } yyVAL.union = yyLOCAL - case 1019: + case 1021: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr -//line sql.y:5344 +//line sql.y:5353 { yyLOCAL = &IsExpr{Left: yyDollar[1].exprUnion(), Right: yyDollar[3].isExprOperatorUnion()} } yyVAL.union = yyLOCAL - case 1020: + case 1022: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:5348 +//line sql.y:5357 { yyLOCAL = yyDollar[1].exprUnion() } yyVAL.union = yyLOCAL - case 1021: + case 1023: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr -//line sql.y:5352 +//line sql.y:5361 { yyLOCAL = &AssignmentExpr{Left: yyDollar[1].variableUnion(), Right: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1022: + case 1024: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:5356 +//line sql.y:5365 { yyLOCAL = &MemberOfExpr{Value: yyDollar[1].exprUnion(), JSONArr: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1023: + case 1025: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:5362 +//line sql.y:5371 { } - case 1024: + case 1026: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:5365 +//line sql.y:5374 { } - case 1025: + case 1027: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr -//line sql.y:5370 +//line sql.y:5379 { yyLOCAL = &IsExpr{Left: yyDollar[1].exprUnion(), Right: IsNullOp} } yyVAL.union = yyLOCAL - case 1026: + case 1028: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:5374 +//line sql.y:5383 { yyLOCAL = &IsExpr{Left: yyDollar[1].exprUnion(), Right: IsNotNullOp} } yyVAL.union = yyLOCAL - case 1027: + case 1029: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr -//line sql.y:5378 +//line sql.y:5387 { yyLOCAL = &ComparisonExpr{Left: yyDollar[1].exprUnion(), Operator: yyDollar[2].comparisonExprOperatorUnion(), Right: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1028: + case 1030: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:5382 +//line sql.y:5391 { yyLOCAL = &ComparisonExpr{Left: yyDollar[1].exprUnion(), Operator: yyDollar[2].comparisonExprOperatorUnion(), Modifier: Any, Right: yyDollar[4].subqueryUnion()} } yyVAL.union = yyLOCAL - case 1029: + case 1031: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:5386 +//line sql.y:5395 { yyLOCAL = &ComparisonExpr{Left: yyDollar[1].exprUnion(), Operator: yyDollar[2].comparisonExprOperatorUnion(), Modifier: Any, Right: yyDollar[4].subqueryUnion()} } yyVAL.union = yyLOCAL - case 1030: + case 1032: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:5390 +//line sql.y:5399 { yyLOCAL = &ComparisonExpr{Left: yyDollar[1].exprUnion(), Operator: yyDollar[2].comparisonExprOperatorUnion(), Modifier: All, Right: yyDollar[4].subqueryUnion()} } yyVAL.union = yyLOCAL - case 1031: + case 1033: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:5394 +//line sql.y:5403 { yyLOCAL = yyDollar[1].exprUnion() } yyVAL.union = yyLOCAL - case 1032: + case 1034: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr -//line sql.y:5400 +//line sql.y:5409 { yyLOCAL = &ComparisonExpr{Left: yyDollar[1].exprUnion(), Operator: InOp, Right: yyDollar[3].colTupleUnion()} } yyVAL.union = yyLOCAL - case 1033: + case 1035: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:5404 +//line sql.y:5413 { yyLOCAL = &ComparisonExpr{Left: yyDollar[1].exprUnion(), Operator: NotInOp, Right: yyDollar[4].colTupleUnion()} } yyVAL.union = yyLOCAL - case 1034: + case 1036: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Expr -//line sql.y:5408 +//line sql.y:5417 { yyLOCAL = &BetweenExpr{Left: yyDollar[1].exprUnion(), IsBetween: true, From: yyDollar[3].exprUnion(), To: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1035: + case 1037: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:5412 +//line sql.y:5421 { yyLOCAL = &BetweenExpr{Left: yyDollar[1].exprUnion(), IsBetween: false, From: yyDollar[4].exprUnion(), To: yyDollar[6].exprUnion()} } yyVAL.union = yyLOCAL - case 1036: + case 1038: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr -//line sql.y:5416 +//line sql.y:5425 { yyLOCAL = &ComparisonExpr{Left: yyDollar[1].exprUnion(), Operator: LikeOp, Right: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1037: + case 1039: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:5420 +//line sql.y:5429 { yyLOCAL = &ComparisonExpr{Left: yyDollar[1].exprUnion(), Operator: NotLikeOp, Right: yyDollar[4].exprUnion()} } yyVAL.union = yyLOCAL - case 1038: + case 1040: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Expr -//line sql.y:5424 +//line sql.y:5433 { yyLOCAL = &ComparisonExpr{Left: yyDollar[1].exprUnion(), Operator: LikeOp, Right: yyDollar[3].exprUnion(), Escape: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1039: + case 1041: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:5428 +//line sql.y:5437 { yyLOCAL = &ComparisonExpr{Left: yyDollar[1].exprUnion(), Operator: NotLikeOp, Right: yyDollar[4].exprUnion(), Escape: yyDollar[6].exprUnion()} } yyVAL.union = yyLOCAL - case 1040: + case 1042: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr -//line sql.y:5432 +//line sql.y:5441 { yyLOCAL = &ComparisonExpr{Left: yyDollar[1].exprUnion(), Operator: RegexpOp, Right: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1041: + case 1043: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:5436 +//line sql.y:5445 { yyLOCAL = &ComparisonExpr{Left: yyDollar[1].exprUnion(), Operator: NotRegexpOp, Right: yyDollar[4].exprUnion()} } yyVAL.union = yyLOCAL - case 1042: + case 1044: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:5440 +//line sql.y:5449 { yyLOCAL = yyDollar[1].exprUnion() } yyVAL.union = yyLOCAL - case 1043: + case 1045: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:5446 +//line sql.y:5455 { } - case 1044: + case 1046: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:5449 +//line sql.y:5458 { } - case 1045: + case 1047: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr -//line sql.y:5455 +//line sql.y:5464 { yyLOCAL = &BinaryExpr{Left: yyDollar[1].exprUnion(), Operator: BitOrOp, Right: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1046: + case 1048: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr -//line sql.y:5459 +//line sql.y:5468 { yyLOCAL = &BinaryExpr{Left: yyDollar[1].exprUnion(), Operator: BitAndOp, Right: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1047: + case 1049: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr -//line sql.y:5463 +//line sql.y:5472 { yyLOCAL = &BinaryExpr{Left: yyDollar[1].exprUnion(), Operator: ShiftLeftOp, Right: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1048: + case 1050: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr -//line sql.y:5467 +//line sql.y:5476 { yyLOCAL = &BinaryExpr{Left: yyDollar[1].exprUnion(), Operator: ShiftRightOp, Right: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1049: + case 1051: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr -//line sql.y:5471 +//line sql.y:5480 { yyLOCAL = &BinaryExpr{Left: yyDollar[1].exprUnion(), Operator: PlusOp, Right: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1050: + case 1052: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr -//line sql.y:5475 +//line sql.y:5484 { yyLOCAL = &BinaryExpr{Left: yyDollar[1].exprUnion(), Operator: MinusOp, Right: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1051: + case 1053: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Expr -//line sql.y:5479 +//line sql.y:5488 { yyLOCAL = &IntervalDateExpr{Syntax: IntervalDateExprBinaryAdd, Date: yyDollar[1].exprUnion(), Unit: yyDollar[5].intervalTypeUnion(), Interval: yyDollar[4].exprUnion()} } yyVAL.union = yyLOCAL - case 1052: + case 1054: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Expr -//line sql.y:5483 +//line sql.y:5492 { yyLOCAL = &IntervalDateExpr{Syntax: IntervalDateExprBinarySub, Date: yyDollar[1].exprUnion(), Unit: yyDollar[5].intervalTypeUnion(), Interval: yyDollar[4].exprUnion()} } yyVAL.union = yyLOCAL - case 1053: + case 1055: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr -//line sql.y:5487 +//line sql.y:5496 { yyLOCAL = &BinaryExpr{Left: yyDollar[1].exprUnion(), Operator: MultOp, Right: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1054: + case 1056: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr -//line sql.y:5491 +//line sql.y:5500 { yyLOCAL = &BinaryExpr{Left: yyDollar[1].exprUnion(), Operator: DivOp, Right: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1055: + case 1057: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr -//line sql.y:5495 +//line sql.y:5504 { yyLOCAL = &BinaryExpr{Left: yyDollar[1].exprUnion(), Operator: ModOp, Right: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1056: + case 1058: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr -//line sql.y:5499 +//line sql.y:5508 { yyLOCAL = &BinaryExpr{Left: yyDollar[1].exprUnion(), Operator: IntDivOp, Right: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1057: + case 1059: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr -//line sql.y:5503 +//line sql.y:5512 { yyLOCAL = &BinaryExpr{Left: yyDollar[1].exprUnion(), Operator: ModOp, Right: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1058: + case 1060: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr -//line sql.y:5507 +//line sql.y:5516 { yyLOCAL = &BinaryExpr{Left: yyDollar[1].exprUnion(), Operator: BitXorOp, Right: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1059: + case 1061: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:5511 +//line sql.y:5520 { yyLOCAL = yyDollar[1].exprUnion() } yyVAL.union = yyLOCAL - case 1060: + case 1062: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:5517 +//line sql.y:5526 { yyLOCAL = yyDollar[1].exprUnion() } yyVAL.union = yyLOCAL - case 1061: + case 1063: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:5521 +//line sql.y:5530 { yyLOCAL = yyDollar[1].exprUnion() } yyVAL.union = yyLOCAL - case 1062: + case 1064: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:5525 +//line sql.y:5534 { yyLOCAL = yyDollar[1].exprUnion() } yyVAL.union = yyLOCAL - case 1063: + case 1065: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:5529 +//line sql.y:5538 { yyLOCAL = yyDollar[1].exprUnion() } yyVAL.union = yyLOCAL - case 1064: + case 1066: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr -//line sql.y:5533 +//line sql.y:5542 { yyLOCAL = &CollateExpr{Expr: yyDollar[1].exprUnion(), Collation: yyDollar[3].str} } yyVAL.union = yyLOCAL - case 1065: + case 1067: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:5537 +//line sql.y:5546 { yyLOCAL = yyDollar[1].exprUnion() } yyVAL.union = yyLOCAL - case 1066: + case 1068: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:5541 +//line sql.y:5550 { yyLOCAL = yyDollar[1].exprUnion() } yyVAL.union = yyLOCAL - case 1067: + case 1069: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:5545 +//line sql.y:5554 { yyLOCAL = yyDollar[1].variableUnion() } yyVAL.union = yyLOCAL - case 1068: + case 1070: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:5549 +//line sql.y:5558 { yyLOCAL = yyDollar[2].exprUnion() // TODO: do we really want to ignore unary '+' before any kind of literals? } yyVAL.union = yyLOCAL - case 1069: + case 1071: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:5553 +//line sql.y:5562 { yyLOCAL = &UnaryExpr{Operator: UMinusOp, Expr: yyDollar[2].exprUnion()} } yyVAL.union = yyLOCAL - case 1070: + case 1072: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:5557 +//line sql.y:5566 { yyLOCAL = &UnaryExpr{Operator: TildaOp, Expr: yyDollar[2].exprUnion()} } yyVAL.union = yyLOCAL - case 1071: + case 1073: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:5561 +//line sql.y:5570 { yyLOCAL = &UnaryExpr{Operator: BangOp, Expr: yyDollar[2].exprUnion()} } yyVAL.union = yyLOCAL - case 1072: + case 1074: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:5565 +//line sql.y:5574 { yyLOCAL = yyDollar[1].subqueryUnion() } yyVAL.union = yyLOCAL - case 1073: + case 1075: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:5569 +//line sql.y:5578 { yyLOCAL = yyDollar[1].exprUnion() } yyVAL.union = yyLOCAL - case 1074: + case 1076: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:5573 +//line sql.y:5582 { yyLOCAL = &ExistsExpr{Subquery: yyDollar[2].subqueryUnion()} } yyVAL.union = yyLOCAL - case 1075: + case 1077: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL Expr -//line sql.y:5577 +//line sql.y:5586 { yyLOCAL = &MatchExpr{Columns: yyDollar[2].colNamesUnion(), Expr: yyDollar[5].exprUnion(), Option: yyDollar[6].matchExprOptionUnion()} } yyVAL.union = yyLOCAL - case 1076: + case 1078: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL Expr -//line sql.y:5581 +//line sql.y:5590 { yyLOCAL = &CastExpr{Expr: yyDollar[3].exprUnion(), Type: yyDollar[5].convertTypeUnion(), Array: yyDollar[6].booleanUnion()} } yyVAL.union = yyLOCAL - case 1077: + case 1079: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:5585 +//line sql.y:5594 { yyLOCAL = &ConvertExpr{Expr: yyDollar[3].exprUnion(), Type: yyDollar[5].convertTypeUnion()} } yyVAL.union = yyLOCAL - case 1078: + case 1080: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:5589 +//line sql.y:5598 { yyLOCAL = &ConvertUsingExpr{Expr: yyDollar[3].exprUnion(), Type: yyDollar[5].str} } yyVAL.union = yyLOCAL - case 1079: + case 1081: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:5593 +//line sql.y:5602 { // From: https://dev.mysql.com/doc/refman/8.0/en/cast-functions.html#operator_binary // To convert a string expression to a binary string, these constructs are equivalent: @@ -18256,3218 +18236,3218 @@ yydefault: yyLOCAL = &ConvertExpr{Expr: yyDollar[2].exprUnion(), Type: &ConvertType{Type: yyDollar[1].str}} } yyVAL.union = yyLOCAL - case 1080: + case 1082: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:5601 +//line sql.y:5610 { yyLOCAL = &Default{ColName: yyDollar[2].str} } yyVAL.union = yyLOCAL - case 1081: + case 1083: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Expr -//line sql.y:5605 +//line sql.y:5614 { yyLOCAL = &IntervalDateExpr{Syntax: IntervalDateExprBinaryAddLeft, Date: yyDollar[5].exprUnion(), Unit: yyDollar[3].intervalTypeUnion(), Interval: yyDollar[2].exprUnion()} } yyVAL.union = yyLOCAL - case 1082: + case 1084: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:5609 +//line sql.y:5618 { yyLOCAL = &IntervalFuncExpr{Expr: yyDollar[3].exprUnion(), Exprs: yyDollar[5].exprsUnion()} } yyVAL.union = yyLOCAL - case 1083: + case 1085: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr -//line sql.y:5613 +//line sql.y:5622 { yyLOCAL = &JSONExtractExpr{JSONDoc: yyDollar[1].exprUnion(), PathList: []Expr{yyDollar[3].exprUnion()}} } yyVAL.union = yyLOCAL - case 1084: + case 1086: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr -//line sql.y:5617 +//line sql.y:5626 { yyLOCAL = &JSONUnquoteExpr{JSONValue: &JSONExtractExpr{JSONDoc: yyDollar[1].exprUnion(), PathList: []Expr{yyDollar[3].exprUnion()}}} } yyVAL.union = yyLOCAL - case 1085: + case 1087: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []*ColName -//line sql.y:5623 +//line sql.y:5632 { yyLOCAL = yyDollar[1].colNamesUnion() } yyVAL.union = yyLOCAL - case 1086: + case 1088: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL []*ColName -//line sql.y:5627 +//line sql.y:5636 { yyLOCAL = yyDollar[2].colNamesUnion() } yyVAL.union = yyLOCAL - case 1087: + case 1089: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []*ColName -//line sql.y:5633 +//line sql.y:5642 { yyLOCAL = []*ColName{yyDollar[1].colNameUnion()} } yyVAL.union = yyLOCAL - case 1088: + case 1090: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:5637 +//line sql.y:5646 { yySLICE := (*[]*ColName)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].colNameUnion()) } - case 1089: + case 1091: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL TrimType -//line sql.y:5643 +//line sql.y:5652 { yyLOCAL = BothTrimType } yyVAL.union = yyLOCAL - case 1090: + case 1092: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL TrimType -//line sql.y:5647 +//line sql.y:5656 { yyLOCAL = LeadingTrimType } yyVAL.union = yyLOCAL - case 1091: + case 1093: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL TrimType -//line sql.y:5651 +//line sql.y:5660 { yyLOCAL = TrailingTrimType } yyVAL.union = yyLOCAL - case 1092: + case 1094: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL FrameUnitType -//line sql.y:5657 +//line sql.y:5666 { yyLOCAL = FrameRowsType } yyVAL.union = yyLOCAL - case 1093: + case 1095: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL FrameUnitType -//line sql.y:5661 +//line sql.y:5670 { yyLOCAL = FrameRangeType } yyVAL.union = yyLOCAL - case 1094: + case 1096: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL ArgumentLessWindowExprType -//line sql.y:5668 +//line sql.y:5677 { yyLOCAL = CumeDistExprType } yyVAL.union = yyLOCAL - case 1095: + case 1097: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL ArgumentLessWindowExprType -//line sql.y:5672 +//line sql.y:5681 { yyLOCAL = DenseRankExprType } yyVAL.union = yyLOCAL - case 1096: + case 1098: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL ArgumentLessWindowExprType -//line sql.y:5676 +//line sql.y:5685 { yyLOCAL = PercentRankExprType } yyVAL.union = yyLOCAL - case 1097: + case 1099: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL ArgumentLessWindowExprType -//line sql.y:5680 +//line sql.y:5689 { yyLOCAL = RankExprType } yyVAL.union = yyLOCAL - case 1098: + case 1100: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL ArgumentLessWindowExprType -//line sql.y:5684 +//line sql.y:5693 { yyLOCAL = RowNumberExprType } yyVAL.union = yyLOCAL - case 1099: + case 1101: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *FramePoint -//line sql.y:5690 +//line sql.y:5699 { yyLOCAL = &FramePoint{Type: CurrentRowType} } yyVAL.union = yyLOCAL - case 1100: + case 1102: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *FramePoint -//line sql.y:5694 +//line sql.y:5703 { yyLOCAL = &FramePoint{Type: UnboundedPrecedingType} } yyVAL.union = yyLOCAL - case 1101: + case 1103: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *FramePoint -//line sql.y:5698 +//line sql.y:5707 { yyLOCAL = &FramePoint{Type: UnboundedFollowingType} } yyVAL.union = yyLOCAL - case 1102: + case 1104: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *FramePoint -//line sql.y:5702 +//line sql.y:5711 { yyLOCAL = &FramePoint{Type: ExprPrecedingType, Expr: yyDollar[1].exprUnion()} } yyVAL.union = yyLOCAL - case 1103: + case 1105: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *FramePoint -//line sql.y:5706 +//line sql.y:5715 { yyLOCAL = &FramePoint{Type: ExprPrecedingType, Expr: yyDollar[2].exprUnion(), Unit: yyDollar[3].intervalTypeUnion()} } yyVAL.union = yyLOCAL - case 1104: + case 1106: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *FramePoint -//line sql.y:5710 +//line sql.y:5719 { yyLOCAL = &FramePoint{Type: ExprFollowingType, Expr: yyDollar[1].exprUnion()} } yyVAL.union = yyLOCAL - case 1105: + case 1107: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *FramePoint -//line sql.y:5714 +//line sql.y:5723 { yyLOCAL = &FramePoint{Type: ExprFollowingType, Expr: yyDollar[2].exprUnion(), Unit: yyDollar[3].intervalTypeUnion()} } yyVAL.union = yyLOCAL - case 1106: + case 1108: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *FrameClause -//line sql.y:5719 +//line sql.y:5728 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1107: + case 1109: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *FrameClause -//line sql.y:5723 +//line sql.y:5732 { yyLOCAL = yyDollar[1].frameClauseUnion() } yyVAL.union = yyLOCAL - case 1108: + case 1110: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *FrameClause -//line sql.y:5729 +//line sql.y:5738 { yyLOCAL = &FrameClause{Unit: yyDollar[1].frameUnitTypeUnion(), Start: yyDollar[2].framePointUnion()} } yyVAL.union = yyLOCAL - case 1109: + case 1111: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *FrameClause -//line sql.y:5733 +//line sql.y:5742 { yyLOCAL = &FrameClause{Unit: yyDollar[1].frameUnitTypeUnion(), Start: yyDollar[3].framePointUnion(), End: yyDollar[5].framePointUnion()} } yyVAL.union = yyLOCAL - case 1110: + case 1112: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL Exprs -//line sql.y:5738 +//line sql.y:5747 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1111: + case 1113: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Exprs -//line sql.y:5742 +//line sql.y:5751 { yyLOCAL = yyDollar[3].exprsUnion() } yyVAL.union = yyLOCAL - case 1112: + case 1114: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:5747 +//line sql.y:5756 { yyVAL.identifierCI = IdentifierCI{} } - case 1113: + case 1115: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:5751 +//line sql.y:5760 { yyVAL.identifierCI = yyDollar[1].identifierCI } - case 1114: + case 1116: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *WindowSpecification -//line sql.y:5757 +//line sql.y:5766 { yyLOCAL = &WindowSpecification{Name: yyDollar[1].identifierCI, PartitionClause: yyDollar[2].exprsUnion(), OrderClause: yyDollar[3].orderByUnion(), FrameClause: yyDollar[4].frameClauseUnion()} } yyVAL.union = yyLOCAL - case 1115: + case 1117: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *OverClause -//line sql.y:5763 +//line sql.y:5772 { yyLOCAL = &OverClause{WindowSpec: yyDollar[3].windowSpecificationUnion()} } yyVAL.union = yyLOCAL - case 1116: + case 1118: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *OverClause -//line sql.y:5767 +//line sql.y:5776 { yyLOCAL = &OverClause{WindowName: yyDollar[2].identifierCI} } yyVAL.union = yyLOCAL - case 1117: + case 1119: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *OverClause -//line sql.y:5773 +//line sql.y:5782 { yyLOCAL = yyDollar[1].overClauseUnion() } yyVAL.union = yyLOCAL - case 1118: + case 1120: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *OverClause -//line sql.y:5777 +//line sql.y:5786 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1119: + case 1121: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *NullTreatmentClause -//line sql.y:5782 +//line sql.y:5791 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1121: + case 1123: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *NullTreatmentClause -//line sql.y:5789 +//line sql.y:5798 { yyLOCAL = &NullTreatmentClause{yyDollar[1].nullTreatmentTypeUnion()} } yyVAL.union = yyLOCAL - case 1122: + case 1124: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL NullTreatmentType -//line sql.y:5795 +//line sql.y:5804 { yyLOCAL = RespectNullsType } yyVAL.union = yyLOCAL - case 1123: + case 1125: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL NullTreatmentType -//line sql.y:5799 +//line sql.y:5808 { yyLOCAL = IgnoreNullsType } yyVAL.union = yyLOCAL - case 1124: + case 1126: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL FirstOrLastValueExprType -//line sql.y:5805 +//line sql.y:5814 { yyLOCAL = FirstValueExprType } yyVAL.union = yyLOCAL - case 1125: + case 1127: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL FirstOrLastValueExprType -//line sql.y:5809 +//line sql.y:5818 { yyLOCAL = LastValueExprType } yyVAL.union = yyLOCAL - case 1126: + case 1128: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL FromFirstLastType -//line sql.y:5815 +//line sql.y:5824 { yyLOCAL = FromFirstType } yyVAL.union = yyLOCAL - case 1127: + case 1129: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL FromFirstLastType -//line sql.y:5819 +//line sql.y:5828 { yyLOCAL = FromLastType } yyVAL.union = yyLOCAL - case 1128: + case 1130: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *FromFirstLastClause -//line sql.y:5824 +//line sql.y:5833 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1130: + case 1132: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *FromFirstLastClause -//line sql.y:5831 +//line sql.y:5840 { yyLOCAL = &FromFirstLastClause{yyDollar[1].fromFirstLastTypeUnion()} } yyVAL.union = yyLOCAL - case 1131: + case 1133: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL LagLeadExprType -//line sql.y:5837 +//line sql.y:5846 { yyLOCAL = LagExprType } yyVAL.union = yyLOCAL - case 1132: + case 1134: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL LagLeadExprType -//line sql.y:5841 +//line sql.y:5850 { yyLOCAL = LeadExprType } yyVAL.union = yyLOCAL - case 1133: + case 1135: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *WindowDefinition -//line sql.y:5847 +//line sql.y:5856 { yyLOCAL = &WindowDefinition{Name: yyDollar[1].identifierCI, WindowSpec: yyDollar[4].windowSpecificationUnion()} } yyVAL.union = yyLOCAL - case 1134: + case 1136: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL WindowDefinitions -//line sql.y:5853 +//line sql.y:5862 { yyLOCAL = WindowDefinitions{yyDollar[1].windowDefinitionUnion()} } yyVAL.union = yyLOCAL - case 1135: + case 1137: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:5857 +//line sql.y:5866 { yySLICE := (*WindowDefinitions)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].windowDefinitionUnion()) } - case 1136: + case 1138: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:5863 +//line sql.y:5872 { yyVAL.str = "" } - case 1137: + case 1139: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:5867 +//line sql.y:5876 { yyVAL.str = string(yyDollar[2].identifierCI.String()) } - case 1138: + case 1140: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL BoolVal -//line sql.y:5873 +//line sql.y:5882 { yyLOCAL = BoolVal(true) } yyVAL.union = yyLOCAL - case 1139: + case 1141: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL BoolVal -//line sql.y:5877 +//line sql.y:5886 { yyLOCAL = BoolVal(false) } yyVAL.union = yyLOCAL - case 1140: + case 1142: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL IsExprOperator -//line sql.y:5884 +//line sql.y:5893 { yyLOCAL = IsTrueOp } yyVAL.union = yyLOCAL - case 1141: + case 1143: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL IsExprOperator -//line sql.y:5888 +//line sql.y:5897 { yyLOCAL = IsNotTrueOp } yyVAL.union = yyLOCAL - case 1142: + case 1144: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL IsExprOperator -//line sql.y:5892 +//line sql.y:5901 { yyLOCAL = IsFalseOp } yyVAL.union = yyLOCAL - case 1143: + case 1145: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL IsExprOperator -//line sql.y:5896 +//line sql.y:5905 { yyLOCAL = IsNotFalseOp } yyVAL.union = yyLOCAL - case 1144: + case 1146: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL ComparisonExprOperator -//line sql.y:5902 +//line sql.y:5911 { yyLOCAL = yyDollar[1].comparisonExprOperatorUnion() } yyVAL.union = yyLOCAL - case 1145: + case 1147: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL ComparisonExprOperator -//line sql.y:5906 +//line sql.y:5915 { yyLOCAL = NullSafeEqualOp } yyVAL.union = yyLOCAL - case 1146: + case 1148: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL ComparisonExprOperator -//line sql.y:5912 +//line sql.y:5921 { yyLOCAL = EqualOp } yyVAL.union = yyLOCAL - case 1147: + case 1149: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL ComparisonExprOperator -//line sql.y:5916 +//line sql.y:5925 { yyLOCAL = LessThanOp } yyVAL.union = yyLOCAL - case 1148: + case 1150: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL ComparisonExprOperator -//line sql.y:5920 +//line sql.y:5929 { yyLOCAL = GreaterThanOp } yyVAL.union = yyLOCAL - case 1149: + case 1151: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL ComparisonExprOperator -//line sql.y:5924 +//line sql.y:5933 { yyLOCAL = LessEqualOp } yyVAL.union = yyLOCAL - case 1150: + case 1152: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL ComparisonExprOperator -//line sql.y:5928 +//line sql.y:5937 { yyLOCAL = GreaterEqualOp } yyVAL.union = yyLOCAL - case 1151: + case 1153: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL ComparisonExprOperator -//line sql.y:5932 +//line sql.y:5941 { yyLOCAL = NotEqualOp } yyVAL.union = yyLOCAL - case 1152: + case 1154: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL ColTuple -//line sql.y:5938 +//line sql.y:5947 { yyLOCAL = yyDollar[1].valTupleUnion() } yyVAL.union = yyLOCAL - case 1153: + case 1155: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL ColTuple -//line sql.y:5942 +//line sql.y:5951 { yyLOCAL = yyDollar[1].subqueryUnion() } yyVAL.union = yyLOCAL - case 1154: + case 1156: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL ColTuple -//line sql.y:5946 +//line sql.y:5955 { yyLOCAL = ListArg(yyDollar[1].str[2:]) markBindVariable(yylex, yyDollar[1].str[2:]) } yyVAL.union = yyLOCAL - case 1155: + case 1157: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *Subquery -//line sql.y:5953 +//line sql.y:5962 { yyLOCAL = &Subquery{yyDollar[1].tableStmtUnion()} } yyVAL.union = yyLOCAL - case 1156: + case 1158: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Exprs -//line sql.y:5959 +//line sql.y:5968 { yyLOCAL = Exprs{yyDollar[1].exprUnion()} } yyVAL.union = yyLOCAL - case 1157: + case 1159: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:5963 +//line sql.y:5972 { yySLICE := (*Exprs)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].exprUnion()) } - case 1158: + case 1160: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:5973 +//line sql.y:5982 { yyLOCAL = &FuncExpr{Name: yyDollar[1].identifierCI, Exprs: yyDollar[3].exprsUnion()} } yyVAL.union = yyLOCAL - case 1159: + case 1161: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:5977 +//line sql.y:5986 { yyLOCAL = &FuncExpr{Qualifier: yyDollar[1].identifierCS, Name: yyDollar[3].identifierCI, Exprs: yyDollar[5].exprsUnion()} } yyVAL.union = yyLOCAL - case 1160: + case 1162: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:5987 +//line sql.y:5996 { yyLOCAL = &FuncExpr{Name: NewIdentifierCI("left"), Exprs: yyDollar[3].exprsUnion()} } yyVAL.union = yyLOCAL - case 1161: + case 1163: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:5991 +//line sql.y:6000 { yyLOCAL = &FuncExpr{Name: NewIdentifierCI("right"), Exprs: yyDollar[3].exprsUnion()} } yyVAL.union = yyLOCAL - case 1162: + case 1164: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr -//line sql.y:5995 +//line sql.y:6004 { yyLOCAL = &SubstrExpr{Name: yyDollar[3].exprUnion(), From: yyDollar[5].exprUnion(), To: yyDollar[7].exprUnion()} } yyVAL.union = yyLOCAL - case 1163: + case 1165: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr -//line sql.y:5999 +//line sql.y:6008 { yyLOCAL = &SubstrExpr{Name: yyDollar[3].exprUnion(), From: yyDollar[5].exprUnion(), To: yyDollar[7].exprUnion()} } yyVAL.union = yyLOCAL - case 1164: + case 1166: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6003 +//line sql.y:6012 { yyLOCAL = &SubstrExpr{Name: yyDollar[3].exprUnion(), From: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1165: + case 1167: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr -//line sql.y:6007 +//line sql.y:6016 { yyLOCAL = &SubstrExpr{Name: yyDollar[3].exprUnion(), From: yyDollar[5].exprUnion(), To: yyDollar[7].exprUnion()} } yyVAL.union = yyLOCAL - case 1166: + case 1168: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6011 +//line sql.y:6020 { yyLOCAL = &SubstrExpr{Name: yyDollar[3].exprUnion(), From: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1167: + case 1169: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Expr -//line sql.y:6015 +//line sql.y:6024 { yyLOCAL = &CaseExpr{Expr: yyDollar[2].exprUnion(), Whens: yyDollar[3].whensUnion(), Else: yyDollar[4].exprUnion()} } yyVAL.union = yyLOCAL - case 1168: + case 1170: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6019 +//line sql.y:6028 { yyLOCAL = &ValuesFuncExpr{Name: yyDollar[3].colNameUnion()} } yyVAL.union = yyLOCAL - case 1169: + case 1171: yyDollar = yyS[yypt-10 : yypt+1] var yyLOCAL Expr -//line sql.y:6023 +//line sql.y:6032 { yyLOCAL = &InsertExpr{Str: yyDollar[3].exprUnion(), Pos: yyDollar[5].exprUnion(), Len: yyDollar[7].exprUnion(), NewStr: yyDollar[9].exprUnion()} } yyVAL.union = yyLOCAL - case 1170: + case 1172: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:6027 +//line sql.y:6036 { yyLOCAL = &FuncExpr{Name: NewIdentifierCI(yyDollar[1].str)} } yyVAL.union = yyLOCAL - case 1171: + case 1173: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:6038 +//line sql.y:6047 { yyLOCAL = &FuncExpr{Name: NewIdentifierCI("utc_date")} } yyVAL.union = yyLOCAL - case 1172: + case 1174: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:6042 +//line sql.y:6051 { yyLOCAL = yyDollar[1].exprUnion() } yyVAL.union = yyLOCAL - case 1173: + case 1175: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:6048 +//line sql.y:6057 { yyLOCAL = &FuncExpr{Name: NewIdentifierCI("current_date")} } yyVAL.union = yyLOCAL - case 1174: + case 1176: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:6052 +//line sql.y:6061 { yyLOCAL = &FuncExpr{Name: NewIdentifierCI("curdate")} } yyVAL.union = yyLOCAL - case 1175: + case 1177: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:6056 +//line sql.y:6065 { yyLOCAL = &CurTimeFuncExpr{Name: NewIdentifierCI("utc_time"), Fsp: yyDollar[2].integerUnion()} } yyVAL.union = yyLOCAL - case 1176: + case 1178: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:6061 +//line sql.y:6070 { yyLOCAL = &CurTimeFuncExpr{Name: NewIdentifierCI("curtime"), Fsp: yyDollar[2].integerUnion()} } yyVAL.union = yyLOCAL - case 1177: + case 1179: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:6066 +//line sql.y:6075 { yyLOCAL = &CurTimeFuncExpr{Name: NewIdentifierCI("current_time"), Fsp: yyDollar[2].integerUnion()} } yyVAL.union = yyLOCAL - case 1178: + case 1180: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Expr -//line sql.y:6070 +//line sql.y:6079 { yyLOCAL = &CountStar{OverClause: yyDollar[5].overClauseUnion()} } yyVAL.union = yyLOCAL - case 1179: + case 1181: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6074 +//line sql.y:6083 { yyLOCAL = &Count{Distinct: yyDollar[3].booleanUnion(), Args: yyDollar[4].exprsUnion(), OverClause: yyDollar[6].overClauseUnion()} } yyVAL.union = yyLOCAL - case 1180: + case 1182: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6078 +//line sql.y:6087 { yyLOCAL = &Max{Distinct: yyDollar[3].booleanUnion(), Arg: yyDollar[4].exprUnion(), OverClause: yyDollar[6].overClauseUnion()} } yyVAL.union = yyLOCAL - case 1181: + case 1183: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6082 +//line sql.y:6091 { yyLOCAL = &Min{Distinct: yyDollar[3].booleanUnion(), Arg: yyDollar[4].exprUnion(), OverClause: yyDollar[6].overClauseUnion()} } yyVAL.union = yyLOCAL - case 1182: + case 1184: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6086 +//line sql.y:6095 { yyLOCAL = &Sum{Distinct: yyDollar[3].booleanUnion(), Arg: yyDollar[4].exprUnion(), OverClause: yyDollar[6].overClauseUnion()} } yyVAL.union = yyLOCAL - case 1183: + case 1185: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6090 +//line sql.y:6099 { yyLOCAL = &Avg{Distinct: yyDollar[3].booleanUnion(), Arg: yyDollar[4].exprUnion(), OverClause: yyDollar[6].overClauseUnion()} } yyVAL.union = yyLOCAL - case 1184: + case 1186: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Expr -//line sql.y:6094 +//line sql.y:6103 { yyLOCAL = &BitAnd{Arg: yyDollar[3].exprUnion(), OverClause: yyDollar[5].overClauseUnion()} } yyVAL.union = yyLOCAL - case 1185: + case 1187: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Expr -//line sql.y:6098 +//line sql.y:6107 { yyLOCAL = &BitOr{Arg: yyDollar[3].exprUnion(), OverClause: yyDollar[5].overClauseUnion()} } yyVAL.union = yyLOCAL - case 1186: + case 1188: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Expr -//line sql.y:6102 +//line sql.y:6111 { yyLOCAL = &BitXor{Arg: yyDollar[3].exprUnion(), OverClause: yyDollar[5].overClauseUnion()} } yyVAL.union = yyLOCAL - case 1187: + case 1189: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Expr -//line sql.y:6106 +//line sql.y:6115 { yyLOCAL = &Std{Arg: yyDollar[3].exprUnion(), OverClause: yyDollar[5].overClauseUnion()} } yyVAL.union = yyLOCAL - case 1188: + case 1190: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Expr -//line sql.y:6110 +//line sql.y:6119 { yyLOCAL = &StdDev{Arg: yyDollar[3].exprUnion(), OverClause: yyDollar[5].overClauseUnion()} } yyVAL.union = yyLOCAL - case 1189: + case 1191: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Expr -//line sql.y:6114 +//line sql.y:6123 { yyLOCAL = &StdPop{Arg: yyDollar[3].exprUnion(), OverClause: yyDollar[5].overClauseUnion()} } yyVAL.union = yyLOCAL - case 1190: + case 1192: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Expr -//line sql.y:6118 +//line sql.y:6127 { yyLOCAL = &StdSamp{Arg: yyDollar[3].exprUnion(), OverClause: yyDollar[5].overClauseUnion()} } yyVAL.union = yyLOCAL - case 1191: + case 1193: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Expr -//line sql.y:6122 +//line sql.y:6131 { yyLOCAL = &VarPop{Arg: yyDollar[3].exprUnion(), OverClause: yyDollar[5].overClauseUnion()} } yyVAL.union = yyLOCAL - case 1192: + case 1194: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Expr -//line sql.y:6126 +//line sql.y:6135 { yyLOCAL = &VarSamp{Arg: yyDollar[3].exprUnion(), OverClause: yyDollar[5].overClauseUnion()} } yyVAL.union = yyLOCAL - case 1193: + case 1195: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Expr -//line sql.y:6130 +//line sql.y:6139 { yyLOCAL = &Variance{Arg: yyDollar[3].exprUnion(), OverClause: yyDollar[5].overClauseUnion()} } yyVAL.union = yyLOCAL - case 1194: + case 1196: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr -//line sql.y:6134 +//line sql.y:6143 { yyLOCAL = &GroupConcatExpr{Distinct: yyDollar[3].booleanUnion(), Exprs: yyDollar[4].exprsUnion(), OrderBy: yyDollar[5].orderByUnion(), Separator: yyDollar[6].str, Limit: yyDollar[7].limitUnion()} } yyVAL.union = yyLOCAL - case 1195: + case 1197: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6138 +//line sql.y:6147 { yyLOCAL = &AnyValue{Arg: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1196: + case 1198: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr -//line sql.y:6142 +//line sql.y:6151 { yyLOCAL = &IntervalDateExpr{Syntax: IntervalDateExprTimestampadd, Date: yyDollar[7].exprUnion(), Interval: yyDollar[5].exprUnion(), Unit: yyDollar[3].intervalTypeUnion()} } yyVAL.union = yyLOCAL - case 1197: + case 1199: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr -//line sql.y:6146 +//line sql.y:6155 { yyLOCAL = &TimestampDiffExpr{Unit: yyDollar[3].intervalTypeUnion(), Expr1: yyDollar[5].exprUnion(), Expr2: yyDollar[7].exprUnion()} } yyVAL.union = yyLOCAL - case 1198: + case 1200: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6150 +//line sql.y:6159 { yyLOCAL = &ExtractFuncExpr{IntervalType: yyDollar[3].intervalTypeUnion(), Expr: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1199: + case 1201: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Expr -//line sql.y:6154 +//line sql.y:6163 { yyLOCAL = &WeightStringFuncExpr{Expr: yyDollar[3].exprUnion(), As: yyDollar[4].convertTypeUnion()} } yyVAL.union = yyLOCAL - case 1200: + case 1202: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6158 +//line sql.y:6167 { yyLOCAL = &JSONPrettyExpr{JSONVal: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1201: + case 1203: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6162 +//line sql.y:6171 { yyLOCAL = &JSONStorageFreeExpr{JSONVal: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1202: + case 1204: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6166 +//line sql.y:6175 { yyLOCAL = &JSONStorageSizeExpr{JSONVal: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1203: + case 1205: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Expr -//line sql.y:6170 +//line sql.y:6179 { yyLOCAL = &JSONArrayAgg{Expr: yyDollar[3].exprUnion(), OverClause: yyDollar[5].overClauseUnion()} } yyVAL.union = yyLOCAL - case 1204: + case 1206: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL Expr -//line sql.y:6174 +//line sql.y:6183 { yyLOCAL = &JSONObjectAgg{Key: yyDollar[3].exprUnion(), Value: yyDollar[5].exprUnion(), OverClause: yyDollar[7].overClauseUnion()} } yyVAL.union = yyLOCAL - case 1205: + case 1207: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6178 +//line sql.y:6187 { yyLOCAL = &TrimFuncExpr{TrimFuncType: LTrimType, Type: LeadingTrimType, StringArg: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1206: + case 1208: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6182 +//line sql.y:6191 { yyLOCAL = &TrimFuncExpr{TrimFuncType: RTrimType, Type: TrailingTrimType, StringArg: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1207: + case 1209: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL Expr -//line sql.y:6186 +//line sql.y:6195 { yyLOCAL = &TrimFuncExpr{Type: yyDollar[3].trimTypeUnion(), TrimArg: yyDollar[4].exprUnion(), StringArg: yyDollar[6].exprUnion()} } yyVAL.union = yyLOCAL - case 1208: + case 1210: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6190 +//line sql.y:6199 { yyLOCAL = &TrimFuncExpr{StringArg: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1209: + case 1211: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6194 +//line sql.y:6203 { yyLOCAL = &CharExpr{Exprs: yyDollar[3].exprsUnion()} } yyVAL.union = yyLOCAL - case 1210: + case 1212: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6198 +//line sql.y:6207 { yyLOCAL = &CharExpr{Exprs: yyDollar[3].exprsUnion(), Charset: yyDollar[5].str} } yyVAL.union = yyLOCAL - case 1211: + case 1213: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6202 +//line sql.y:6211 { yyLOCAL = &TrimFuncExpr{TrimArg: yyDollar[3].exprUnion(), StringArg: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1212: + case 1214: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6206 +//line sql.y:6215 { yyLOCAL = &LocateExpr{SubStr: yyDollar[3].exprUnion(), Str: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1213: + case 1215: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr -//line sql.y:6210 +//line sql.y:6219 { yyLOCAL = &LocateExpr{SubStr: yyDollar[3].exprUnion(), Str: yyDollar[5].exprUnion(), Pos: yyDollar[7].exprUnion()} } yyVAL.union = yyLOCAL - case 1214: + case 1216: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6214 +//line sql.y:6223 { yyLOCAL = &LocateExpr{SubStr: yyDollar[3].exprUnion(), Str: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1215: + case 1217: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6218 +//line sql.y:6227 { yyLOCAL = &LockingFunc{Type: GetLock, Name: yyDollar[3].exprUnion(), Timeout: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1216: + case 1218: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6222 +//line sql.y:6231 { yyLOCAL = &LockingFunc{Type: IsFreeLock, Name: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1217: + case 1219: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6226 +//line sql.y:6235 { yyLOCAL = &LockingFunc{Type: IsUsedLock, Name: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1218: + case 1220: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr -//line sql.y:6230 +//line sql.y:6239 { yyLOCAL = &LockingFunc{Type: ReleaseAllLocks} } yyVAL.union = yyLOCAL - case 1219: + case 1221: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6234 +//line sql.y:6243 { yyLOCAL = &LockingFunc{Type: ReleaseLock, Name: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1220: + case 1222: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6238 +//line sql.y:6247 { yyLOCAL = &JSONSchemaValidFuncExpr{Schema: yyDollar[3].exprUnion(), Document: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1221: + case 1223: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6242 +//line sql.y:6251 { yyLOCAL = &JSONSchemaValidationReportFuncExpr{Schema: yyDollar[3].exprUnion(), Document: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1222: + case 1224: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6246 +//line sql.y:6255 { yyLOCAL = &JSONArrayExpr{Params: yyDollar[3].exprsUnion()} } yyVAL.union = yyLOCAL - case 1223: + case 1225: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6250 +//line sql.y:6259 { yyLOCAL = &GeomFormatExpr{FormatType: BinaryFormat, Geom: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1224: + case 1226: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6254 +//line sql.y:6263 { yyLOCAL = &GeomFormatExpr{FormatType: BinaryFormat, Geom: yyDollar[3].exprUnion(), AxisOrderOpt: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1225: + case 1227: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6258 +//line sql.y:6267 { yyLOCAL = &GeomFormatExpr{FormatType: TextFormat, Geom: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1226: + case 1228: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6262 +//line sql.y:6271 { yyLOCAL = &GeomFormatExpr{FormatType: TextFormat, Geom: yyDollar[3].exprUnion(), AxisOrderOpt: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1227: + case 1229: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6266 +//line sql.y:6275 { yyLOCAL = &GeomPropertyFuncExpr{Property: IsEmpty, Geom: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1228: + case 1230: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6270 +//line sql.y:6279 { yyLOCAL = &GeomPropertyFuncExpr{Property: IsSimple, Geom: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1229: + case 1231: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6274 +//line sql.y:6283 { yyLOCAL = &GeomPropertyFuncExpr{Property: Dimension, Geom: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1230: + case 1232: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6278 +//line sql.y:6287 { yyLOCAL = &GeomPropertyFuncExpr{Property: Envelope, Geom: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1231: + case 1233: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6282 +//line sql.y:6291 { yyLOCAL = &GeomPropertyFuncExpr{Property: GeometryType, Geom: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1232: + case 1234: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6286 +//line sql.y:6295 { yyLOCAL = &PointPropertyFuncExpr{Property: Latitude, Point: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1233: + case 1235: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6290 +//line sql.y:6299 { yyLOCAL = &PointPropertyFuncExpr{Property: Latitude, Point: yyDollar[3].exprUnion(), ValueToSet: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1234: + case 1236: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6294 +//line sql.y:6303 { yyLOCAL = &PointPropertyFuncExpr{Property: Longitude, Point: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1235: + case 1237: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6298 +//line sql.y:6307 { yyLOCAL = &PointPropertyFuncExpr{Property: Longitude, Point: yyDollar[3].exprUnion(), ValueToSet: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1236: + case 1238: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6302 +//line sql.y:6311 { yyLOCAL = &LinestrPropertyFuncExpr{Property: EndPoint, Linestring: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1237: + case 1239: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6306 +//line sql.y:6315 { yyLOCAL = &LinestrPropertyFuncExpr{Property: IsClosed, Linestring: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1238: + case 1240: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6310 +//line sql.y:6319 { yyLOCAL = &LinestrPropertyFuncExpr{Property: Length, Linestring: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1239: + case 1241: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6314 +//line sql.y:6323 { yyLOCAL = &LinestrPropertyFuncExpr{Property: Length, Linestring: yyDollar[3].exprUnion(), PropertyDefArg: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1240: + case 1242: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6318 +//line sql.y:6327 { yyLOCAL = &LinestrPropertyFuncExpr{Property: NumPoints, Linestring: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1241: + case 1243: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6322 +//line sql.y:6331 { yyLOCAL = &LinestrPropertyFuncExpr{Property: PointN, Linestring: yyDollar[3].exprUnion(), PropertyDefArg: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1242: + case 1244: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6326 +//line sql.y:6335 { yyLOCAL = &LinestrPropertyFuncExpr{Property: StartPoint, Linestring: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1243: + case 1245: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6330 +//line sql.y:6339 { yyLOCAL = &PointPropertyFuncExpr{Property: XCordinate, Point: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1244: + case 1246: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6334 +//line sql.y:6343 { yyLOCAL = &PointPropertyFuncExpr{Property: XCordinate, Point: yyDollar[3].exprUnion(), ValueToSet: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1245: + case 1247: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6338 +//line sql.y:6347 { yyLOCAL = &PointPropertyFuncExpr{Property: YCordinate, Point: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1246: + case 1248: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6342 +//line sql.y:6351 { yyLOCAL = &PointPropertyFuncExpr{Property: YCordinate, Point: yyDollar[3].exprUnion(), ValueToSet: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1247: + case 1249: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6346 +//line sql.y:6355 { yyLOCAL = &GeomFromTextExpr{Type: GeometryFromText, WktText: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1248: + case 1250: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6350 +//line sql.y:6359 { yyLOCAL = &GeomFromTextExpr{Type: GeometryFromText, WktText: yyDollar[3].exprUnion(), Srid: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1249: + case 1251: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr -//line sql.y:6354 +//line sql.y:6363 { yyLOCAL = &GeomFromTextExpr{Type: GeometryFromText, WktText: yyDollar[3].exprUnion(), Srid: yyDollar[5].exprUnion(), AxisOrderOpt: yyDollar[7].exprUnion()} } yyVAL.union = yyLOCAL - case 1250: + case 1252: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6358 +//line sql.y:6367 { yyLOCAL = &GeomFromTextExpr{Type: GeometryCollectionFromText, WktText: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1251: + case 1253: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6362 +//line sql.y:6371 { yyLOCAL = &GeomFromTextExpr{Type: GeometryCollectionFromText, WktText: yyDollar[3].exprUnion(), Srid: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1252: + case 1254: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr -//line sql.y:6366 +//line sql.y:6375 { yyLOCAL = &GeomFromTextExpr{Type: GeometryCollectionFromText, WktText: yyDollar[3].exprUnion(), Srid: yyDollar[5].exprUnion(), AxisOrderOpt: yyDollar[7].exprUnion()} } yyVAL.union = yyLOCAL - case 1253: + case 1255: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6370 +//line sql.y:6379 { yyLOCAL = &GeomFromTextExpr{Type: LineStringFromText, WktText: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1254: + case 1256: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6374 +//line sql.y:6383 { yyLOCAL = &GeomFromTextExpr{Type: LineStringFromText, WktText: yyDollar[3].exprUnion(), Srid: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1255: + case 1257: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr -//line sql.y:6378 +//line sql.y:6387 { yyLOCAL = &GeomFromTextExpr{Type: LineStringFromText, WktText: yyDollar[3].exprUnion(), Srid: yyDollar[5].exprUnion(), AxisOrderOpt: yyDollar[7].exprUnion()} } yyVAL.union = yyLOCAL - case 1256: + case 1258: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6382 +//line sql.y:6391 { yyLOCAL = &GeomFromTextExpr{Type: MultiLinestringFromText, WktText: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1257: + case 1259: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6386 +//line sql.y:6395 { yyLOCAL = &GeomFromTextExpr{Type: MultiLinestringFromText, WktText: yyDollar[3].exprUnion(), Srid: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1258: + case 1260: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr -//line sql.y:6390 +//line sql.y:6399 { yyLOCAL = &GeomFromTextExpr{Type: MultiLinestringFromText, WktText: yyDollar[3].exprUnion(), Srid: yyDollar[5].exprUnion(), AxisOrderOpt: yyDollar[7].exprUnion()} } yyVAL.union = yyLOCAL - case 1259: + case 1261: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6394 +//line sql.y:6403 { yyLOCAL = &GeomFromTextExpr{Type: MultiPointFromText, WktText: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1260: + case 1262: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6398 +//line sql.y:6407 { yyLOCAL = &GeomFromTextExpr{Type: MultiPointFromText, WktText: yyDollar[3].exprUnion(), Srid: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1261: + case 1263: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr -//line sql.y:6402 +//line sql.y:6411 { yyLOCAL = &GeomFromTextExpr{Type: MultiPointFromText, WktText: yyDollar[3].exprUnion(), Srid: yyDollar[5].exprUnion(), AxisOrderOpt: yyDollar[7].exprUnion()} } yyVAL.union = yyLOCAL - case 1262: + case 1264: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6406 +//line sql.y:6415 { yyLOCAL = &GeomFromTextExpr{Type: MultiPolygonFromText, WktText: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1263: + case 1265: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6410 +//line sql.y:6419 { yyLOCAL = &GeomFromTextExpr{Type: MultiPolygonFromText, WktText: yyDollar[3].exprUnion(), Srid: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1264: + case 1266: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr -//line sql.y:6414 +//line sql.y:6423 { yyLOCAL = &GeomFromTextExpr{Type: MultiPolygonFromText, WktText: yyDollar[3].exprUnion(), Srid: yyDollar[5].exprUnion(), AxisOrderOpt: yyDollar[7].exprUnion()} } yyVAL.union = yyLOCAL - case 1265: + case 1267: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6418 +//line sql.y:6427 { yyLOCAL = &GeomFromTextExpr{Type: PointFromText, WktText: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1266: + case 1268: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6422 +//line sql.y:6431 { yyLOCAL = &GeomFromTextExpr{Type: PointFromText, WktText: yyDollar[3].exprUnion(), Srid: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1267: + case 1269: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr -//line sql.y:6426 +//line sql.y:6435 { yyLOCAL = &GeomFromTextExpr{Type: PointFromText, WktText: yyDollar[3].exprUnion(), Srid: yyDollar[5].exprUnion(), AxisOrderOpt: yyDollar[7].exprUnion()} } yyVAL.union = yyLOCAL - case 1268: + case 1270: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6430 +//line sql.y:6439 { yyLOCAL = &GeomFromTextExpr{Type: PolygonFromText, WktText: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1269: + case 1271: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6434 +//line sql.y:6443 { yyLOCAL = &GeomFromTextExpr{Type: PolygonFromText, WktText: yyDollar[3].exprUnion(), Srid: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1270: + case 1272: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr -//line sql.y:6438 +//line sql.y:6447 { yyLOCAL = &GeomFromTextExpr{Type: PolygonFromText, WktText: yyDollar[3].exprUnion(), Srid: yyDollar[5].exprUnion(), AxisOrderOpt: yyDollar[7].exprUnion()} } yyVAL.union = yyLOCAL - case 1271: + case 1273: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6442 +//line sql.y:6451 { yyLOCAL = &GeomFromWKBExpr{Type: GeometryFromWKB, WkbBlob: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1272: + case 1274: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6446 +//line sql.y:6455 { yyLOCAL = &GeomFromWKBExpr{Type: GeometryFromWKB, WkbBlob: yyDollar[3].exprUnion(), Srid: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1273: + case 1275: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr -//line sql.y:6450 +//line sql.y:6459 { yyLOCAL = &GeomFromWKBExpr{Type: GeometryFromWKB, WkbBlob: yyDollar[3].exprUnion(), Srid: yyDollar[5].exprUnion(), AxisOrderOpt: yyDollar[7].exprUnion()} } yyVAL.union = yyLOCAL - case 1274: + case 1276: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6454 +//line sql.y:6463 { yyLOCAL = &GeomFromWKBExpr{Type: GeometryCollectionFromWKB, WkbBlob: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1275: + case 1277: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6458 +//line sql.y:6467 { yyLOCAL = &GeomFromWKBExpr{Type: GeometryCollectionFromWKB, WkbBlob: yyDollar[3].exprUnion(), Srid: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1276: + case 1278: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr -//line sql.y:6462 +//line sql.y:6471 { yyLOCAL = &GeomFromWKBExpr{Type: GeometryCollectionFromWKB, WkbBlob: yyDollar[3].exprUnion(), Srid: yyDollar[5].exprUnion(), AxisOrderOpt: yyDollar[7].exprUnion()} } yyVAL.union = yyLOCAL - case 1277: + case 1279: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6466 +//line sql.y:6475 { yyLOCAL = &GeomFromWKBExpr{Type: LineStringFromWKB, WkbBlob: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1278: + case 1280: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6470 +//line sql.y:6479 { yyLOCAL = &GeomFromWKBExpr{Type: LineStringFromWKB, WkbBlob: yyDollar[3].exprUnion(), Srid: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1279: + case 1281: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr -//line sql.y:6474 +//line sql.y:6483 { yyLOCAL = &GeomFromWKBExpr{Type: LineStringFromWKB, WkbBlob: yyDollar[3].exprUnion(), Srid: yyDollar[5].exprUnion(), AxisOrderOpt: yyDollar[7].exprUnion()} } yyVAL.union = yyLOCAL - case 1280: + case 1282: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6478 +//line sql.y:6487 { yyLOCAL = &GeomFromWKBExpr{Type: MultiLinestringFromWKB, WkbBlob: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1281: + case 1283: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6482 +//line sql.y:6491 { yyLOCAL = &GeomFromWKBExpr{Type: MultiLinestringFromWKB, WkbBlob: yyDollar[3].exprUnion(), Srid: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1282: + case 1284: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr -//line sql.y:6486 +//line sql.y:6495 { yyLOCAL = &GeomFromWKBExpr{Type: MultiLinestringFromWKB, WkbBlob: yyDollar[3].exprUnion(), Srid: yyDollar[5].exprUnion(), AxisOrderOpt: yyDollar[7].exprUnion()} } yyVAL.union = yyLOCAL - case 1283: + case 1285: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6490 +//line sql.y:6499 { yyLOCAL = &GeomFromWKBExpr{Type: MultiPointFromWKB, WkbBlob: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1284: + case 1286: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6494 +//line sql.y:6503 { yyLOCAL = &GeomFromWKBExpr{Type: MultiPointFromWKB, WkbBlob: yyDollar[3].exprUnion(), Srid: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1285: + case 1287: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr -//line sql.y:6498 +//line sql.y:6507 { yyLOCAL = &GeomFromWKBExpr{Type: MultiPointFromWKB, WkbBlob: yyDollar[3].exprUnion(), Srid: yyDollar[5].exprUnion(), AxisOrderOpt: yyDollar[7].exprUnion()} } yyVAL.union = yyLOCAL - case 1286: + case 1288: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6502 +//line sql.y:6511 { yyLOCAL = &GeomFromWKBExpr{Type: MultiPolygonFromWKB, WkbBlob: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1287: + case 1289: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6506 +//line sql.y:6515 { yyLOCAL = &GeomFromWKBExpr{Type: MultiPolygonFromWKB, WkbBlob: yyDollar[3].exprUnion(), Srid: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1288: + case 1290: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr -//line sql.y:6510 +//line sql.y:6519 { yyLOCAL = &GeomFromWKBExpr{Type: MultiPolygonFromWKB, WkbBlob: yyDollar[3].exprUnion(), Srid: yyDollar[5].exprUnion(), AxisOrderOpt: yyDollar[7].exprUnion()} } yyVAL.union = yyLOCAL - case 1289: + case 1291: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6514 +//line sql.y:6523 { yyLOCAL = &GeomFromWKBExpr{Type: PointFromWKB, WkbBlob: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1290: + case 1292: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6518 +//line sql.y:6527 { yyLOCAL = &GeomFromWKBExpr{Type: PointFromWKB, WkbBlob: yyDollar[3].exprUnion(), Srid: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1291: + case 1293: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr -//line sql.y:6522 +//line sql.y:6531 { yyLOCAL = &GeomFromWKBExpr{Type: PointFromWKB, WkbBlob: yyDollar[3].exprUnion(), Srid: yyDollar[5].exprUnion(), AxisOrderOpt: yyDollar[7].exprUnion()} } yyVAL.union = yyLOCAL - case 1292: + case 1294: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6526 +//line sql.y:6535 { yyLOCAL = &GeomFromWKBExpr{Type: PolygonFromWKB, WkbBlob: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1293: + case 1295: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6530 +//line sql.y:6539 { yyLOCAL = &GeomFromWKBExpr{Type: PolygonFromWKB, WkbBlob: yyDollar[3].exprUnion(), Srid: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1294: + case 1296: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr -//line sql.y:6534 +//line sql.y:6543 { yyLOCAL = &GeomFromWKBExpr{Type: PolygonFromWKB, WkbBlob: yyDollar[3].exprUnion(), Srid: yyDollar[5].exprUnion(), AxisOrderOpt: yyDollar[7].exprUnion()} } yyVAL.union = yyLOCAL - case 1295: + case 1297: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6538 +//line sql.y:6547 { yyLOCAL = &PolygonPropertyFuncExpr{Property: Area, Polygon: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1296: + case 1298: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6542 +//line sql.y:6551 { yyLOCAL = &PolygonPropertyFuncExpr{Property: Centroid, Polygon: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1297: + case 1299: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6546 +//line sql.y:6555 { yyLOCAL = &PolygonPropertyFuncExpr{Property: ExteriorRing, Polygon: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1298: + case 1300: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6550 +//line sql.y:6559 { yyLOCAL = &PolygonPropertyFuncExpr{Property: InteriorRingN, Polygon: yyDollar[3].exprUnion(), PropertyDefArg: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1299: + case 1301: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6554 +//line sql.y:6563 { yyLOCAL = &PolygonPropertyFuncExpr{Property: NumInteriorRings, Polygon: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1300: + case 1302: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6558 +//line sql.y:6567 { yyLOCAL = &GeomCollPropertyFuncExpr{Property: GeometryN, GeomColl: yyDollar[3].exprUnion(), PropertyDefArg: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1301: + case 1303: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6562 +//line sql.y:6571 { yyLOCAL = &GeomCollPropertyFuncExpr{Property: NumGeometries, GeomColl: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1302: + case 1304: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr -//line sql.y:6566 +//line sql.y:6575 { yyLOCAL = &GeoHashFromLatLongExpr{Longitude: yyDollar[3].exprUnion(), Latitude: yyDollar[5].exprUnion(), MaxLength: yyDollar[7].exprUnion()} } yyVAL.union = yyLOCAL - case 1303: + case 1305: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6570 +//line sql.y:6579 { yyLOCAL = &GeoHashFromPointExpr{Point: yyDollar[3].exprUnion(), MaxLength: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1304: + case 1306: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6574 +//line sql.y:6583 { yyLOCAL = &GeomFromGeoHashExpr{GeomType: LatitudeFromHash, GeoHash: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1305: + case 1307: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6578 +//line sql.y:6587 { yyLOCAL = &GeomFromGeoHashExpr{GeomType: LongitudeFromHash, GeoHash: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1306: + case 1308: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6582 +//line sql.y:6591 { yyLOCAL = &GeomFromGeoHashExpr{GeomType: PointFromHash, GeoHash: yyDollar[3].exprUnion(), SridOpt: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1307: + case 1309: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6586 +//line sql.y:6595 { yyLOCAL = &GeomFromGeoJSONExpr{GeoJSON: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1308: + case 1310: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6590 +//line sql.y:6599 { yyLOCAL = &GeomFromGeoJSONExpr{GeoJSON: yyDollar[3].exprUnion(), HigherDimHandlerOpt: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1309: + case 1311: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr -//line sql.y:6594 +//line sql.y:6603 { yyLOCAL = &GeomFromGeoJSONExpr{GeoJSON: yyDollar[3].exprUnion(), HigherDimHandlerOpt: yyDollar[5].exprUnion(), Srid: yyDollar[7].exprUnion()} } yyVAL.union = yyLOCAL - case 1310: + case 1312: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6598 +//line sql.y:6607 { yyLOCAL = &GeoJSONFromGeomExpr{Geom: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1311: + case 1313: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6602 +//line sql.y:6611 { yyLOCAL = &GeoJSONFromGeomExpr{Geom: yyDollar[3].exprUnion(), MaxDecimalDigits: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1312: + case 1314: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr -//line sql.y:6606 +//line sql.y:6615 { yyLOCAL = &GeoJSONFromGeomExpr{Geom: yyDollar[3].exprUnion(), MaxDecimalDigits: yyDollar[5].exprUnion(), Bitmask: yyDollar[7].exprUnion()} } yyVAL.union = yyLOCAL - case 1313: + case 1315: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6610 +//line sql.y:6619 { yyLOCAL = &JSONObjectExpr{Params: yyDollar[3].jsonObjectParamsUnion()} } yyVAL.union = yyLOCAL - case 1314: + case 1316: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6614 +//line sql.y:6623 { yyLOCAL = &JSONQuoteExpr{StringArg: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1315: + case 1317: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6618 +//line sql.y:6627 { yyLOCAL = &JSONContainsExpr{Target: yyDollar[3].exprUnion(), Candidate: yyDollar[5].exprsUnion()[0], PathList: yyDollar[5].exprsUnion()[1:]} } yyVAL.union = yyLOCAL - case 1316: + case 1318: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr -//line sql.y:6622 +//line sql.y:6631 { yyLOCAL = &JSONContainsPathExpr{JSONDoc: yyDollar[3].exprUnion(), OneOrAll: yyDollar[5].exprUnion(), PathList: yyDollar[7].exprsUnion()} } yyVAL.union = yyLOCAL - case 1317: + case 1319: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6626 +//line sql.y:6635 { yyLOCAL = &JSONExtractExpr{JSONDoc: yyDollar[3].exprUnion(), PathList: yyDollar[5].exprsUnion()} } yyVAL.union = yyLOCAL - case 1318: + case 1320: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6630 +//line sql.y:6639 { yyLOCAL = &JSONKeysExpr{JSONDoc: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1319: + case 1321: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6634 +//line sql.y:6643 { yyLOCAL = &JSONKeysExpr{JSONDoc: yyDollar[3].exprUnion(), Path: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1320: + case 1322: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6638 +//line sql.y:6647 { yyLOCAL = &JSONOverlapsExpr{JSONDoc1: yyDollar[3].exprUnion(), JSONDoc2: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1321: + case 1323: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr -//line sql.y:6642 +//line sql.y:6651 { yyLOCAL = &JSONSearchExpr{JSONDoc: yyDollar[3].exprUnion(), OneOrAll: yyDollar[5].exprUnion(), SearchStr: yyDollar[7].exprUnion()} } yyVAL.union = yyLOCAL - case 1322: + case 1324: yyDollar = yyS[yypt-10 : yypt+1] var yyLOCAL Expr -//line sql.y:6646 +//line sql.y:6655 { yyLOCAL = &JSONSearchExpr{JSONDoc: yyDollar[3].exprUnion(), OneOrAll: yyDollar[5].exprUnion(), SearchStr: yyDollar[7].exprUnion(), EscapeChar: yyDollar[9].exprsUnion()[0], PathList: yyDollar[9].exprsUnion()[1:]} } yyVAL.union = yyLOCAL - case 1323: + case 1325: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL Expr -//line sql.y:6650 +//line sql.y:6659 { yyLOCAL = &JSONValueExpr{JSONDoc: yyDollar[3].exprUnion(), Path: yyDollar[5].exprUnion(), ReturningType: yyDollar[6].convertTypeUnion()} } yyVAL.union = yyLOCAL - case 1324: + case 1326: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr -//line sql.y:6654 +//line sql.y:6663 { yyLOCAL = &JSONValueExpr{JSONDoc: yyDollar[3].exprUnion(), Path: yyDollar[5].exprUnion(), ReturningType: yyDollar[6].convertTypeUnion(), EmptyOnResponse: yyDollar[7].jtOnResponseUnion()} } yyVAL.union = yyLOCAL - case 1325: + case 1327: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr -//line sql.y:6658 +//line sql.y:6667 { yyLOCAL = &JSONValueExpr{JSONDoc: yyDollar[3].exprUnion(), Path: yyDollar[5].exprUnion(), ReturningType: yyDollar[6].convertTypeUnion(), ErrorOnResponse: yyDollar[7].jtOnResponseUnion()} } yyVAL.union = yyLOCAL - case 1326: + case 1328: yyDollar = yyS[yypt-9 : yypt+1] var yyLOCAL Expr -//line sql.y:6662 +//line sql.y:6671 { yyLOCAL = &JSONValueExpr{JSONDoc: yyDollar[3].exprUnion(), Path: yyDollar[5].exprUnion(), ReturningType: yyDollar[6].convertTypeUnion(), EmptyOnResponse: yyDollar[7].jtOnResponseUnion(), ErrorOnResponse: yyDollar[8].jtOnResponseUnion()} } yyVAL.union = yyLOCAL - case 1327: + case 1329: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6666 +//line sql.y:6675 { yyLOCAL = &JSONAttributesExpr{Type: DepthAttributeType, JSONDoc: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1328: + case 1330: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6670 +//line sql.y:6679 { yyLOCAL = &JSONAttributesExpr{Type: ValidAttributeType, JSONDoc: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1329: + case 1331: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6674 +//line sql.y:6683 { yyLOCAL = &JSONAttributesExpr{Type: TypeAttributeType, JSONDoc: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1330: + case 1332: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6678 +//line sql.y:6687 { yyLOCAL = &JSONAttributesExpr{Type: LengthAttributeType, JSONDoc: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1331: + case 1333: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6682 +//line sql.y:6691 { yyLOCAL = &JSONAttributesExpr{Type: LengthAttributeType, JSONDoc: yyDollar[3].exprUnion(), Path: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1332: + case 1334: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6686 +//line sql.y:6695 { yyLOCAL = &JSONValueModifierExpr{Type: JSONArrayAppendType, JSONDoc: yyDollar[3].exprUnion(), Params: yyDollar[5].jsonObjectParamsUnion()} } yyVAL.union = yyLOCAL - case 1333: + case 1335: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6690 +//line sql.y:6699 { yyLOCAL = &JSONValueModifierExpr{Type: JSONArrayInsertType, JSONDoc: yyDollar[3].exprUnion(), Params: yyDollar[5].jsonObjectParamsUnion()} } yyVAL.union = yyLOCAL - case 1334: + case 1336: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6694 +//line sql.y:6703 { yyLOCAL = &JSONValueModifierExpr{Type: JSONInsertType, JSONDoc: yyDollar[3].exprUnion(), Params: yyDollar[5].jsonObjectParamsUnion()} } yyVAL.union = yyLOCAL - case 1335: + case 1337: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6698 +//line sql.y:6707 { yyLOCAL = &JSONValueModifierExpr{Type: JSONReplaceType, JSONDoc: yyDollar[3].exprUnion(), Params: yyDollar[5].jsonObjectParamsUnion()} } yyVAL.union = yyLOCAL - case 1336: + case 1338: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6702 +//line sql.y:6711 { yyLOCAL = &JSONValueModifierExpr{Type: JSONSetType, JSONDoc: yyDollar[3].exprUnion(), Params: yyDollar[5].jsonObjectParamsUnion()} } yyVAL.union = yyLOCAL - case 1337: + case 1339: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6706 +//line sql.y:6715 { yyLOCAL = &JSONValueMergeExpr{Type: JSONMergeType, JSONDoc: yyDollar[3].exprUnion(), JSONDocList: yyDollar[5].exprsUnion()} } yyVAL.union = yyLOCAL - case 1338: + case 1340: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6710 +//line sql.y:6719 { yyLOCAL = &JSONValueMergeExpr{Type: JSONMergePatchType, JSONDoc: yyDollar[3].exprUnion(), JSONDocList: yyDollar[5].exprsUnion()} } yyVAL.union = yyLOCAL - case 1339: + case 1341: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6714 +//line sql.y:6723 { yyLOCAL = &JSONValueMergeExpr{Type: JSONMergePreserveType, JSONDoc: yyDollar[3].exprUnion(), JSONDocList: yyDollar[5].exprsUnion()} } yyVAL.union = yyLOCAL - case 1340: + case 1342: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6718 +//line sql.y:6727 { yyLOCAL = &JSONRemoveExpr{JSONDoc: yyDollar[3].exprUnion(), PathList: yyDollar[5].exprsUnion()} } yyVAL.union = yyLOCAL - case 1341: + case 1343: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6722 +//line sql.y:6731 { yyLOCAL = &JSONUnquoteExpr{JSONValue: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1342: + case 1344: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6726 +//line sql.y:6735 { yyLOCAL = &MultiPolygonExpr{PolygonParams: yyDollar[3].exprsUnion()} } yyVAL.union = yyLOCAL - case 1343: + case 1345: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6730 +//line sql.y:6739 { yyLOCAL = &MultiPointExpr{PointParams: yyDollar[3].exprsUnion()} } yyVAL.union = yyLOCAL - case 1344: + case 1346: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6734 +//line sql.y:6743 { yyLOCAL = &MultiLinestringExpr{LinestringParams: yyDollar[3].exprsUnion()} } yyVAL.union = yyLOCAL - case 1345: + case 1347: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6738 +//line sql.y:6747 { yyLOCAL = &PolygonExpr{LinestringParams: yyDollar[3].exprsUnion()} } yyVAL.union = yyLOCAL - case 1346: + case 1348: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6742 +//line sql.y:6751 { yyLOCAL = &LineStringExpr{PointParams: yyDollar[3].exprsUnion()} } yyVAL.union = yyLOCAL - case 1347: + case 1349: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6746 +//line sql.y:6755 { yyLOCAL = &PointExpr{XCordinate: yyDollar[3].exprUnion(), YCordinate: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1348: + case 1350: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6750 +//line sql.y:6759 { yyLOCAL = &ArgumentLessWindowExpr{Type: yyDollar[1].argumentLessWindowExprTypeUnion(), OverClause: yyDollar[4].overClauseUnion()} } yyVAL.union = yyLOCAL - case 1349: + case 1351: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6754 +//line sql.y:6763 { yyLOCAL = &FirstOrLastValueExpr{Type: yyDollar[1].firstOrLastValueExprTypeUnion(), Expr: yyDollar[3].exprUnion(), NullTreatmentClause: yyDollar[5].nullTreatmentClauseUnion(), OverClause: yyDollar[6].overClauseUnion()} } yyVAL.union = yyLOCAL - case 1350: + case 1352: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Expr -//line sql.y:6758 +//line sql.y:6767 { yyLOCAL = &NtileExpr{N: yyDollar[3].exprUnion(), OverClause: yyDollar[5].overClauseUnion()} } yyVAL.union = yyLOCAL - case 1351: + case 1353: yyDollar = yyS[yypt-9 : yypt+1] var yyLOCAL Expr -//line sql.y:6762 +//line sql.y:6771 { yyLOCAL = &NTHValueExpr{Expr: yyDollar[3].exprUnion(), N: yyDollar[5].exprUnion(), FromFirstLastClause: yyDollar[7].fromFirstLastClauseUnion(), NullTreatmentClause: yyDollar[8].nullTreatmentClauseUnion(), OverClause: yyDollar[9].overClauseUnion()} } yyVAL.union = yyLOCAL - case 1352: + case 1354: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6766 +//line sql.y:6775 { yyLOCAL = &LagLeadExpr{Type: yyDollar[1].lagLeadExprTypeUnion(), Expr: yyDollar[3].exprUnion(), NullTreatmentClause: yyDollar[5].nullTreatmentClauseUnion(), OverClause: yyDollar[6].overClauseUnion()} } yyVAL.union = yyLOCAL - case 1353: + case 1355: yyDollar = yyS[yypt-9 : yypt+1] var yyLOCAL Expr -//line sql.y:6770 +//line sql.y:6779 { yyLOCAL = &LagLeadExpr{Type: yyDollar[1].lagLeadExprTypeUnion(), Expr: yyDollar[3].exprUnion(), N: yyDollar[5].exprUnion(), Default: yyDollar[6].exprUnion(), NullTreatmentClause: yyDollar[8].nullTreatmentClauseUnion(), OverClause: yyDollar[9].overClauseUnion()} } yyVAL.union = yyLOCAL - case 1354: + case 1356: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr -//line sql.y:6774 +//line sql.y:6783 { yyLOCAL = &IntervalDateExpr{Syntax: IntervalDateExprAdddate, Date: yyDollar[3].exprUnion(), Interval: yyDollar[6].exprUnion(), Unit: yyDollar[7].intervalTypeUnion()} } yyVAL.union = yyLOCAL - case 1355: + case 1357: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6778 +//line sql.y:6787 { yyLOCAL = &IntervalDateExpr{Syntax: IntervalDateExprAdddate, Date: yyDollar[3].exprUnion(), Interval: yyDollar[5].exprUnion(), Unit: IntervalNone} } yyVAL.union = yyLOCAL - case 1356: + case 1358: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr -//line sql.y:6782 +//line sql.y:6791 { yyLOCAL = &IntervalDateExpr{Syntax: IntervalDateExprDateAdd, Date: yyDollar[3].exprUnion(), Interval: yyDollar[6].exprUnion(), Unit: yyDollar[7].intervalTypeUnion()} } yyVAL.union = yyLOCAL - case 1357: + case 1359: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr -//line sql.y:6786 +//line sql.y:6795 { yyLOCAL = &IntervalDateExpr{Syntax: IntervalDateExprDateSub, Date: yyDollar[3].exprUnion(), Interval: yyDollar[6].exprUnion(), Unit: yyDollar[7].intervalTypeUnion()} } yyVAL.union = yyLOCAL - case 1358: + case 1360: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr -//line sql.y:6790 +//line sql.y:6799 { yyLOCAL = &IntervalDateExpr{Syntax: IntervalDateExprSubdate, Date: yyDollar[3].exprUnion(), Interval: yyDollar[6].exprUnion(), Unit: yyDollar[7].intervalTypeUnion()} } yyVAL.union = yyLOCAL - case 1359: + case 1361: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6794 +//line sql.y:6803 { yyLOCAL = &IntervalDateExpr{Syntax: IntervalDateExprSubdate, Date: yyDollar[3].exprUnion(), Interval: yyDollar[5].exprUnion(), Unit: IntervalNone} } yyVAL.union = yyLOCAL - case 1364: + case 1366: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:6804 +//line sql.y:6813 { yyLOCAL = yyDollar[1].exprUnion() } yyVAL.union = yyLOCAL - case 1365: + case 1367: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:6808 +//line sql.y:6817 { yyLOCAL = NewIntLiteral(yyDollar[1].str) } yyVAL.union = yyLOCAL - case 1366: + case 1368: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:6812 +//line sql.y:6821 { yyLOCAL = yyDollar[1].variableUnion() } yyVAL.union = yyLOCAL - case 1367: + case 1369: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:6816 +//line sql.y:6825 { yyLOCAL = parseBindVariable(yylex, yyDollar[1].str[1:]) } yyVAL.union = yyLOCAL - case 1368: + case 1370: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL Expr -//line sql.y:6821 +//line sql.y:6830 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1369: + case 1371: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:6825 +//line sql.y:6834 { yyLOCAL = yyDollar[2].exprUnion() } yyVAL.union = yyLOCAL - case 1370: + case 1372: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6831 +//line sql.y:6840 { yyLOCAL = &RegexpInstrExpr{Expr: yyDollar[3].exprUnion(), Pattern: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1371: + case 1373: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr -//line sql.y:6835 +//line sql.y:6844 { yyLOCAL = &RegexpInstrExpr{Expr: yyDollar[3].exprUnion(), Pattern: yyDollar[5].exprUnion(), Position: yyDollar[7].exprUnion()} } yyVAL.union = yyLOCAL - case 1372: + case 1374: yyDollar = yyS[yypt-10 : yypt+1] var yyLOCAL Expr -//line sql.y:6839 +//line sql.y:6848 { yyLOCAL = &RegexpInstrExpr{Expr: yyDollar[3].exprUnion(), Pattern: yyDollar[5].exprUnion(), Position: yyDollar[7].exprUnion(), Occurrence: yyDollar[9].exprUnion()} } yyVAL.union = yyLOCAL - case 1373: + case 1375: yyDollar = yyS[yypt-12 : yypt+1] var yyLOCAL Expr -//line sql.y:6843 +//line sql.y:6852 { yyLOCAL = &RegexpInstrExpr{Expr: yyDollar[3].exprUnion(), Pattern: yyDollar[5].exprUnion(), Position: yyDollar[7].exprUnion(), Occurrence: yyDollar[9].exprUnion(), ReturnOption: yyDollar[11].exprUnion()} } yyVAL.union = yyLOCAL - case 1374: + case 1376: yyDollar = yyS[yypt-14 : yypt+1] var yyLOCAL Expr -//line sql.y:6847 +//line sql.y:6856 { // Match type is kept expression as TRIM( ' m ') is accepted yyLOCAL = &RegexpInstrExpr{Expr: yyDollar[3].exprUnion(), Pattern: yyDollar[5].exprUnion(), Position: yyDollar[7].exprUnion(), Occurrence: yyDollar[9].exprUnion(), ReturnOption: yyDollar[11].exprUnion(), MatchType: yyDollar[13].exprUnion()} } yyVAL.union = yyLOCAL - case 1375: + case 1377: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6852 +//line sql.y:6861 { yyLOCAL = &RegexpLikeExpr{Expr: yyDollar[3].exprUnion(), Pattern: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1376: + case 1378: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr -//line sql.y:6856 +//line sql.y:6865 { yyLOCAL = &RegexpLikeExpr{Expr: yyDollar[3].exprUnion(), Pattern: yyDollar[5].exprUnion(), MatchType: yyDollar[7].exprUnion()} } yyVAL.union = yyLOCAL - case 1377: + case 1379: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr -//line sql.y:6860 +//line sql.y:6869 { yyLOCAL = &RegexpReplaceExpr{Expr: yyDollar[3].exprUnion(), Pattern: yyDollar[5].exprUnion(), Repl: yyDollar[7].exprUnion()} } yyVAL.union = yyLOCAL - case 1378: + case 1380: yyDollar = yyS[yypt-10 : yypt+1] var yyLOCAL Expr -//line sql.y:6864 +//line sql.y:6873 { yyLOCAL = &RegexpReplaceExpr{Expr: yyDollar[3].exprUnion(), Pattern: yyDollar[5].exprUnion(), Repl: yyDollar[7].exprUnion(), Position: yyDollar[9].exprUnion()} } yyVAL.union = yyLOCAL - case 1379: + case 1381: yyDollar = yyS[yypt-12 : yypt+1] var yyLOCAL Expr -//line sql.y:6868 +//line sql.y:6877 { yyLOCAL = &RegexpReplaceExpr{Expr: yyDollar[3].exprUnion(), Pattern: yyDollar[5].exprUnion(), Repl: yyDollar[7].exprUnion(), Position: yyDollar[9].exprUnion(), Occurrence: yyDollar[11].exprUnion()} } yyVAL.union = yyLOCAL - case 1380: + case 1382: yyDollar = yyS[yypt-14 : yypt+1] var yyLOCAL Expr -//line sql.y:6872 +//line sql.y:6881 { // Match type is kept expression as TRIM( ' m ') is accepted yyLOCAL = &RegexpReplaceExpr{Expr: yyDollar[3].exprUnion(), Pattern: yyDollar[5].exprUnion(), Repl: yyDollar[7].exprUnion(), Position: yyDollar[9].exprUnion(), Occurrence: yyDollar[11].exprUnion(), MatchType: yyDollar[13].exprUnion()} } yyVAL.union = yyLOCAL - case 1381: + case 1383: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6877 +//line sql.y:6886 { yyLOCAL = &RegexpSubstrExpr{Expr: yyDollar[3].exprUnion(), Pattern: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1382: + case 1384: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr -//line sql.y:6881 +//line sql.y:6890 { yyLOCAL = &RegexpSubstrExpr{Expr: yyDollar[3].exprUnion(), Pattern: yyDollar[5].exprUnion(), Position: yyDollar[7].exprUnion()} } yyVAL.union = yyLOCAL - case 1383: + case 1385: yyDollar = yyS[yypt-10 : yypt+1] var yyLOCAL Expr -//line sql.y:6885 +//line sql.y:6894 { yyLOCAL = &RegexpSubstrExpr{Expr: yyDollar[3].exprUnion(), Pattern: yyDollar[5].exprUnion(), Position: yyDollar[7].exprUnion(), Occurrence: yyDollar[9].exprUnion()} } yyVAL.union = yyLOCAL - case 1384: + case 1386: yyDollar = yyS[yypt-12 : yypt+1] var yyLOCAL Expr -//line sql.y:6889 +//line sql.y:6898 { // Match type is kept expression as TRIM( ' m ') is accepted yyLOCAL = &RegexpSubstrExpr{Expr: yyDollar[3].exprUnion(), Pattern: yyDollar[5].exprUnion(), Position: yyDollar[7].exprUnion(), Occurrence: yyDollar[9].exprUnion(), MatchType: yyDollar[11].exprUnion()} } yyVAL.union = yyLOCAL - case 1385: + case 1387: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6896 +//line sql.y:6905 { yyLOCAL = &ExtractValueExpr{Fragment: yyDollar[3].exprUnion(), XPathExpr: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1386: + case 1388: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr -//line sql.y:6900 +//line sql.y:6909 { yyLOCAL = &UpdateXMLExpr{Target: yyDollar[3].exprUnion(), XPathExpr: yyDollar[5].exprUnion(), NewXML: yyDollar[7].exprUnion()} } yyVAL.union = yyLOCAL - case 1387: + case 1389: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6906 +//line sql.y:6915 { yyLOCAL = &PerformanceSchemaFuncExpr{Type: FormatBytesType, Argument: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1388: + case 1390: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6910 +//line sql.y:6919 { yyLOCAL = &PerformanceSchemaFuncExpr{Type: FormatPicoTimeType, Argument: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1389: + case 1391: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Expr -//line sql.y:6914 +//line sql.y:6923 { yyLOCAL = &PerformanceSchemaFuncExpr{Type: PsCurrentThreadIDType} } yyVAL.union = yyLOCAL - case 1390: + case 1392: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6918 +//line sql.y:6927 { yyLOCAL = &PerformanceSchemaFuncExpr{Type: PsThreadIDType, Argument: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1391: + case 1393: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6924 +//line sql.y:6933 { yyLOCAL = >IDFuncExpr{Type: GTIDSubsetType, Set1: yyDollar[3].exprUnion(), Set2: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1392: + case 1394: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6928 +//line sql.y:6937 { yyLOCAL = >IDFuncExpr{Type: GTIDSubtractType, Set1: yyDollar[3].exprUnion(), Set2: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1393: + case 1395: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6932 +//line sql.y:6941 { yyLOCAL = >IDFuncExpr{Type: WaitForExecutedGTIDSetType, Set1: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1394: + case 1396: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6936 +//line sql.y:6945 { yyLOCAL = >IDFuncExpr{Type: WaitForExecutedGTIDSetType, Set1: yyDollar[3].exprUnion(), Timeout: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1395: + case 1397: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:6940 +//line sql.y:6949 { yyLOCAL = >IDFuncExpr{Type: WaitUntilSQLThreadAfterGTIDSType, Set1: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1396: + case 1398: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL Expr -//line sql.y:6944 +//line sql.y:6953 { yyLOCAL = >IDFuncExpr{Type: WaitUntilSQLThreadAfterGTIDSType, Set1: yyDollar[3].exprUnion(), Timeout: yyDollar[5].exprUnion()} } yyVAL.union = yyLOCAL - case 1397: + case 1399: yyDollar = yyS[yypt-8 : yypt+1] var yyLOCAL Expr -//line sql.y:6948 +//line sql.y:6957 { yyLOCAL = >IDFuncExpr{Type: WaitUntilSQLThreadAfterGTIDSType, Set1: yyDollar[3].exprUnion(), Timeout: yyDollar[5].exprUnion(), Channel: yyDollar[7].exprUnion()} } yyVAL.union = yyLOCAL - case 1398: + case 1400: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *ConvertType -//line sql.y:6953 +//line sql.y:6962 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1399: + case 1401: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *ConvertType -//line sql.y:6957 +//line sql.y:6966 { yyLOCAL = yyDollar[2].convertTypeUnion() } yyVAL.union = yyLOCAL - case 1400: + case 1402: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL IntervalType -//line sql.y:6963 +//line sql.y:6972 { yyLOCAL = IntervalDayHour } yyVAL.union = yyLOCAL - case 1401: + case 1403: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL IntervalType -//line sql.y:6967 +//line sql.y:6976 { yyLOCAL = IntervalDayMicrosecond } yyVAL.union = yyLOCAL - case 1402: + case 1404: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL IntervalType -//line sql.y:6971 +//line sql.y:6980 { yyLOCAL = IntervalDayMinute } yyVAL.union = yyLOCAL - case 1403: + case 1405: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL IntervalType -//line sql.y:6975 +//line sql.y:6984 { yyLOCAL = IntervalDaySecond } yyVAL.union = yyLOCAL - case 1404: + case 1406: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL IntervalType -//line sql.y:6979 +//line sql.y:6988 { yyLOCAL = IntervalHourMicrosecond } yyVAL.union = yyLOCAL - case 1405: + case 1407: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL IntervalType -//line sql.y:6983 +//line sql.y:6992 { yyLOCAL = IntervalHourMinute } yyVAL.union = yyLOCAL - case 1406: + case 1408: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL IntervalType -//line sql.y:6987 +//line sql.y:6996 { yyLOCAL = IntervalHourSecond } yyVAL.union = yyLOCAL - case 1407: + case 1409: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL IntervalType -//line sql.y:6991 +//line sql.y:7000 { yyLOCAL = IntervalMinuteMicrosecond } yyVAL.union = yyLOCAL - case 1408: + case 1410: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL IntervalType -//line sql.y:6995 +//line sql.y:7004 { yyLOCAL = IntervalMinuteSecond } yyVAL.union = yyLOCAL - case 1409: + case 1411: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL IntervalType -//line sql.y:6999 +//line sql.y:7008 { yyLOCAL = IntervalSecondMicrosecond } yyVAL.union = yyLOCAL - case 1410: + case 1412: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL IntervalType -//line sql.y:7003 +//line sql.y:7012 { yyLOCAL = IntervalYearMonth } yyVAL.union = yyLOCAL - case 1411: + case 1413: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL IntervalType -//line sql.y:7007 +//line sql.y:7016 { yyLOCAL = IntervalDay } yyVAL.union = yyLOCAL - case 1412: + case 1414: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL IntervalType -//line sql.y:7011 +//line sql.y:7020 { yyLOCAL = IntervalWeek } yyVAL.union = yyLOCAL - case 1413: + case 1415: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL IntervalType -//line sql.y:7015 +//line sql.y:7024 { yyLOCAL = IntervalHour } yyVAL.union = yyLOCAL - case 1414: + case 1416: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL IntervalType -//line sql.y:7019 +//line sql.y:7028 { yyLOCAL = IntervalMinute } yyVAL.union = yyLOCAL - case 1415: + case 1417: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL IntervalType -//line sql.y:7023 +//line sql.y:7032 { yyLOCAL = IntervalMonth } yyVAL.union = yyLOCAL - case 1416: + case 1418: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL IntervalType -//line sql.y:7027 +//line sql.y:7036 { yyLOCAL = IntervalQuarter } yyVAL.union = yyLOCAL - case 1417: + case 1419: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL IntervalType -//line sql.y:7031 +//line sql.y:7040 { yyLOCAL = IntervalSecond } yyVAL.union = yyLOCAL - case 1418: + case 1420: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL IntervalType -//line sql.y:7035 +//line sql.y:7044 { yyLOCAL = IntervalMicrosecond } yyVAL.union = yyLOCAL - case 1419: + case 1421: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL IntervalType -//line sql.y:7039 +//line sql.y:7048 { yyLOCAL = IntervalYear } yyVAL.union = yyLOCAL - case 1420: + case 1422: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL IntervalType -//line sql.y:7045 +//line sql.y:7054 { yyLOCAL = IntervalDay } yyVAL.union = yyLOCAL - case 1421: + case 1423: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL IntervalType -//line sql.y:7049 +//line sql.y:7058 { yyLOCAL = IntervalWeek } yyVAL.union = yyLOCAL - case 1422: + case 1424: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL IntervalType -//line sql.y:7053 +//line sql.y:7062 { yyLOCAL = IntervalHour } yyVAL.union = yyLOCAL - case 1423: + case 1425: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL IntervalType -//line sql.y:7057 +//line sql.y:7066 { yyLOCAL = IntervalMinute } yyVAL.union = yyLOCAL - case 1424: + case 1426: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL IntervalType -//line sql.y:7061 +//line sql.y:7070 { yyLOCAL = IntervalMonth } yyVAL.union = yyLOCAL - case 1425: + case 1427: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL IntervalType -//line sql.y:7065 +//line sql.y:7074 { yyLOCAL = IntervalQuarter } yyVAL.union = yyLOCAL - case 1426: + case 1428: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL IntervalType -//line sql.y:7069 +//line sql.y:7078 { yyLOCAL = IntervalSecond } yyVAL.union = yyLOCAL - case 1427: + case 1429: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL IntervalType -//line sql.y:7073 +//line sql.y:7082 { yyLOCAL = IntervalMicrosecond } yyVAL.union = yyLOCAL - case 1428: + case 1430: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL IntervalType -//line sql.y:7077 +//line sql.y:7086 { yyLOCAL = IntervalYear } yyVAL.union = yyLOCAL - case 1429: + case 1431: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL IntervalType -//line sql.y:7081 +//line sql.y:7090 { yyLOCAL = IntervalDay } yyVAL.union = yyLOCAL - case 1430: + case 1432: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL IntervalType -//line sql.y:7085 +//line sql.y:7094 { yyLOCAL = IntervalWeek } yyVAL.union = yyLOCAL - case 1431: + case 1433: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL IntervalType -//line sql.y:7089 +//line sql.y:7098 { yyLOCAL = IntervalHour } yyVAL.union = yyLOCAL - case 1432: + case 1434: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL IntervalType -//line sql.y:7093 +//line sql.y:7102 { yyLOCAL = IntervalMinute } yyVAL.union = yyLOCAL - case 1433: + case 1435: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL IntervalType -//line sql.y:7097 +//line sql.y:7106 { yyLOCAL = IntervalMonth } yyVAL.union = yyLOCAL - case 1434: + case 1436: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL IntervalType -//line sql.y:7101 +//line sql.y:7110 { yyLOCAL = IntervalQuarter } yyVAL.union = yyLOCAL - case 1435: + case 1437: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL IntervalType -//line sql.y:7105 +//line sql.y:7114 { yyLOCAL = IntervalSecond } yyVAL.union = yyLOCAL - case 1436: + case 1438: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL IntervalType -//line sql.y:7109 +//line sql.y:7118 { yyLOCAL = IntervalMicrosecond } yyVAL.union = yyLOCAL - case 1437: + case 1439: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL IntervalType -//line sql.y:7113 +//line sql.y:7122 { yyLOCAL = IntervalYear } yyVAL.union = yyLOCAL - case 1440: + case 1442: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL int -//line sql.y:7123 +//line sql.y:7132 { yyLOCAL = 0 } yyVAL.union = yyLOCAL - case 1441: + case 1443: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL int -//line sql.y:7127 +//line sql.y:7136 { yyLOCAL = 0 } yyVAL.union = yyLOCAL - case 1442: + case 1444: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL int -//line sql.y:7131 +//line sql.y:7140 { yyLOCAL = convertStringToInt(yyDollar[2].str) } yyVAL.union = yyLOCAL - case 1443: + case 1445: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:7141 +//line sql.y:7150 { yyLOCAL = &FuncExpr{Name: NewIdentifierCI("if"), Exprs: yyDollar[3].exprsUnion()} } yyVAL.union = yyLOCAL - case 1444: + case 1446: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:7145 +//line sql.y:7154 { yyLOCAL = &FuncExpr{Name: NewIdentifierCI("database"), Exprs: yyDollar[3].exprsUnion()} } yyVAL.union = yyLOCAL - case 1445: + case 1447: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:7149 +//line sql.y:7158 { yyLOCAL = &FuncExpr{Name: NewIdentifierCI("schema"), Exprs: yyDollar[3].exprsUnion()} } yyVAL.union = yyLOCAL - case 1446: + case 1448: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:7153 +//line sql.y:7162 { yyLOCAL = &FuncExpr{Name: NewIdentifierCI("mod"), Exprs: yyDollar[3].exprsUnion()} } yyVAL.union = yyLOCAL - case 1447: + case 1449: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Expr -//line sql.y:7157 +//line sql.y:7166 { yyLOCAL = &FuncExpr{Name: NewIdentifierCI("replace"), Exprs: yyDollar[3].exprsUnion()} } yyVAL.union = yyLOCAL - case 1448: + case 1450: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL MatchExprOption -//line sql.y:7163 +//line sql.y:7172 { yyLOCAL = NoOption } yyVAL.union = yyLOCAL - case 1449: + case 1451: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL MatchExprOption -//line sql.y:7167 +//line sql.y:7176 { yyLOCAL = BooleanModeOpt } yyVAL.union = yyLOCAL - case 1450: + case 1452: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL MatchExprOption -//line sql.y:7171 +//line sql.y:7180 { yyLOCAL = NaturalLanguageModeOpt } yyVAL.union = yyLOCAL - case 1451: + case 1453: yyDollar = yyS[yypt-7 : yypt+1] var yyLOCAL MatchExprOption -//line sql.y:7175 +//line sql.y:7184 { yyLOCAL = NaturalLanguageModeWithQueryExpansionOpt } yyVAL.union = yyLOCAL - case 1452: + case 1454: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL MatchExprOption -//line sql.y:7179 +//line sql.y:7188 { yyLOCAL = QueryExpansionOpt } yyVAL.union = yyLOCAL - case 1453: + case 1455: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:7185 +//line sql.y:7194 { yyVAL.str = string(yyDollar[1].identifierCI.String()) } - case 1454: + case 1456: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:7189 +//line sql.y:7198 { yyVAL.str = string(yyDollar[1].str) } - case 1455: + case 1457: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:7193 +//line sql.y:7202 { yyVAL.str = string(yyDollar[1].str) } - case 1456: + case 1458: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *ConvertType -//line sql.y:7199 +//line sql.y:7208 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1457: + case 1459: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *ConvertType -//line sql.y:7203 +//line sql.y:7212 { yyLOCAL = &ConvertType{Type: string(yyDollar[2].str), Length: ptr.Of(convertStringToInt(yyDollar[4].str))} } yyVAL.union = yyLOCAL - case 1458: + case 1460: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *ConvertType -//line sql.y:7207 +//line sql.y:7216 { yyLOCAL = &ConvertType{Type: string(yyDollar[2].str), Length: ptr.Of(convertStringToInt(yyDollar[4].str))} } yyVAL.union = yyLOCAL - case 1459: + case 1461: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *ConvertType -//line sql.y:7213 +//line sql.y:7222 { yyLOCAL = &ConvertType{Type: string(yyDollar[1].str), Length: yyDollar[2].intPtrUnion()} } yyVAL.union = yyLOCAL - case 1460: + case 1462: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *ConvertType -//line sql.y:7217 +//line sql.y:7226 { yyLOCAL = &ConvertType{Type: string(yyDollar[1].str), Length: yyDollar[2].intPtrUnion(), Charset: yyDollar[3].columnCharset} } yyVAL.union = yyLOCAL - case 1461: + case 1463: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *ConvertType -//line sql.y:7221 +//line sql.y:7230 { yyLOCAL = &ConvertType{Type: string(yyDollar[1].str)} } yyVAL.union = yyLOCAL - case 1462: + case 1464: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *ConvertType -//line sql.y:7225 +//line sql.y:7234 { yyLOCAL = &ConvertType{Type: string(yyDollar[1].str), Length: yyDollar[2].intPtrUnion()} } yyVAL.union = yyLOCAL - case 1463: + case 1465: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *ConvertType -//line sql.y:7229 +//line sql.y:7238 { yyLOCAL = &ConvertType{Type: string(yyDollar[1].str)} yyLOCAL.Length = yyDollar[2].LengthScaleOption.Length yyLOCAL.Scale = yyDollar[2].LengthScaleOption.Scale } yyVAL.union = yyLOCAL - case 1464: + case 1466: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *ConvertType -//line sql.y:7235 +//line sql.y:7244 { yyLOCAL = &ConvertType{Type: string(yyDollar[1].str)} } yyVAL.union = yyLOCAL - case 1465: + case 1467: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *ConvertType -//line sql.y:7239 +//line sql.y:7248 { yyLOCAL = &ConvertType{Type: string(yyDollar[1].str), Length: yyDollar[2].intPtrUnion()} } yyVAL.union = yyLOCAL - case 1466: + case 1468: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *ConvertType -//line sql.y:7243 +//line sql.y:7252 { yyLOCAL = &ConvertType{Type: string(yyDollar[1].str)} } yyVAL.union = yyLOCAL - case 1467: + case 1469: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *ConvertType -//line sql.y:7247 +//line sql.y:7256 { yyLOCAL = &ConvertType{Type: string(yyDollar[1].str)} } yyVAL.union = yyLOCAL - case 1468: + case 1470: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *ConvertType -//line sql.y:7251 +//line sql.y:7260 { yyLOCAL = &ConvertType{Type: string(yyDollar[1].str), Length: yyDollar[2].intPtrUnion()} } yyVAL.union = yyLOCAL - case 1469: + case 1471: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *ConvertType -//line sql.y:7255 +//line sql.y:7264 { yyLOCAL = &ConvertType{Type: string(yyDollar[1].str)} } yyVAL.union = yyLOCAL - case 1470: + case 1472: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *ConvertType -//line sql.y:7259 +//line sql.y:7268 { yyLOCAL = &ConvertType{Type: string(yyDollar[1].str)} } yyVAL.union = yyLOCAL - case 1471: + case 1473: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *ConvertType -//line sql.y:7263 +//line sql.y:7272 { yyLOCAL = &ConvertType{Type: string(yyDollar[1].str), Length: yyDollar[2].intPtrUnion()} } yyVAL.union = yyLOCAL - case 1472: + case 1474: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *ConvertType -//line sql.y:7267 +//line sql.y:7276 { yyLOCAL = &ConvertType{Type: string(yyDollar[1].str)} } yyVAL.union = yyLOCAL - case 1473: + case 1475: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *ConvertType -//line sql.y:7271 +//line sql.y:7280 { yyLOCAL = &ConvertType{Type: string(yyDollar[1].str)} } yyVAL.union = yyLOCAL - case 1474: + case 1476: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line sql.y:7277 +//line sql.y:7286 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 1475: + case 1477: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line sql.y:7281 +//line sql.y:7290 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 1476: + case 1478: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL Expr -//line sql.y:7286 +//line sql.y:7295 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1477: + case 1479: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:7290 +//line sql.y:7299 { yyLOCAL = yyDollar[1].exprUnion() } yyVAL.union = yyLOCAL - case 1478: + case 1480: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:7295 +//line sql.y:7304 { yyVAL.str = string("") } - case 1479: + case 1481: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:7299 +//line sql.y:7308 { yyVAL.str = encodeSQLString(yyDollar[2].str) } - case 1480: + case 1482: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []*When -//line sql.y:7305 +//line sql.y:7314 { yyLOCAL = []*When{yyDollar[1].whenUnion()} } yyVAL.union = yyLOCAL - case 1481: + case 1483: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:7309 +//line sql.y:7318 { yySLICE := (*[]*When)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[2].whenUnion()) } - case 1482: + case 1484: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *When -//line sql.y:7315 +//line sql.y:7324 { yyLOCAL = &When{Cond: yyDollar[2].exprUnion(), Val: yyDollar[4].exprUnion()} } yyVAL.union = yyLOCAL - case 1483: + case 1485: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL Expr -//line sql.y:7320 +//line sql.y:7329 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1484: + case 1486: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:7324 +//line sql.y:7333 { yyLOCAL = yyDollar[2].exprUnion() } yyVAL.union = yyLOCAL - case 1485: + case 1487: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *ColName -//line sql.y:7330 +//line sql.y:7339 { yyLOCAL = &ColName{Name: yyDollar[1].identifierCI} } yyVAL.union = yyLOCAL - case 1486: + case 1488: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *ColName -//line sql.y:7334 +//line sql.y:7343 { yyLOCAL = &ColName{Name: NewIdentifierCI(string(yyDollar[1].str))} } yyVAL.union = yyLOCAL - case 1487: + case 1489: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *ColName -//line sql.y:7338 +//line sql.y:7347 { yyLOCAL = &ColName{Qualifier: TableName{Name: yyDollar[1].identifierCS}, Name: yyDollar[3].identifierCI} } yyVAL.union = yyLOCAL - case 1488: + case 1490: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *ColName -//line sql.y:7342 +//line sql.y:7351 { yyLOCAL = &ColName{Qualifier: TableName{Qualifier: yyDollar[1].identifierCS, Name: yyDollar[3].identifierCS}, Name: yyDollar[5].identifierCI} } yyVAL.union = yyLOCAL - case 1489: + case 1491: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:7348 +//line sql.y:7357 { yyLOCAL = yyDollar[1].colNameUnion() } yyVAL.union = yyLOCAL - case 1490: + case 1492: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:7352 +//line sql.y:7361 { yyLOCAL = &Offset{V: convertStringToInt(yyDollar[1].str)} } yyVAL.union = yyLOCAL - case 1491: + case 1493: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:7358 +//line sql.y:7367 { // TODO(sougou): Deprecate this construct. if yyDollar[1].identifierCI.Lowered() != "value" { @@ -21477,442 +21457,442 @@ yydefault: yyLOCAL = NewIntLiteral("1") } yyVAL.union = yyLOCAL - case 1492: + case 1494: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:7367 +//line sql.y:7376 { yyLOCAL = NewIntLiteral(yyDollar[1].str) } yyVAL.union = yyLOCAL - case 1493: + case 1495: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:7371 +//line sql.y:7380 { yyLOCAL = parseBindVariable(yylex, yyDollar[1].str[1:]) } yyVAL.union = yyLOCAL - case 1494: + case 1496: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *GroupBy -//line sql.y:7376 +//line sql.y:7385 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1495: + case 1497: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *GroupBy -//line sql.y:7380 +//line sql.y:7389 { yyLOCAL = &GroupBy{Exprs: yyDollar[3].exprsUnion(), WithRollup: yyDollar[4].booleanUnion()} } yyVAL.union = yyLOCAL - case 1496: + case 1498: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line sql.y:7385 +//line sql.y:7394 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 1497: + case 1499: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL bool -//line sql.y:7389 +//line sql.y:7398 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 1498: + case 1500: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL Expr -//line sql.y:7395 +//line sql.y:7404 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1499: + case 1501: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Expr -//line sql.y:7399 +//line sql.y:7408 { yyLOCAL = yyDollar[2].exprUnion() } yyVAL.union = yyLOCAL - case 1500: + case 1502: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *NamedWindow -//line sql.y:7405 +//line sql.y:7414 { yyLOCAL = &NamedWindow{yyDollar[2].windowDefinitionsUnion()} } yyVAL.union = yyLOCAL - case 1501: + case 1503: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL NamedWindows -//line sql.y:7411 +//line sql.y:7420 { yyLOCAL = NamedWindows{yyDollar[1].namedWindowUnion()} } yyVAL.union = yyLOCAL - case 1502: + case 1504: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:7415 +//line sql.y:7424 { yySLICE := (*NamedWindows)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].namedWindowUnion()) } - case 1503: + case 1505: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL NamedWindows -//line sql.y:7420 +//line sql.y:7429 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1504: + case 1506: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL NamedWindows -//line sql.y:7424 +//line sql.y:7433 { yyLOCAL = yyDollar[1].namedWindowsUnion() } yyVAL.union = yyLOCAL - case 1505: + case 1507: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL OrderBy -//line sql.y:7429 +//line sql.y:7438 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1506: + case 1508: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL OrderBy -//line sql.y:7433 +//line sql.y:7442 { yyLOCAL = yyDollar[1].orderByUnion() } yyVAL.union = yyLOCAL - case 1507: + case 1509: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL OrderBy -//line sql.y:7439 +//line sql.y:7448 { yyLOCAL = yyDollar[3].orderByUnion() } yyVAL.union = yyLOCAL - case 1508: + case 1510: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL OrderBy -//line sql.y:7445 +//line sql.y:7454 { yyLOCAL = OrderBy{yyDollar[1].orderUnion()} } yyVAL.union = yyLOCAL - case 1509: + case 1511: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:7449 +//line sql.y:7458 { yySLICE := (*OrderBy)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].orderUnion()) } - case 1510: + case 1512: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *Order -//line sql.y:7455 +//line sql.y:7464 { yyLOCAL = &Order{Expr: yyDollar[1].exprUnion(), Direction: yyDollar[2].orderDirectionUnion()} } yyVAL.union = yyLOCAL - case 1511: + case 1513: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL OrderDirection -//line sql.y:7460 +//line sql.y:7469 { yyLOCAL = AscOrder } yyVAL.union = yyLOCAL - case 1512: + case 1514: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL OrderDirection -//line sql.y:7464 +//line sql.y:7473 { yyLOCAL = AscOrder } yyVAL.union = yyLOCAL - case 1513: + case 1515: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL OrderDirection -//line sql.y:7468 +//line sql.y:7477 { yyLOCAL = DescOrder } yyVAL.union = yyLOCAL - case 1514: + case 1516: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *Limit -//line sql.y:7473 +//line sql.y:7482 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1515: + case 1517: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *Limit -//line sql.y:7477 +//line sql.y:7486 { yyLOCAL = yyDollar[1].limitUnion() } yyVAL.union = yyLOCAL - case 1516: + case 1518: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *Limit -//line sql.y:7483 +//line sql.y:7492 { yyLOCAL = &Limit{Rowcount: yyDollar[2].exprUnion()} } yyVAL.union = yyLOCAL - case 1517: + case 1519: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *Limit -//line sql.y:7487 +//line sql.y:7496 { yyLOCAL = &Limit{Offset: yyDollar[2].exprUnion(), Rowcount: yyDollar[4].exprUnion()} } yyVAL.union = yyLOCAL - case 1518: + case 1520: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *Limit -//line sql.y:7491 +//line sql.y:7500 { yyLOCAL = &Limit{Offset: yyDollar[4].exprUnion(), Rowcount: yyDollar[2].exprUnion()} } yyVAL.union = yyLOCAL - case 1519: + case 1521: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL []AlterOption -//line sql.y:7496 +//line sql.y:7505 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1520: + case 1522: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL []AlterOption -//line sql.y:7500 +//line sql.y:7509 { yyLOCAL = []AlterOption{yyDollar[1].alterOptionUnion(), yyDollar[2].alterOptionUnion()} } yyVAL.union = yyLOCAL - case 1521: + case 1523: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL []AlterOption -//line sql.y:7504 +//line sql.y:7513 { yyLOCAL = []AlterOption{yyDollar[1].alterOptionUnion(), yyDollar[2].alterOptionUnion()} } yyVAL.union = yyLOCAL - case 1522: + case 1524: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []AlterOption -//line sql.y:7508 +//line sql.y:7517 { yyLOCAL = []AlterOption{yyDollar[1].alterOptionUnion()} } yyVAL.union = yyLOCAL - case 1523: + case 1525: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []AlterOption -//line sql.y:7512 +//line sql.y:7521 { yyLOCAL = []AlterOption{yyDollar[1].alterOptionUnion()} } yyVAL.union = yyLOCAL - case 1524: + case 1526: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL AlterOption -//line sql.y:7519 +//line sql.y:7528 { yyLOCAL = &LockOption{Type: DefaultType} } yyVAL.union = yyLOCAL - case 1525: + case 1527: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL AlterOption -//line sql.y:7523 +//line sql.y:7532 { yyLOCAL = &LockOption{Type: NoneType} } yyVAL.union = yyLOCAL - case 1526: + case 1528: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL AlterOption -//line sql.y:7527 +//line sql.y:7536 { yyLOCAL = &LockOption{Type: SharedType} } yyVAL.union = yyLOCAL - case 1527: + case 1529: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL AlterOption -//line sql.y:7531 +//line sql.y:7540 { yyLOCAL = &LockOption{Type: ExclusiveType} } yyVAL.union = yyLOCAL - case 1528: + case 1530: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL AlterOption -//line sql.y:7537 +//line sql.y:7546 { yyLOCAL = AlgorithmValue(yyDollar[3].str) } yyVAL.union = yyLOCAL - case 1529: + case 1531: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL AlterOption -//line sql.y:7541 +//line sql.y:7550 { yyLOCAL = AlgorithmValue(yyDollar[3].str) } yyVAL.union = yyLOCAL - case 1530: + case 1532: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL AlterOption -//line sql.y:7545 +//line sql.y:7554 { yyLOCAL = AlgorithmValue(yyDollar[3].str) } yyVAL.union = yyLOCAL - case 1531: + case 1533: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL AlterOption -//line sql.y:7549 +//line sql.y:7558 { yyLOCAL = AlgorithmValue(yyDollar[3].str) } yyVAL.union = yyLOCAL - case 1532: + case 1534: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:7554 +//line sql.y:7563 { yyVAL.str = "" } - case 1533: + case 1535: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:7558 +//line sql.y:7567 { yyVAL.str = string(yyDollar[3].str) } - case 1534: + case 1536: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:7562 +//line sql.y:7571 { yyVAL.str = string(yyDollar[3].str) } - case 1535: + case 1537: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:7566 +//line sql.y:7575 { yyVAL.str = string(yyDollar[3].str) } - case 1536: + case 1538: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:7571 +//line sql.y:7580 { yyVAL.str = "" } - case 1537: + case 1539: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:7575 +//line sql.y:7584 { yyVAL.str = yyDollar[3].str } - case 1538: + case 1540: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:7581 +//line sql.y:7590 { yyVAL.str = string(yyDollar[1].str) } - case 1539: + case 1541: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:7585 +//line sql.y:7594 { yyVAL.str = string(yyDollar[1].str) } - case 1540: + case 1542: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:7590 +//line sql.y:7599 { yyVAL.str = "" } - case 1541: + case 1543: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:7594 +//line sql.y:7603 { yyVAL.str = yyDollar[2].str } - case 1542: + case 1544: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:7599 +//line sql.y:7608 { yyVAL.str = "cascaded" } - case 1543: + case 1545: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:7603 +//line sql.y:7612 { yyVAL.str = string(yyDollar[1].str) } - case 1544: + case 1546: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:7607 +//line sql.y:7616 { yyVAL.str = string(yyDollar[1].str) } - case 1545: + case 1547: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *Definer -//line sql.y:7612 +//line sql.y:7621 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1546: + case 1548: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *Definer -//line sql.y:7616 +//line sql.y:7625 { yyLOCAL = yyDollar[3].definerUnion() } yyVAL.union = yyLOCAL - case 1547: + case 1549: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *Definer -//line sql.y:7622 +//line sql.y:7631 { yyLOCAL = &Definer{ Name: string(yyDollar[1].str), } } yyVAL.union = yyLOCAL - case 1548: + case 1550: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *Definer -//line sql.y:7628 +//line sql.y:7637 { yyLOCAL = &Definer{ Name: string(yyDollar[1].str), } } yyVAL.union = yyLOCAL - case 1549: + case 1551: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *Definer -//line sql.y:7634 +//line sql.y:7643 { yyLOCAL = &Definer{ Name: yyDollar[1].str, @@ -21920,464 +21900,464 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1550: + case 1552: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:7643 +//line sql.y:7652 { yyVAL.str = encodeSQLString(yyDollar[1].str) } - case 1551: + case 1553: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:7647 +//line sql.y:7656 { yyVAL.str = formatIdentifier(yyDollar[1].str) } - case 1552: + case 1554: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:7652 +//line sql.y:7661 { yyVAL.str = "" } - case 1553: + case 1555: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:7656 +//line sql.y:7665 { yyVAL.str = formatAddress(yyDollar[1].str) } - case 1554: + case 1556: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Lock -//line sql.y:7662 +//line sql.y:7671 { yyLOCAL = ForUpdateLock } yyVAL.union = yyLOCAL - case 1555: + case 1557: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Lock -//line sql.y:7666 +//line sql.y:7675 { yyLOCAL = ForUpdateLockNoWait } yyVAL.union = yyLOCAL - case 1556: + case 1558: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Lock -//line sql.y:7670 +//line sql.y:7679 { yyLOCAL = ForUpdateLockSkipLocked } yyVAL.union = yyLOCAL - case 1557: + case 1559: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL Lock -//line sql.y:7674 +//line sql.y:7683 { yyLOCAL = ForShareLock } yyVAL.union = yyLOCAL - case 1558: + case 1560: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Lock -//line sql.y:7678 +//line sql.y:7687 { yyLOCAL = ForShareLockNoWait } yyVAL.union = yyLOCAL - case 1559: + case 1561: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Lock -//line sql.y:7682 +//line sql.y:7691 { yyLOCAL = ForShareLockSkipLocked } yyVAL.union = yyLOCAL - case 1560: + case 1562: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL Lock -//line sql.y:7686 +//line sql.y:7695 { yyLOCAL = ShareModeLock } yyVAL.union = yyLOCAL - case 1561: + case 1563: yyDollar = yyS[yypt-9 : yypt+1] var yyLOCAL *SelectInto -//line sql.y:7692 +//line sql.y:7701 { yyLOCAL = &SelectInto{Type: IntoOutfileS3, FileName: encodeSQLString(yyDollar[4].str), Charset: yyDollar[5].columnCharset, FormatOption: yyDollar[6].str, ExportOption: yyDollar[7].str, Manifest: yyDollar[8].str, Overwrite: yyDollar[9].str} } yyVAL.union = yyLOCAL - case 1562: + case 1564: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *SelectInto -//line sql.y:7696 +//line sql.y:7705 { yyLOCAL = &SelectInto{Type: IntoDumpfile, FileName: encodeSQLString(yyDollar[3].str), Charset: ColumnCharset{}, FormatOption: "", ExportOption: "", Manifest: "", Overwrite: ""} } yyVAL.union = yyLOCAL - case 1563: + case 1565: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *SelectInto -//line sql.y:7700 +//line sql.y:7709 { yyLOCAL = &SelectInto{Type: IntoOutfile, FileName: encodeSQLString(yyDollar[3].str), Charset: yyDollar[4].columnCharset, FormatOption: "", ExportOption: yyDollar[5].str, Manifest: "", Overwrite: ""} } yyVAL.union = yyLOCAL - case 1564: + case 1566: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:7705 +//line sql.y:7714 { yyVAL.str = "" } - case 1565: + case 1567: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:7709 +//line sql.y:7718 { yyVAL.str = " format csv" + yyDollar[3].str } - case 1566: + case 1568: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:7713 +//line sql.y:7722 { yyVAL.str = " format text" + yyDollar[3].str } - case 1567: + case 1569: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:7718 +//line sql.y:7727 { yyVAL.str = "" } - case 1568: + case 1570: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:7722 +//line sql.y:7731 { yyVAL.str = " header" } - case 1569: + case 1571: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:7727 +//line sql.y:7736 { yyVAL.str = "" } - case 1570: + case 1572: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:7731 +//line sql.y:7740 { yyVAL.str = " manifest on" } - case 1571: + case 1573: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:7735 +//line sql.y:7744 { yyVAL.str = " manifest off" } - case 1572: + case 1574: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:7740 +//line sql.y:7749 { yyVAL.str = "" } - case 1573: + case 1575: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:7744 +//line sql.y:7753 { yyVAL.str = " overwrite on" } - case 1574: + case 1576: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:7748 +//line sql.y:7757 { yyVAL.str = " overwrite off" } - case 1575: + case 1577: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:7754 +//line sql.y:7763 { yyVAL.str = yyDollar[1].str + yyDollar[2].str } - case 1576: + case 1578: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:7759 +//line sql.y:7768 { yyVAL.str = "" } - case 1577: + case 1579: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:7763 +//line sql.y:7772 { yyVAL.str = " lines" + yyDollar[2].str } - case 1578: + case 1580: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:7769 +//line sql.y:7778 { yyVAL.str = yyDollar[1].str } - case 1579: + case 1581: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:7773 +//line sql.y:7782 { yyVAL.str = yyDollar[1].str + yyDollar[2].str } - case 1580: + case 1582: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:7779 +//line sql.y:7788 { yyVAL.str = " starting by " + encodeSQLString(yyDollar[3].str) } - case 1581: + case 1583: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:7783 +//line sql.y:7792 { yyVAL.str = " terminated by " + encodeSQLString(yyDollar[3].str) } - case 1582: + case 1584: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:7788 +//line sql.y:7797 { yyVAL.str = "" } - case 1583: + case 1585: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:7792 +//line sql.y:7801 { yyVAL.str = " " + yyDollar[1].str + yyDollar[2].str } - case 1584: + case 1586: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:7798 +//line sql.y:7807 { yyVAL.str = yyDollar[1].str } - case 1585: + case 1587: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:7802 +//line sql.y:7811 { yyVAL.str = yyDollar[1].str + yyDollar[2].str } - case 1586: + case 1588: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:7808 +//line sql.y:7817 { yyVAL.str = " terminated by " + encodeSQLString(yyDollar[3].str) } - case 1587: + case 1589: yyDollar = yyS[yypt-4 : yypt+1] -//line sql.y:7812 +//line sql.y:7821 { yyVAL.str = yyDollar[1].str + " enclosed by " + encodeSQLString(yyDollar[4].str) } - case 1588: + case 1590: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:7816 +//line sql.y:7825 { yyVAL.str = " escaped by " + encodeSQLString(yyDollar[3].str) } - case 1589: + case 1591: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:7821 +//line sql.y:7830 { yyVAL.str = "" } - case 1590: + case 1592: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:7825 +//line sql.y:7834 { yyVAL.str = " optionally" } - case 1591: + case 1593: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *Insert -//line sql.y:7838 +//line sql.y:7847 { yyLOCAL = &Insert{Rows: yyDollar[2].valuesUnion(), RowAlias: yyDollar[3].rowAliasUnion()} } yyVAL.union = yyLOCAL - case 1592: + case 1594: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL *Insert -//line sql.y:7842 +//line sql.y:7851 { yyLOCAL = &Insert{Rows: yyDollar[1].tableStmtUnion()} } yyVAL.union = yyLOCAL - case 1593: + case 1595: yyDollar = yyS[yypt-6 : yypt+1] var yyLOCAL *Insert -//line sql.y:7846 +//line sql.y:7855 { yyLOCAL = &Insert{Columns: yyDollar[2].columnsUnion(), Rows: yyDollar[5].valuesUnion(), RowAlias: yyDollar[6].rowAliasUnion()} } yyVAL.union = yyLOCAL - case 1594: + case 1596: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *Insert -//line sql.y:7850 +//line sql.y:7859 { yyLOCAL = &Insert{Columns: []IdentifierCI{}, Rows: yyDollar[4].valuesUnion(), RowAlias: yyDollar[5].rowAliasUnion()} } yyVAL.union = yyLOCAL - case 1595: + case 1597: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL *Insert -//line sql.y:7854 +//line sql.y:7863 { yyLOCAL = &Insert{Columns: yyDollar[2].columnsUnion(), Rows: yyDollar[4].tableStmtUnion()} } yyVAL.union = yyLOCAL - case 1596: + case 1598: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Columns -//line sql.y:7860 +//line sql.y:7869 { yyLOCAL = Columns{yyDollar[1].identifierCI} } yyVAL.union = yyLOCAL - case 1597: + case 1599: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Columns -//line sql.y:7864 +//line sql.y:7873 { yyLOCAL = Columns{yyDollar[3].identifierCI} } yyVAL.union = yyLOCAL - case 1598: + case 1600: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:7868 +//line sql.y:7877 { yySLICE := (*Columns)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].identifierCI) } - case 1599: + case 1601: yyDollar = yyS[yypt-5 : yypt+1] -//line sql.y:7872 +//line sql.y:7881 { yySLICE := (*Columns)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[5].identifierCI) } - case 1600: + case 1602: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL *RowAlias -//line sql.y:7877 +//line sql.y:7886 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1601: + case 1603: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *RowAlias -//line sql.y:7881 +//line sql.y:7890 { yyLOCAL = &RowAlias{TableName: yyDollar[2].identifierCS} } yyVAL.union = yyLOCAL - case 1602: + case 1604: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL *RowAlias -//line sql.y:7885 +//line sql.y:7894 { yyLOCAL = &RowAlias{TableName: yyDollar[2].identifierCS, Columns: yyDollar[4].columnsUnion()} } yyVAL.union = yyLOCAL - case 1603: + case 1605: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL UpdateExprs -//line sql.y:7890 +//line sql.y:7899 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1604: + case 1606: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL UpdateExprs -//line sql.y:7894 +//line sql.y:7903 { yyLOCAL = yyDollar[5].updateExprsUnion() } yyVAL.union = yyLOCAL - case 1605: + case 1607: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Values -//line sql.y:7900 +//line sql.y:7909 { yyLOCAL = Values{yyDollar[1].valTupleUnion()} } yyVAL.union = yyLOCAL - case 1606: + case 1608: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:7904 +//line sql.y:7913 { yySLICE := (*Values)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].valTupleUnion()) } - case 1607: + case 1609: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Values -//line sql.y:7910 +//line sql.y:7919 { yyLOCAL = Values{yyDollar[1].valTupleUnion()} } yyVAL.union = yyLOCAL - case 1608: + case 1610: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:7914 +//line sql.y:7923 { yySLICE := (*Values)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].valTupleUnion()) } - case 1609: + case 1611: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL ValTuple -//line sql.y:7920 +//line sql.y:7929 { yyLOCAL = yyDollar[1].valTupleUnion() } yyVAL.union = yyLOCAL - case 1610: + case 1612: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL ValTuple -//line sql.y:7924 +//line sql.y:7933 { yyLOCAL = ValTuple{} } yyVAL.union = yyLOCAL - case 1611: + case 1613: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL ValTuple -//line sql.y:7930 +//line sql.y:7939 { yyLOCAL = yyDollar[1].valTupleUnion() } yyVAL.union = yyLOCAL - case 1612: + case 1614: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL ValTuple -//line sql.y:7934 +//line sql.y:7943 { yyLOCAL = ValTuple{} } yyVAL.union = yyLOCAL - case 1613: + case 1615: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL ValTuple -//line sql.y:7940 +//line sql.y:7949 { yyLOCAL = ValTuple(yyDollar[2].exprsUnion()) } yyVAL.union = yyLOCAL - case 1614: + case 1616: yyDollar = yyS[yypt-4 : yypt+1] var yyLOCAL ValTuple -//line sql.y:7946 +//line sql.y:7955 { yyLOCAL = ValTuple(yyDollar[3].exprsUnion()) } yyVAL.union = yyLOCAL - case 1617: + case 1619: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:7956 +//line sql.y:7965 { if len(yyDollar[1].valTupleUnion()) == 1 { yyLOCAL = yyDollar[1].valTupleUnion()[0] @@ -22386,300 +22366,300 @@ yydefault: } } yyVAL.union = yyLOCAL - case 1618: + case 1620: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL UpdateExprs -//line sql.y:7966 +//line sql.y:7975 { yyLOCAL = UpdateExprs{yyDollar[1].updateExprUnion()} } yyVAL.union = yyLOCAL - case 1619: + case 1621: yyDollar = yyS[yypt-3 : yypt+1] -//line sql.y:7970 +//line sql.y:7979 { yySLICE := (*UpdateExprs)(yyIaddr(yyVAL.union)) *yySLICE = append(*yySLICE, yyDollar[3].updateExprUnion()) } - case 1620: + case 1622: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL *UpdateExpr -//line sql.y:7976 +//line sql.y:7985 { yyLOCAL = &UpdateExpr{Name: yyDollar[1].colNameUnion(), Expr: yyDollar[3].exprUnion()} } yyVAL.union = yyLOCAL - case 1622: + case 1624: yyDollar = yyS[yypt-2 : yypt+1] -//line sql.y:7983 +//line sql.y:7992 { yyVAL.str = "charset" } - case 1625: + case 1627: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:7993 +//line sql.y:8002 { yyLOCAL = NewStrLiteral(yyDollar[1].identifierCI.String()) } yyVAL.union = yyLOCAL - case 1626: + case 1628: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:7997 +//line sql.y:8006 { yyLOCAL = NewStrLiteral(yyDollar[1].str) } yyVAL.union = yyLOCAL - case 1627: + case 1629: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Expr -//line sql.y:8001 +//line sql.y:8010 { yyLOCAL = &Default{} } yyVAL.union = yyLOCAL - case 1630: + case 1632: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line sql.y:8010 +//line sql.y:8019 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 1631: + case 1633: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL bool -//line sql.y:8012 +//line sql.y:8021 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 1632: + case 1634: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line sql.y:8015 +//line sql.y:8024 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 1633: + case 1635: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL bool -//line sql.y:8017 +//line sql.y:8026 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 1634: + case 1636: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL bool -//line sql.y:8020 +//line sql.y:8029 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 1635: + case 1637: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL bool -//line sql.y:8022 +//line sql.y:8031 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 1636: + case 1638: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL Ignore -//line sql.y:8025 +//line sql.y:8034 { yyLOCAL = false } yyVAL.union = yyLOCAL - case 1637: + case 1639: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Ignore -//line sql.y:8027 +//line sql.y:8036 { yyLOCAL = true } yyVAL.union = yyLOCAL - case 1638: + case 1640: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:8030 +//line sql.y:8039 { yyVAL.empty = struct{}{} } - case 1639: + case 1641: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:8032 +//line sql.y:8041 { yyVAL.empty = struct{}{} } - case 1640: + case 1642: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:8034 +//line sql.y:8043 { yyVAL.empty = struct{}{} } - case 1641: + case 1643: yyDollar = yyS[yypt-5 : yypt+1] var yyLOCAL Statement -//line sql.y:8038 +//line sql.y:8047 { yyLOCAL = &CallProc{Name: yyDollar[2].tableName, Params: yyDollar[4].exprsUnion()} } yyVAL.union = yyLOCAL - case 1642: + case 1644: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL Exprs -//line sql.y:8043 +//line sql.y:8052 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1643: + case 1645: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL Exprs -//line sql.y:8047 +//line sql.y:8056 { yyLOCAL = yyDollar[1].exprsUnion() } yyVAL.union = yyLOCAL - case 1644: + case 1646: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL []*IndexOption -//line sql.y:8052 +//line sql.y:8061 { yyLOCAL = nil } yyVAL.union = yyLOCAL - case 1645: + case 1647: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL []*IndexOption -//line sql.y:8054 +//line sql.y:8063 { yyLOCAL = []*IndexOption{yyDollar[1].indexOptionUnion()} } yyVAL.union = yyLOCAL - case 1646: + case 1648: yyDollar = yyS[yypt-2 : yypt+1] var yyLOCAL *IndexOption -//line sql.y:8058 +//line sql.y:8067 { yyLOCAL = &IndexOption{Name: string(yyDollar[1].str), String: string(yyDollar[2].identifierCI.String())} } yyVAL.union = yyLOCAL - case 1647: + case 1649: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:8064 +//line sql.y:8073 { yyVAL.identifierCI = yyDollar[1].identifierCI } - case 1648: + case 1650: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:8068 +//line sql.y:8077 { yyVAL.identifierCI = NewIdentifierCI(string(yyDollar[1].str)) } - case 1650: + case 1652: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:8075 +//line sql.y:8084 { yyVAL.identifierCI = NewIdentifierCI(string(yyDollar[1].str)) } - case 1651: + case 1653: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:8081 +//line sql.y:8090 { yyVAL.identifierCS = NewIdentifierCS(string(yyDollar[1].str)) } - case 1652: + case 1654: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:8085 +//line sql.y:8094 { yyVAL.identifierCS = NewIdentifierCS(string(yyDollar[1].str)) } - case 1653: + case 1655: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:8091 +//line sql.y:8100 { yyVAL.identifierCS = NewIdentifierCS("") } - case 1654: + case 1656: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:8095 +//line sql.y:8104 { yyVAL.identifierCS = yyDollar[1].identifierCS } - case 1656: + case 1658: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:8102 +//line sql.y:8111 { yyVAL.identifierCS = NewIdentifierCS(string(yyDollar[1].str)) } - case 1657: + case 1659: yyDollar = yyS[yypt-3 : yypt+1] var yyLOCAL Statement -//line sql.y:8108 +//line sql.y:8117 { yyLOCAL = &Kill{Type: yyDollar[2].killTypeUnion(), ProcesslistID: convertStringToUInt64(yyDollar[3].str)} } yyVAL.union = yyLOCAL - case 1658: + case 1660: yyDollar = yyS[yypt-0 : yypt+1] var yyLOCAL KillType -//line sql.y:8114 +//line sql.y:8123 { yyLOCAL = ConnectionType } yyVAL.union = yyLOCAL - case 1659: + case 1661: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL KillType -//line sql.y:8118 +//line sql.y:8127 { yyLOCAL = ConnectionType } yyVAL.union = yyLOCAL - case 1660: + case 1662: yyDollar = yyS[yypt-1 : yypt+1] var yyLOCAL KillType -//line sql.y:8122 +//line sql.y:8131 { yyLOCAL = QueryType } yyVAL.union = yyLOCAL - case 2296: + case 2298: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:8786 +//line sql.y:8795 { } - case 2297: + case 2299: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:8791 +//line sql.y:8800 { } - case 2298: + case 2300: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:8795 +//line sql.y:8804 { skipToEnd(yylex) } - case 2299: + case 2301: yyDollar = yyS[yypt-0 : yypt+1] -//line sql.y:8800 +//line sql.y:8809 { skipToEnd(yylex) } - case 2300: + case 2302: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:8804 +//line sql.y:8813 { skipToEnd(yylex) } - case 2301: + case 2303: yyDollar = yyS[yypt-1 : yypt+1] -//line sql.y:8808 +//line sql.y:8817 { skipToEnd(yylex) } diff --git a/go/vt/sqlparser/sql.y b/go/vt/sqlparser/sql.y index b6835ad32a5..f1663a9a41c 100644 --- a/go/vt/sqlparser/sql.y +++ b/go/vt/sqlparser/sql.y @@ -1592,6 +1592,10 @@ column_format: { $$ = DefaultFormat } +| COMPRESSED +{ + $$ = CompressedFormat +} column_storage: VIRTUAL @@ -1632,6 +1636,11 @@ generated_column_attribute_list_opt: $1.KeyOpt = $2 $$ = $1 } +| generated_column_attribute_list_opt SRID INTEGRAL + { + $1.SRID = NewIntLiteral($3) + $$ = $1 + } | generated_column_attribute_list_opt VISIBLE { $1.Invisible = ptr.Of(false) diff --git a/go/vt/sqlparser/utils.go b/go/vt/sqlparser/utils.go index b785128917f..c56e7740fc5 100644 --- a/go/vt/sqlparser/utils.go +++ b/go/vt/sqlparser/utils.go @@ -41,11 +41,12 @@ func (p *Parser) QueryMatchesTemplates(query string, queryTemplates []string) (m if err != nil { return "", err } - err = Normalize(stmt, NewReservedVars("", reservedVars), bv) + + out, err := PrepareAST(stmt, NewReservedVars("", reservedVars), bv, true, "ks", 0, "", map[string]string{}, nil, nil) if err != nil { return "", err } - normalized := CanonicalString(stmt) + normalized := CanonicalString(out.AST) return normalized, nil } diff --git a/go/vt/topo/helpers/copy.go b/go/vt/topo/helpers/copy.go index 6dff1c6ac22..94e2d8aca70 100644 --- a/go/vt/topo/helpers/copy.go +++ b/go/vt/topo/helpers/copy.go @@ -41,7 +41,6 @@ func CopyKeyspaces(ctx context.Context, fromTS, toTS *topo.Server, parser *sqlpa } for _, keyspace := range keyspaces { - ki, err := fromTS.GetKeyspace(ctx, keyspace) if err != nil { return fmt.Errorf("GetKeyspace(%v): %w", keyspace, err) @@ -55,15 +54,15 @@ func CopyKeyspaces(ctx context.Context, fromTS, toTS *topo.Server, parser *sqlpa } } - vs, err := fromTS.GetVSchema(ctx, keyspace) + ksvs, err := fromTS.GetVSchema(ctx, keyspace) switch { case err == nil: - _, err = vindexes.BuildKeyspace(vs, parser) + _, err = vindexes.BuildKeyspace(ksvs.Keyspace, parser) if err != nil { log.Errorf("BuildKeyspace(%v): %v", keyspace, err) break } - if err := toTS.SaveVSchema(ctx, keyspace, vs); err != nil { + if err := toTS.SaveVSchema(ctx, ksvs); err != nil { log.Errorf("SaveVSchema(%v): %v", keyspace, err) } case topo.IsErrType(err, topo.NoNode): diff --git a/go/vt/topo/shard_test.go b/go/vt/topo/shard_test.go index 6bd4aae5b62..915bcd18e3c 100644 --- a/go/vt/topo/shard_test.go +++ b/go/vt/topo/shard_test.go @@ -323,6 +323,14 @@ func TestValidateShardName(t *testing.T) { }, valid: true, }, + { + name: "-", + expectedRange: &topodatapb.KeyRange{ + Start: []byte{}, + End: []byte{}, + }, + valid: true, + }, { name: "40-80", expectedRange: &topodatapb.KeyRange{ diff --git a/go/vt/topo/srv_vschema.go b/go/vt/topo/srv_vschema.go index f69fca83537..e698c4f8851 100644 --- a/go/vt/topo/srv_vschema.go +++ b/go/vt/topo/srv_vschema.go @@ -171,10 +171,13 @@ func (ts *Server) RebuildSrvVSchema(ctx context.Context, cells []string) error { go func(keyspace string) { defer wg.Done() - k, err := ts.GetVSchema(ctx, keyspace) + ksvs, err := ts.GetVSchema(ctx, keyspace) if IsErrType(err, NoNode) { err = nil - k = &vschemapb.Keyspace{} + ksvs = &KeyspaceVSchemaInfo{ + Name: keyspace, + Keyspace: &vschemapb.Keyspace{}, + } } mu.Lock() @@ -184,7 +187,7 @@ func (ts *Server) RebuildSrvVSchema(ctx context.Context, cells []string) error { finalErr = err return } - srvVSchema.Keyspaces[keyspace] = k + srvVSchema.Keyspaces[keyspace] = ksvs.Keyspace }(keyspace) } wg.Wait() diff --git a/go/vt/topo/test/vschema.go b/go/vt/topo/test/vschema.go index 5063addaefd..384e777ac38 100644 --- a/go/vt/topo/test/vschema.go +++ b/go/vt/topo/test/vschema.go @@ -44,9 +44,12 @@ func checkVSchema(t *testing.T, ctx context.Context, ts *topo.Server) { t.Error(err) } - err = ts.SaveVSchema(ctx, "test_keyspace", &vschemapb.Keyspace{ - Tables: map[string]*vschemapb.Table{ - "unsharded": {}, + err = ts.SaveVSchema(ctx, &topo.KeyspaceVSchemaInfo{ + Name: "test_keyspace", + Keyspace: &vschemapb.Keyspace{ + Tables: map[string]*vschemapb.Table{ + "unsharded": {}, + }, }, }) if err != nil { @@ -64,8 +67,11 @@ func checkVSchema(t *testing.T, ctx context.Context, ts *topo.Server) { t.Errorf("GetVSchema: %s, want %s", got, want) } - err = ts.SaveVSchema(ctx, "test_keyspace", &vschemapb.Keyspace{ - Sharded: true, + err = ts.SaveVSchema(ctx, &topo.KeyspaceVSchemaInfo{ + Name: "test_keyspace", + Keyspace: &vschemapb.Keyspace{ + Sharded: true, + }, }) require.NoError(t, err) diff --git a/go/vt/topo/topotests/srv_vschema_test.go b/go/vt/topo/topotests/srv_vschema_test.go index 8fd818150b0..fda3582527a 100644 --- a/go/vt/topo/topotests/srv_vschema_test.go +++ b/go/vt/topo/topotests/srv_vschema_test.go @@ -21,6 +21,7 @@ import ( "google.golang.org/protobuf/proto" + "vitess.io/vitess/go/vt/topo" "vitess.io/vitess/go/vt/topo/memorytopo" topodatapb "vitess.io/vitess/go/vt/proto/topodata" @@ -76,7 +77,10 @@ func TestRebuildVSchema(t *testing.T) { keyspace1 := &vschemapb.Keyspace{ Sharded: true, } - if err := ts.SaveVSchema(ctx, "ks1", keyspace1); err != nil { + if err := ts.SaveVSchema(ctx, &topo.KeyspaceVSchemaInfo{ + Name: "ks1", + Keyspace: keyspace1, + }); err != nil { t.Fatalf("SaveVSchema(ks1) failed: %v", err) } if err := ts.RebuildSrvVSchema(ctx, cells); err != nil { @@ -118,7 +122,10 @@ func TestRebuildVSchema(t *testing.T) { }, }, } - if err := ts.SaveVSchema(ctx, "ks2", keyspace2); err != nil { + if err := ts.SaveVSchema(ctx, &topo.KeyspaceVSchemaInfo{ + Name: "ks2", + Keyspace: keyspace2, + }); err != nil { t.Fatalf("SaveVSchema(ks1) failed: %v", err) } if err := ts.RebuildSrvVSchema(ctx, []string{"cell1"}); err != nil { @@ -182,7 +189,10 @@ func TestRebuildVSchema(t *testing.T) { wanted4.RoutingRules = rr // Delete a keyspace, checks vschema entry in map goes away. - if err := ts.SaveVSchema(ctx, "ks2", &vschemapb.Keyspace{}); err != nil { + if err := ts.SaveVSchema(ctx, &topo.KeyspaceVSchemaInfo{ + Name: "ks2", + Keyspace: &vschemapb.Keyspace{}, + }); err != nil { t.Fatalf("SaveVSchema(ks1) failed: %v", err) } if err := ts.DeleteKeyspace(ctx, "ks2"); err != nil { diff --git a/go/vt/topo/vschema.go b/go/vt/topo/vschema.go index 21192e1aacb..9fbf646a74e 100644 --- a/go/vt/topo/vschema.go +++ b/go/vt/topo/vschema.go @@ -20,34 +20,58 @@ import ( "context" "path" - "google.golang.org/protobuf/proto" - "vitess.io/vitess/go/vt/log" "vitess.io/vitess/go/vt/vterrors" vschemapb "vitess.io/vitess/go/vt/proto/vschema" ) -// SaveVSchema saves a Vschema. A valid Vschema should be passed in. It does not verify its correctness. -// If the VSchema is empty, just remove it. -func (ts *Server) SaveVSchema(ctx context.Context, keyspace string, vschema *vschemapb.Keyspace) error { +// KeyspaceVSchemaInfo wraps a vschemapb.Keyspace and is a meta +// struct that contains metadata to give the data more context +// and convenience. This is the main way we interact with a +// keyspace's vschema. +type KeyspaceVSchemaInfo struct { + Name string + *vschemapb.Keyspace + version Version +} + +func (k *KeyspaceVSchemaInfo) CloneVT() *KeyspaceVSchemaInfo { + if k == nil { + return (*KeyspaceVSchemaInfo)(nil) + } + kc := &KeyspaceVSchemaInfo{ + Name: k.Name, + version: Version(k.version), + } + if k.Keyspace != nil { + kc.Keyspace = k.Keyspace.CloneVT() + } + return kc +} + +// SaveVSchema saves a Vschema. A valid Vschema should be passed in. +// It does not verify its correctness beyond marshaling it. +func (ts *Server) SaveVSchema(ctx context.Context, ksvs *KeyspaceVSchemaInfo) error { if err := ctx.Err(); err != nil { return err } - nodePath := path.Join(KeyspacesPath, keyspace, VSchemaFile) - data, err := vschema.MarshalVT() + nodePath := path.Join(KeyspacesPath, ksvs.Name, VSchemaFile) + data, err := ksvs.MarshalVT() if err != nil { return err } - _, err = ts.globalCell.Update(ctx, nodePath, data, nil) + version, err := ts.globalCell.Update(ctx, nodePath, data, ksvs.version) if err != nil { - log.Errorf("failed to update vschema for keyspace %s: %v", keyspace, err) - } else { - log.Infof("successfully updated vschema for keyspace %s: %+v", keyspace, vschema) + log.Errorf("failed to update vschema for keyspace %s: %v", ksvs.Name, err) + return err } - return err + ksvs.version = version + log.Infof("successfully updated vschema for keyspace %s: %+v", ksvs.Name, ksvs.Keyspace) + + return nil } // DeleteVSchema delete the keyspace if it exists @@ -61,35 +85,43 @@ func (ts *Server) DeleteVSchema(ctx context.Context, keyspace string) error { } // GetVSchema fetches the vschema from the topo. -func (ts *Server) GetVSchema(ctx context.Context, keyspace string) (*vschemapb.Keyspace, error) { +func (ts *Server) GetVSchema(ctx context.Context, keyspace string) (*KeyspaceVSchemaInfo, error) { if err := ctx.Err(); err != nil { return nil, err } nodePath := path.Join(KeyspacesPath, keyspace, VSchemaFile) - data, _, err := ts.globalCell.Get(ctx, nodePath) + data, version, err := ts.globalCell.Get(ctx, nodePath) if err != nil { return nil, err } - var vs vschemapb.Keyspace - err = proto.Unmarshal(data, &vs) + + vs := &vschemapb.Keyspace{} + err = vs.UnmarshalVT(data) if err != nil { return nil, vterrors.Wrapf(err, "bad vschema data: %q", data) } - return &vs, nil + return &KeyspaceVSchemaInfo{ + Name: keyspace, + Keyspace: vs, + version: version, + }, nil } // EnsureVSchema makes sure that a vschema is present for this keyspace or creates a blank one if it is missing func (ts *Server) EnsureVSchema(ctx context.Context, keyspace string) error { - vschema, err := ts.GetVSchema(ctx, keyspace) + ksvs, err := ts.GetVSchema(ctx, keyspace) if err != nil && !IsErrType(err, NoNode) { log.Infof("error in getting vschema for keyspace %s: %v", keyspace, err) } - if vschema == nil || IsErrType(err, NoNode) { - err = ts.SaveVSchema(ctx, keyspace, &vschemapb.Keyspace{ - Sharded: false, - Vindexes: make(map[string]*vschemapb.Vindex), - Tables: make(map[string]*vschemapb.Table), + if ksvs == nil || ksvs.Keyspace == nil || IsErrType(err, NoNode) { + err = ts.SaveVSchema(ctx, &KeyspaceVSchemaInfo{ + Name: keyspace, + Keyspace: &vschemapb.Keyspace{ + Sharded: false, + Vindexes: make(map[string]*vschemapb.Vindex), + Tables: make(map[string]*vschemapb.Table), + }, }) if err != nil { log.Errorf("could not create blank vschema: %v", err) diff --git a/go/vt/topotools/vschema_ddl.go b/go/vt/topotools/vschema_ddl.go index 3c6f5bced3c..950ea9ed2e6 100644 --- a/go/vt/topotools/vschema_ddl.go +++ b/go/vt/topotools/vschema_ddl.go @@ -17,9 +17,11 @@ limitations under the License. package topotools import ( + "context" "reflect" "vitess.io/vitess/go/vt/sqlparser" + "vitess.io/vitess/go/vt/topo" "vitess.io/vitess/go/vt/vterrors" vschemapb "vitess.io/vitess/go/vt/proto/vschema" @@ -28,55 +30,67 @@ import ( // ApplyVSchemaDDL applies the given DDL statement to the vschema // keyspace definition and returns the modified keyspace object. -func ApplyVSchemaDDL(ksName string, ks *vschemapb.Keyspace, alterVschema *sqlparser.AlterVschema) (*vschemapb.Keyspace, error) { - if ks == nil { - ks = new(vschemapb.Keyspace) +func ApplyVSchemaDDL(ctx context.Context, ksName string, topoServer *topo.Server, alterVschema *sqlparser.AlterVschema) (*topo.KeyspaceVSchemaInfo, error) { + if topoServer == nil { + return nil, vterrors.Errorf(vtrpcpb.Code_FAILED_PRECONDITION, "cannot update VSchema as the topology server connection is read-only") + } + // Get the most recent version, which we'll then update. + ksvs, err := topoServer.GetVSchema(ctx, ksName) + if err != nil { + if topo.IsErrType(err, topo.NoNode) { + ksvs = &topo.KeyspaceVSchemaInfo{ + Name: ksName, + Keyspace: &vschemapb.Keyspace{}, + } + } else { + return nil, vterrors.Wrapf(err, "failed to get the current VSchema for the %s keyspace", ksName) + } } - if ks.Tables == nil { - ks.Tables = map[string]*vschemapb.Table{} + if ksvs.Tables == nil { + ksvs.Tables = map[string]*vschemapb.Table{} } - if ks.Vindexes == nil { - ks.Vindexes = map[string]*vschemapb.Vindex{} + if ksvs.Vindexes == nil { + ksvs.Vindexes = map[string]*vschemapb.Vindex{} } var tableName string var table *vschemapb.Table if !alterVschema.Table.IsEmpty() { tableName = alterVschema.Table.Name.String() - table = ks.Tables[tableName] + table = ksvs.Tables[tableName] } switch alterVschema.Action { case sqlparser.CreateVindexDDLAction: name := alterVschema.VindexSpec.Name.String() - if _, ok := ks.Vindexes[name]; ok { + if _, ok := ksvs.Vindexes[name]; ok { return nil, vterrors.Errorf(vtrpcpb.Code_INTERNAL, "vindex %s already exists in keyspace %s", name, ksName) } // Make sure the keyspace has the sharded bit set to true // if this is the first vindex defined in the keyspace. - if len(ks.Vindexes) == 0 { - ks.Sharded = true + if len(ksvs.Vindexes) == 0 { + ksvs.Sharded = true } owner, params := alterVschema.VindexSpec.ParseParams() - ks.Vindexes[name] = &vschemapb.Vindex{ + ksvs.Vindexes[name] = &vschemapb.Vindex{ Type: alterVschema.VindexSpec.Type.String(), Params: params, Owner: owner, } - return ks, nil + return ksvs, nil case sqlparser.DropVindexDDLAction: name := alterVschema.VindexSpec.Name.String() - if _, ok := ks.Vindexes[name]; !ok { + if _, ok := ksvs.Vindexes[name]; !ok { return nil, vterrors.Errorf(vtrpcpb.Code_INTERNAL, "vindex %s does not exists in keyspace %s", name, ksName) } - for tableName, table := range ks.Tables { + for tableName, table := range ksvs.Tables { // Make sure there isn't a vindex with the same name left on the table. for _, vindex := range table.ColumnVindexes { if vindex.Name == name { @@ -85,33 +99,33 @@ func ApplyVSchemaDDL(ksName string, ks *vschemapb.Keyspace, alterVschema *sqlpar } } - delete(ks.Vindexes, name) + delete(ksvs.Vindexes, name) - return ks, nil + return ksvs, nil case sqlparser.AddVschemaTableDDLAction: - if ks.Sharded { + if ksvs.Sharded { return nil, vterrors.Errorf(vtrpcpb.Code_INTERNAL, "add vschema table: unsupported on sharded keyspace %s", ksName) } name := alterVschema.Table.Name.String() - if _, ok := ks.Tables[name]; ok { + if _, ok := ksvs.Tables[name]; ok { return nil, vterrors.Errorf(vtrpcpb.Code_INTERNAL, "vschema already contains table %s in keyspace %s", name, ksName) } - ks.Tables[name] = &vschemapb.Table{} + ksvs.Tables[name] = &vschemapb.Table{} - return ks, nil + return ksvs, nil case sqlparser.DropVschemaTableDDLAction: name := alterVschema.Table.Name.String() - if _, ok := ks.Tables[name]; !ok { + if _, ok := ksvs.Tables[name]; !ok { return nil, vterrors.Errorf(vtrpcpb.Code_INTERNAL, "vschema does not contain table %s in keyspace %s", name, ksName) } - delete(ks.Tables, name) + delete(ksvs.Tables, name) - return ks, nil + return ksvs, nil case sqlparser.AddColVindexDDLAction: // Support two cases: @@ -126,7 +140,7 @@ func ApplyVSchemaDDL(ksName string, ks *vschemapb.Keyspace, alterVschema *sqlpar name := spec.Name.String() if spec.Type.NotEmpty() { owner, params := spec.ParseParams() - if vindex, ok := ks.Vindexes[name]; ok { + if vindex, ok := ksvs.Vindexes[name]; ok { if vindex.Type != spec.Type.String() { return nil, vterrors.Errorf(vtrpcpb.Code_INTERNAL, "vindex %s defined with type %s not %s", name, vindex.Type, spec.Type.String()) } @@ -139,17 +153,17 @@ func ApplyVSchemaDDL(ksName string, ks *vschemapb.Keyspace, alterVschema *sqlpar } else { // Make sure the keyspace has the sharded bit set to true // if this is the first vindex defined in the keyspace. - if len(ks.Vindexes) == 0 { - ks.Sharded = true + if len(ksvs.Vindexes) == 0 { + ksvs.Sharded = true } - ks.Vindexes[name] = &vschemapb.Vindex{ + ksvs.Vindexes[name] = &vschemapb.Vindex{ Type: spec.Type.String(), Params: params, Owner: owner, } } } else { - if _, ok := ks.Vindexes[name]; !ok { + if _, ok := ksvs.Vindexes[name]; !ok { return nil, vterrors.Errorf(vtrpcpb.Code_INTERNAL, "vindex %s does not exist in keyspace %s", name, ksName) } } @@ -178,9 +192,9 @@ func ApplyVSchemaDDL(ksName string, ks *vschemapb.Keyspace, alterVschema *sqlpar Name: name, Columns: columns, }) - ks.Tables[tableName] = table + ksvs.Tables[tableName] = table - return ks, nil + return ksvs, nil case sqlparser.DropColVindexDDLAction: spec := alterVschema.VindexSpec @@ -193,44 +207,44 @@ func ApplyVSchemaDDL(ksName string, ks *vschemapb.Keyspace, alterVschema *sqlpar if colVindex.Name == name { table.ColumnVindexes = append(table.ColumnVindexes[:i], table.ColumnVindexes[i+1:]...) if len(table.ColumnVindexes) == 0 { - delete(ks.Tables, tableName) + delete(ksvs.Tables, tableName) } - return ks, nil + return ksvs, nil } } return nil, vterrors.Errorf(vtrpcpb.Code_INTERNAL, "vindex %s not defined in table %s.%s", name, ksName, tableName) case sqlparser.AddSequenceDDLAction: - if ks.Sharded { + if ksvs.Sharded { return nil, vterrors.Errorf(vtrpcpb.Code_INTERNAL, "add sequence table: unsupported on sharded keyspace %s", ksName) } name := alterVschema.Table.Name.String() - if _, ok := ks.Tables[name]; ok { + if _, ok := ksvs.Tables[name]; ok { return nil, vterrors.Errorf(vtrpcpb.Code_INTERNAL, "vschema already contains sequence %s in keyspace %s", name, ksName) } - ks.Tables[name] = &vschemapb.Table{Type: "sequence"} + ksvs.Tables[name] = &vschemapb.Table{Type: "sequence"} - return ks, nil + return ksvs, nil case sqlparser.DropSequenceDDLAction: - if ks.Sharded { + if ksvs.Sharded { return nil, vterrors.Errorf(vtrpcpb.Code_INTERNAL, "drop sequence table: unsupported on sharded keyspace %s", ksName) } name := alterVschema.Table.Name.String() - if _, ok := ks.Tables[name]; !ok { + if _, ok := ksvs.Tables[name]; !ok { return nil, vterrors.Errorf(vtrpcpb.Code_INTERNAL, "vschema does not contain sequence %s in keyspace %s", name, ksName) } - delete(ks.Tables, name) + delete(ksvs.Tables, name) - return ks, nil + return ksvs, nil case sqlparser.AddAutoIncDDLAction: name := alterVschema.Table.Name.String() - table := ks.Tables[name] + table := ksvs.Tables[name] if table == nil { return nil, vterrors.Errorf(vtrpcpb.Code_INTERNAL, "vschema does not contain table %s in keyspace %s", name, ksName) } @@ -244,11 +258,11 @@ func ApplyVSchemaDDL(ksName string, ks *vschemapb.Keyspace, alterVschema *sqlpar Sequence: sqlparser.String(alterVschema.AutoIncSpec.Sequence), } - return ks, nil + return ksvs, nil case sqlparser.DropAutoIncDDLAction: name := alterVschema.Table.Name.String() - table := ks.Tables[name] + table := ksvs.Tables[name] if table == nil { return nil, vterrors.Errorf(vtrpcpb.Code_INTERNAL, "vschema does not contain table %s in keyspace %s", name, ksName) } @@ -259,7 +273,7 @@ func ApplyVSchemaDDL(ksName string, ks *vschemapb.Keyspace, alterVschema *sqlpar table.AutoIncrement = nil - return ks, nil + return ksvs, nil } return nil, vterrors.Errorf(vtrpcpb.Code_INTERNAL, "unexpected vindex ddl operation %s", alterVschema.Action.ToString()) diff --git a/go/vt/vtadmin/api.go b/go/vt/vtadmin/api.go index a54090bb044..1182d694e19 100644 --- a/go/vt/vtadmin/api.go +++ b/go/vt/vtadmin/api.go @@ -433,6 +433,7 @@ func (api *API) Handler() http.Handler { router.HandleFunc("/vdiff/{cluster_id}/show", httpAPI.Adapt(vtadminhttp.VDiffShow)).Name("API.VDiffShow") router.HandleFunc("/vtctlds", httpAPI.Adapt(vtadminhttp.GetVtctlds)).Name("API.GetVtctlds") router.HandleFunc("/vtexplain", httpAPI.Adapt(vtadminhttp.VTExplain)).Name("API.VTExplain") + router.HandleFunc("/vexplain", httpAPI.Adapt(vtadminhttp.VExplain)).Name("API.VExplain") router.HandleFunc("/workflow/{cluster_id}/{keyspace}/{name}", httpAPI.Adapt(vtadminhttp.GetWorkflow)).Name("API.GetWorkflow") router.HandleFunc("/workflows", httpAPI.Adapt(vtadminhttp.GetWorkflows)).Name("API.GetWorkflows") router.HandleFunc("/workflow/{cluster_id}/{keyspace}/{name}/status", httpAPI.Adapt(vtadminhttp.GetWorkflowStatus)).Name("API.GetWorkflowStatus") @@ -2616,6 +2617,59 @@ func (api *API) ValidateVersionShard(ctx context.Context, req *vtadminpb.Validat return res, nil } +// VExplain is part of the vtadminpb.VTAdminServer interface. +func (api *API) VExplain(ctx context.Context, req *vtadminpb.VExplainRequest) (*vtadminpb.VExplainResponse, error) { + span, ctx := trace.NewSpan(ctx, "API.VExplain") + defer span.Finish() + + if req.ClusterId == "" { + return nil, fmt.Errorf("%w: clusterID is required", errors.ErrInvalidRequest) + } + + if req.Keyspace == "" { + return nil, fmt.Errorf("%w: keyspace name is required", errors.ErrInvalidRequest) + } + + if req.Sql == "" { + return nil, fmt.Errorf("%w: SQL query is required", errors.ErrInvalidRequest) + } + + c, err := api.getClusterForRequest(req.ClusterId) + if err != nil { + return nil, err + } + + if !api.authz.IsAuthorized(ctx, c.ID, rbac.VExplainResource, rbac.GetAction) { + return nil, nil + } + + // Parser with default options. New() itself initializes with default MySQL version. + parser, err := sqlparser.New(sqlparser.Options{ + TruncateUILen: 512, + TruncateErrLen: 0, + }) + if err != nil { + return nil, err + } + + stmt, err := parser.Parse(req.GetSql()) + if err != nil { + return nil, err + } + + if _, ok := stmt.(*sqlparser.VExplainStmt); !ok { + return nil, vterrors.VT09017("Invalid VExplain statement") + } + + response, err := c.DB.VExplain(ctx, req.GetSql(), stmt.(*sqlparser.VExplainStmt)) + + if err != nil { + return nil, err + } + + return response, nil +} + // VTExplain is part of the vtadminpb.VTAdminServer interface. func (api *API) VTExplain(ctx context.Context, req *vtadminpb.VTExplainRequest) (*vtadminpb.VTExplainResponse, error) { // TODO (andrew): https://github.com/vitessio/vitess/issues/12161. diff --git a/go/vt/vtadmin/api_test.go b/go/vt/vtadmin/api_test.go index 82c744b95db..011acdf3e59 100644 --- a/go/vt/vtadmin/api_test.go +++ b/go/vt/vtadmin/api_test.go @@ -5136,6 +5136,186 @@ func TestVTExplain(t *testing.T) { } } +func TestVExplain(t *testing.T) { + tests := []struct { + name string + keyspaces []*vtctldatapb.Keyspace + shards []*vtctldatapb.Shard + srvVSchema *vschemapb.SrvVSchema + tabletSchemas map[string]*tabletmanagerdatapb.SchemaDefinition + tablets []*vtadminpb.Tablet + req *vtadminpb.VExplainRequest + expectedError error + }{ + { + name: "returns an error if cluster unspecified in request", + req: &vtadminpb.VExplainRequest{ + Keyspace: "commerce", + Sql: "vexplain all select * from customers", + }, + expectedError: vtadminerrors.ErrInvalidRequest, + }, + { + name: "returns an error if keyspace unspecified in request", + req: &vtadminpb.VExplainRequest{ + ClusterId: "c0", + Sql: "vexplain all select * from customers", + }, + expectedError: vtadminerrors.ErrInvalidRequest, + }, + { + name: "returns an error if SQL unspecified in request", + req: &vtadminpb.VExplainRequest{ + ClusterId: "c0", + Keyspace: "commerce", + }, + expectedError: vtadminerrors.ErrInvalidRequest, + }, + { + name: "runs VExplain given a valid request in a valid topology", + keyspaces: []*vtctldatapb.Keyspace{ + { + Name: "commerce", + Keyspace: &topodatapb.Keyspace{}, + }, + }, + shards: []*vtctldatapb.Shard{ + { + Name: "-", + Keyspace: "commerce", + }, + }, + srvVSchema: &vschemapb.SrvVSchema{ + Keyspaces: map[string]*vschemapb.Keyspace{ + "commerce": { + Sharded: false, + Tables: map[string]*vschemapb.Table{ + "customers": {}, + }, + }, + }, + RoutingRules: &vschemapb.RoutingRules{ + Rules: []*vschemapb.RoutingRule{}, + }, + }, + tabletSchemas: map[string]*tabletmanagerdatapb.SchemaDefinition{ + "c0_cell1-0000000100": { + DatabaseSchema: "CREATE DATABASE commerce", + TableDefinitions: []*tabletmanagerdatapb.TableDefinition{ + { + Name: "t1", + Schema: `CREATE TABLE customers (id int(11) not null,PRIMARY KEY (id));`, + Type: "BASE", + Columns: []string{"id"}, + DataLength: 100, + RowCount: 50, + Fields: []*querypb.Field{ + { + Name: "id", + Type: querypb.Type_INT32, + }, + }, + }, + }, + }, + }, + tablets: []*vtadminpb.Tablet{ + { + Cluster: &vtadminpb.Cluster{ + Id: "c0", + Name: "cluster0", + }, + State: vtadminpb.Tablet_SERVING, + Tablet: &topodatapb.Tablet{ + Alias: &topodatapb.TabletAlias{ + Uid: 100, + Cell: "c0_cell1", + }, + Hostname: "tablet-cell1-a", + Keyspace: "commerce", + Shard: "-", + Type: topodatapb.TabletType_REPLICA, + }, + }, + }, + req: &vtadminpb.VExplainRequest{ + ClusterId: "c0", + Keyspace: "commerce", + Sql: "vexplain all select * from customers", + }, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + ctx, cancel := context.WithCancel(context.Background()) + defer cancel() + toposerver := memorytopo.NewServer(ctx, "c0_cell1") + + tmc := testutil.TabletManagerClient{ + GetSchemaResults: map[string]struct { + Schema *tabletmanagerdatapb.SchemaDefinition + Error error + }{}, + } + + vtctldserver := testutil.NewVtctldServerWithTabletManagerClient(t, toposerver, &tmc, func(ts *topo.Server) vtctlservicepb.VtctldServer { + return grpcvtctldserver.NewVtctldServer(vtenv.NewTestEnv(), ts) + }) + + testutil.WithTestServer(ctx, t, vtctldserver, func(t *testing.T, vtctldClient vtctldclient.VtctldClient) { + if tt.srvVSchema != nil { + err := toposerver.UpdateSrvVSchema(ctx, "c0_cell1", tt.srvVSchema) + require.NoError(t, err) + } + testutil.AddKeyspaces(ctx, t, toposerver, tt.keyspaces...) + testutil.AddShards(ctx, t, toposerver, tt.shards...) + + for _, tablet := range tt.tablets { + testutil.AddTablet(ctx, t, toposerver, tablet.Tablet, nil) + + // Adds each SchemaDefinition to the fake TabletManagerClient, or nil + // if there are no schemas for that tablet. (All tablet aliases must + // exist in the map. Otherwise, TabletManagerClient will return an error when + // looking up the schema with tablet alias that doesn't exist.) + alias := topoproto.TabletAliasString(tablet.Tablet.Alias) + tmc.GetSchemaResults[alias] = struct { + Schema *tabletmanagerdatapb.SchemaDefinition + Error error + }{ + Schema: tt.tabletSchemas[alias], + Error: nil, + } + } + + clusters := []*cluster.Cluster{ + vtadmintestutil.BuildCluster(t, vtadmintestutil.TestClusterConfig{ + Cluster: &vtadminpb.Cluster{ + Id: "c0", + Name: "cluster0", + }, + VtctldClient: vtctldClient, + Tablets: tt.tablets, + }), + } + + api := NewAPI(vtenv.NewTestEnv(), clusters, Options{}) + resp, err := api.VExplain(ctx, tt.req) + + if tt.expectedError != nil { + assert.True(t, errors.Is(err, tt.expectedError), "expected error type %w does not match actual error type %w", err, tt.expectedError) + } else { + require.NoError(t, err) + + // We don't particularly care to test the contents of the VExplain response, + // just that it exists. + assert.NotEmpty(t, resp.Response) + } + }) + }) + } +} + type ServeHTTPVtctldResponse struct { Result ServeHTTPVtctldResult `json:"result"` Ok bool `json:"ok"` diff --git a/go/vt/vtadmin/http/vexplain.go b/go/vt/vtadmin/http/vexplain.go new file mode 100644 index 00000000000..32b705e062a --- /dev/null +++ b/go/vt/vtadmin/http/vexplain.go @@ -0,0 +1,34 @@ +/* +Copyright 2025 The Vitess Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package http + +import ( + "context" + + vtadminpb "vitess.io/vitess/go/vt/proto/vtadmin" +) + +// VExplain implements the http wrapper for /vexplain?cluster_id=&keyspace=&sql= +func VExplain(ctx context.Context, r Request, api *API) *JSONResponse { + query := r.URL.Query() + res, err := api.server.VExplain(ctx, &vtadminpb.VExplainRequest{ + ClusterId: query.Get("cluster_id"), + Keyspace: query.Get("keyspace"), + Sql: query.Get("sql"), + }) + return NewJSONResponse(res, err) +} diff --git a/go/vt/vtadmin/rbac/rbac.go b/go/vt/vtadmin/rbac/rbac.go index 038db46fbd5..1184b57f7ab 100644 --- a/go/vt/vtadmin/rbac/rbac.go +++ b/go/vt/vtadmin/rbac/rbac.go @@ -136,5 +136,7 @@ const ( VTExplainResource Resource = "VTExplain" + VExplainResource Resource = "VExplain" + TabletFullStatusResource Resource = "TabletFullStatus" ) diff --git a/go/vt/vtadmin/vtsql/fakevtsql/conn.go b/go/vt/vtadmin/vtsql/fakevtsql/conn.go index af9ac44ad0d..62e3ba7277a 100644 --- a/go/vt/vtadmin/vtsql/fakevtsql/conn.go +++ b/go/vt/vtadmin/vtsql/fakevtsql/conn.go @@ -90,6 +90,17 @@ func (c *conn) QueryContext(ctx context.Context, query string, args []driver.Nam }) } + return &rows{ + cols: columns, + vals: vals, + pos: 0, + closed: false, + }, nil + case "vexplain all select * from customers": + columns := []string{"VExplain"} + vals := [][]any{} + vals = append(vals, []any{"{'Table' : 'customer, 'TestPlan' : 'TestPlan'}"}) + return &rows{ cols: columns, vals: vals, diff --git a/go/vt/vtadmin/vtsql/vtsql.go b/go/vt/vtadmin/vtsql/vtsql.go index 9f23eb70443..d923730192a 100644 --- a/go/vt/vtadmin/vtsql/vtsql.go +++ b/go/vt/vtadmin/vtsql/vtsql.go @@ -17,10 +17,13 @@ limitations under the License. package vtsql import ( + "bytes" "context" "database/sql" "fmt" + "strings" "sync" + "text/tabwriter" "time" "google.golang.org/grpc/credentials/insecure" @@ -31,6 +34,7 @@ import ( "vitess.io/vitess/go/trace" "vitess.io/vitess/go/vt/callerid" "vitess.io/vitess/go/vt/log" + "vitess.io/vitess/go/vt/sqlparser" "vitess.io/vitess/go/vt/vitessdriver" "vitess.io/vitess/go/vt/vtadmin/cluster/resolver" "vitess.io/vitess/go/vt/vtadmin/debug" @@ -45,6 +49,9 @@ type DB interface { // ShowTablets executes `SHOW vitess_tablets` and returns the result. ShowTablets(ctx context.Context) (*sql.Rows, error) + // VExplain executes query - `vexplain [ALL|PLAN|QUERIES|TRACE|KEYS] query` and returns the results + VExplain(ctx context.Context, query string, vexplainStmt *sqlparser.VExplainStmt) (*vtadminpb.VExplainResponse, error) + // Ping behaves like (*sql.DB).Ping. Ping() error // PingContext behaves like (*sql.DB).PingContext. @@ -174,6 +181,73 @@ func (vtgate *VTGateProxy) ShowTablets(ctx context.Context) (*sql.Rows, error) { return vtgate.conn.QueryContext(vtgate.getQueryContext(ctx), "SHOW vitess_tablets") } +// VExplain is part of the DB interface. +func (vtgate *VTGateProxy) VExplain(ctx context.Context, query string, vexplainStmt *sqlparser.VExplainStmt) (*vtadminpb.VExplainResponse, error) { + span, ctx := trace.NewSpan(ctx, "VTGateProxy.VExplain") + defer span.Finish() + + vtadminproto.AnnotateClusterSpan(vtgate.cluster, span) + + rows, err := vtgate.conn.QueryContext(vtgate.getQueryContext(ctx), query) + + if err != nil { + return nil, err + } + switch vexplainStmt.Type { + case sqlparser.QueriesVExplainType: + return convertVExplainQueriesResultToString(rows) + case sqlparser.AllVExplainType, sqlparser.TraceVExplainType, sqlparser.PlanVExplainType, sqlparser.KeysVExplainType: + return convertVExplainResultToString(rows) + default: + return nil, nil + } +} + +func convertVExplainResultToString(rows *sql.Rows) (*vtadminpb.VExplainResponse, error) { + var queryPlan string + for rows.Next() { + if err := rows.Scan(&queryPlan); err != nil { + return nil, err + } + } + return &vtadminpb.VExplainResponse{ + Response: queryPlan, + }, nil +} + +func convertVExplainQueriesResultToString(rows *sql.Rows) (*vtadminpb.VExplainResponse, error) { + var buf bytes.Buffer + w := tabwriter.NewWriter(&buf, 0, 0, 0, ' ', tabwriter.AlignRight) + + sep := []byte("|") + newLine := []byte("\n") + cols, _ := rows.Columns() + + if _, err := w.Write([]byte(strings.Join(cols, string(sep)) + string(newLine))); err != nil { + return nil, err + } + + row := make([][]byte, len(cols)) + rowPtr := make([]any, len(cols)) + for i := range row { + rowPtr[i] = &row[i] + } + + for rows.Next() { + if err := rows.Scan(rowPtr...); err != nil { + return nil, err + } + if _, err := w.Write(append(bytes.Join(row, sep), newLine...)); err != nil { + return nil, err + } + } + w.Flush() + + return &vtadminpb.VExplainResponse{ + Response: buf.String(), + }, nil +} + // Ping is part of the DB interface. func (vtgate *VTGateProxy) Ping() error { return vtgate.pingContext(context.Background()) diff --git a/go/vt/vtcombo/tablet_map.go b/go/vt/vtcombo/tablet_map.go index fc02409bd5f..e8c8935f989 100644 --- a/go/vt/vtcombo/tablet_map.go +++ b/go/vt/vtcombo/tablet_map.go @@ -410,7 +410,11 @@ func CreateKs( if err != nil { return 0, fmt.Errorf("BuildKeyspace(%v) failed: %v", keyspace, err) } - if err := ts.SaveVSchema(ctx, keyspace, formal); err != nil { + ksvs := &topo.KeyspaceVSchemaInfo{ + Name: keyspace, + Keyspace: formal, + } + if err := ts.SaveVSchema(ctx, ksvs); err != nil { return 0, fmt.Errorf("SaveVSchema(%v) failed: %v", keyspace, err) } } else { @@ -1001,7 +1005,7 @@ func (itmc *internalTabletManagerClient) PopulateReparentJournal(context.Context } // ReadReparentJournalInfo is part of the tmclient.TabletManagerClient interface. -func (itmc *internalTabletManagerClient) ReadReparentJournalInfo(ctx context.Context, tablet *topodatapb.Tablet) (int, error) { +func (itmc *internalTabletManagerClient) ReadReparentJournalInfo(ctx context.Context, tablet *topodatapb.Tablet) (int32, error) { return 0, fmt.Errorf("not implemented in vtcombo") } diff --git a/go/vt/vtctl/grpcvtctldserver/server.go b/go/vt/vtctl/grpcvtctldserver/server.go index 55b1beab37e..ec9fd80db89 100644 --- a/go/vt/vtctl/grpcvtctldserver/server.go +++ b/go/vt/vtctl/grpcvtctldserver/server.go @@ -22,6 +22,7 @@ import ( "errors" "fmt" "io" + "math" "net/http" "path/filepath" "runtime/debug" @@ -339,7 +340,9 @@ func (s *VtctldServer) ApplyVSchema(ctx context.Context, req *vtctldatapb.ApplyV return nil, err } - var vs *vschemapb.Keyspace + ksvs := &topo.KeyspaceVSchemaInfo{ + Name: req.Keyspace, + } if req.Sql != "" { span.Annotate("sql_mode", true) @@ -356,29 +359,23 @@ func (s *VtctldServer) ApplyVSchema(ctx context.Context, req *vtctldatapb.ApplyV return nil, err } - vs, err = s.ts.GetVSchema(ctx, req.Keyspace) - if err != nil && !topo.IsErrType(err, topo.NoNode) { - err = vterrors.Wrapf(err, "GetVSchema(%s)", req.Keyspace) - return nil, err - } // otherwise, we keep the empty vschema object from above - - vs, err = topotools.ApplyVSchemaDDL(req.Keyspace, vs, ddl) + ksvs, err = topotools.ApplyVSchemaDDL(ctx, req.Keyspace, s.ts, ddl) if err != nil { - err = vterrors.Wrapf(err, "ApplyVSchemaDDL(%s,%v,%v)", req.Keyspace, vs, ddl) + err = vterrors.Wrapf(err, "ApplyVSchemaDDL(%s,%v,%v)", req.Keyspace, ksvs, ddl) return nil, err } } else { // "jsonMode" span.Annotate("sql_mode", false) - vs = req.VSchema + ksvs.Keyspace = req.VSchema } - ksVs, err := vindexes.BuildKeyspace(vs, s.ws.SQLParser()) + ksVs, err := vindexes.BuildKeyspace(ksvs.Keyspace, s.ws.SQLParser()) if err != nil { err = vterrors.Wrapf(err, "BuildKeyspace(%s)", req.Keyspace) return nil, err } response := &vtctldatapb.ApplyVSchemaResponse{ - VSchema: vs, + VSchema: ksvs.Keyspace, UnknownVindexParams: make(map[string]*vtctldatapb.ApplyVSchemaResponse_ParamList), } @@ -410,7 +407,7 @@ func (s *VtctldServer) ApplyVSchema(ctx context.Context, req *vtctldatapb.ApplyV return response, err } - if err = s.ts.SaveVSchema(ctx, req.Keyspace, vs); err != nil { + if err = s.ts.SaveVSchema(ctx, ksvs); err != nil { err = vterrors.Wrapf(err, "SaveVSchema(%s, %v)", req.Keyspace, req.VSchema) return nil, err } @@ -426,7 +423,7 @@ func (s *VtctldServer) ApplyVSchema(ctx context.Context, req *vtctldatapb.ApplyV err = vterrors.Wrapf(err, "GetVSchema(%s)", req.Keyspace) return nil, err } - response.VSchema = updatedVS + response.VSchema = updatedVS.Keyspace return response, nil } @@ -957,28 +954,37 @@ func (s *VtctldServer) CreateKeyspace(ctx context.Context, req *vtctldatapb.Crea } if req.Type == topodatapb.KeyspaceType_SNAPSHOT { - var vs *vschemapb.Keyspace - vs, err = s.ts.GetVSchema(ctx, req.BaseKeyspace) + bksvs, err := s.ts.GetVSchema(ctx, req.BaseKeyspace) if err != nil { log.Infof("error from GetVSchema(%v) = %v", req.BaseKeyspace, err) if topo.IsErrType(err, topo.NoNode) { log.Infof("base keyspace %v does not exist; continuing with bare, unsharded vschema", req.BaseKeyspace) - vs = &vschemapb.Keyspace{ - Sharded: false, - Tables: map[string]*vschemapb.Table{}, - Vindexes: map[string]*vschemapb.Vindex{}, + bksvs = &topo.KeyspaceVSchemaInfo{ + Name: req.Name, + Keyspace: &vschemapb.Keyspace{ + Sharded: false, + Tables: map[string]*vschemapb.Table{}, + Vindexes: map[string]*vschemapb.Vindex{}, + }, } } else { return nil, err } } + // We don't want to clone the base keyspace's key version + // so we do NOT call bksvs.CloneVT() here. We instead only + // clone the vschemapb.Keyspace field for the new snapshot + // keyspace. + sksvs := &topo.KeyspaceVSchemaInfo{ + Name: req.Name, + Keyspace: bksvs.Keyspace.CloneVT(), + } // SNAPSHOT keyspaces are excluded from global routing. - vs.RequireExplicitRouting = true + sksvs.RequireExplicitRouting = true - if err = s.ts.SaveVSchema(ctx, req.Name, vs); err != nil { - err = fmt.Errorf("SaveVSchema(%v) = %w", vs, err) - return nil, err + if err = s.ts.SaveVSchema(ctx, sksvs); err != nil { + return nil, fmt.Errorf("SaveVSchema(%v) = %w", sksvs, err) } } @@ -1504,11 +1510,17 @@ func (s *VtctldServer) GetBackups(ctx context.Context, req *vtctldatapb.GetBacku totalBackups := len(bhs) if req.Limit > 0 { + if int(req.Limit) < 0 { + return nil, fmt.Errorf("limit %v exceeds maximum allowed value %v", req.DetailedLimit, math.MaxInt) + } totalBackups = int(req.Limit) } totalDetailedBackups := len(bhs) if req.DetailedLimit > 0 { + if int(req.DetailedLimit) < 0 { + return nil, fmt.Errorf("detailed_limit %v exceeds maximum allowed value %v", req.DetailedLimit, math.MaxInt) + } totalDetailedBackups = int(req.DetailedLimit) } @@ -2679,13 +2691,13 @@ func (s *VtctldServer) GetVSchema(ctx context.Context, req *vtctldatapb.GetVSche span.Annotate("keyspace", req.Keyspace) - vschema, err := s.ts.GetVSchema(ctx, req.Keyspace) + ks, err := s.ts.GetVSchema(ctx, req.Keyspace) if err != nil { return nil, err } return &vtctldatapb.GetVSchemaResponse{ - VSchema: vschema, + VSchema: ks.Keyspace, }, nil } diff --git a/go/vt/vtctl/grpcvtctldserver/server_test.go b/go/vt/vtctl/grpcvtctldserver/server_test.go index 31220918211..252efc7d894 100644 --- a/go/vt/vtctl/grpcvtctldserver/server_test.go +++ b/go/vt/vtctl/grpcvtctldserver/server_test.go @@ -28,6 +28,8 @@ import ( "testing" "time" + "google.golang.org/protobuf/proto" + _flag "vitess.io/vitess/go/internal/flag" "vitess.io/vitess/go/vt/vtctl/reparentutil" "vitess.io/vitess/go/vt/vtctl/reparentutil/policy" @@ -608,15 +610,18 @@ func TestApplyVSchema(t *testing.T) { }, }) - origVSchema := &vschemapb.Keyspace{ - Sharded: true, - Vindexes: map[string]*vschemapb.Vindex{ - "v1": { - Type: "hash", + origVSchema := &topo.KeyspaceVSchemaInfo{ + Name: tt.req.Keyspace, + Keyspace: &vschemapb.Keyspace{ + Sharded: true, + Vindexes: map[string]*vschemapb.Vindex{ + "v1": { + Type: "hash", + }, }, }, } - err := ts.SaveVSchema(ctx, tt.req.Keyspace, origVSchema) + err := ts.SaveVSchema(ctx, origVSchema) require.NoError(t, err) origSrvVSchema := &vschemapb.SrvVSchema{ @@ -2577,12 +2582,12 @@ func TestCreateKeyspace(t *testing.T) { tests := []struct { name string topo map[string]*topodatapb.Keyspace - vschemas map[string]*vschemapb.Keyspace + vschemas map[string]*topo.KeyspaceVSchemaInfo req *vtctldatapb.CreateKeyspaceRequest expected *vtctldatapb.CreateKeyspaceResponse shouldErr bool vschemaShouldExist bool - expectedVSchema *vschemapb.Keyspace + expectedVSchema *topo.KeyspaceVSchemaInfo }{ { name: "normal keyspace", @@ -2600,8 +2605,11 @@ func TestCreateKeyspace(t *testing.T) { }, }, vschemaShouldExist: true, - expectedVSchema: &vschemapb.Keyspace{ - Sharded: false, + expectedVSchema: &topo.KeyspaceVSchemaInfo{ + Name: "testkeyspace", + Keyspace: &vschemapb.Keyspace{ + Sharded: false, + }, }, shouldErr: false, }, @@ -2612,12 +2620,15 @@ func TestCreateKeyspace(t *testing.T) { KeyspaceType: topodatapb.KeyspaceType_NORMAL, }, }, - vschemas: map[string]*vschemapb.Keyspace{ + vschemas: map[string]*topo.KeyspaceVSchemaInfo{ "testkeyspace": { - Sharded: true, - Vindexes: map[string]*vschemapb.Vindex{ - "h1": { - Type: "hash", + Name: "testkeyspace", + Keyspace: &vschemapb.Keyspace{ + Sharded: true, + Vindexes: map[string]*vschemapb.Vindex{ + "h1": { + Type: "hash", + }, }, }, }, @@ -2643,14 +2654,17 @@ func TestCreateKeyspace(t *testing.T) { }, }, vschemaShouldExist: true, - expectedVSchema: &vschemapb.Keyspace{ - Sharded: true, - Vindexes: map[string]*vschemapb.Vindex{ - "h1": { - Type: "hash", + expectedVSchema: &topo.KeyspaceVSchemaInfo{ + Name: "testkeyspace", + Keyspace: &vschemapb.Keyspace{ + Sharded: true, + Vindexes: map[string]*vschemapb.Vindex{ + "h1": { + Type: "hash", + }, }, + RequireExplicitRouting: true, }, - RequireExplicitRouting: true, }, shouldErr: false, }, @@ -2696,9 +2710,12 @@ func TestCreateKeyspace(t *testing.T) { }, }, vschemaShouldExist: true, - expectedVSchema: &vschemapb.Keyspace{ - Sharded: false, - RequireExplicitRouting: true, + expectedVSchema: &topo.KeyspaceVSchemaInfo{ + Name: "testsnapshot", + Keyspace: &vschemapb.Keyspace{ + Sharded: false, + RequireExplicitRouting: true, + }, }, shouldErr: false, }, @@ -2748,8 +2765,11 @@ func TestCreateKeyspace(t *testing.T) { }, }, vschemaShouldExist: true, - expectedVSchema: &vschemapb.Keyspace{ - Sharded: false, + expectedVSchema: &topo.KeyspaceVSchemaInfo{ + Name: "testkeyspace", + Keyspace: &vschemapb.Keyspace{ + Sharded: false, + }, }, shouldErr: false, }, @@ -2772,7 +2792,8 @@ func TestCreateKeyspace(t *testing.T) { vschemaShouldExist: false, expectedVSchema: nil, shouldErr: false, - }, { + }, + { name: "keyspace with durability policy specified", topo: nil, req: &vtctldatapb.CreateKeyspaceRequest{ @@ -2790,8 +2811,11 @@ func TestCreateKeyspace(t *testing.T) { }, }, vschemaShouldExist: true, - expectedVSchema: &vschemapb.Keyspace{ - Sharded: false, + expectedVSchema: &topo.KeyspaceVSchemaInfo{ + Name: "testkeyspace", + Keyspace: &vschemapb.Keyspace{ + Sharded: false, + }, }, shouldErr: false, }, @@ -2820,7 +2844,7 @@ func TestCreateKeyspace(t *testing.T) { } for name, vs := range tt.vschemas { - require.NoError(t, ts.SaveVSchema(ctx, name, vs), "error in SaveVSchema(%v, %+v)", name, vs) + require.NoError(t, ts.SaveVSchema(ctx, vs), "error in SaveVSchema(%v, %+v)", name, vs) } // Create the keyspace and make some assertions @@ -2829,7 +2853,6 @@ func TestCreateKeyspace(t *testing.T) { assert.Error(t, err) return } - assert.NoError(t, err) testutil.AssertKeyspacesEqual(t, tt.expected.Keyspace, resp.Keyspace, "%+v\n%+v\n", tt.expected.Keyspace, resp.Keyspace) @@ -2858,7 +2881,7 @@ func TestCreateKeyspace(t *testing.T) { return } assert.NoError(t, err) - utils.MustMatch(t, tt.expectedVSchema, vs) + require.True(t, proto.Equal(tt.expectedVSchema, vs), "expected vschema for %s: %+v, got: %+v", tt.req.Name, tt.expectedVSchema, vs) }) } } @@ -8382,11 +8405,14 @@ func TestGetVSchema(t *testing.T) { }) t.Run("found", func(t *testing.T) { - err := ts.SaveVSchema(ctx, "testkeyspace", &vschemapb.Keyspace{ - Sharded: true, - Vindexes: map[string]*vschemapb.Vindex{ - "v1": { - Type: "hash", + err := ts.SaveVSchema(ctx, &topo.KeyspaceVSchemaInfo{ + Name: "testkeyspace", + Keyspace: &vschemapb.Keyspace{ + Sharded: true, + Vindexes: map[string]*vschemapb.Vindex{ + "v1": { + Type: "hash", + }, }, }, }) diff --git a/go/vt/vtctl/grpcvtctldserver/testutil/test_tmclient.go b/go/vt/vtctl/grpcvtctldserver/testutil/test_tmclient.go index 768fae5bff4..3b6af754d4e 100644 --- a/go/vt/vtctl/grpcvtctldserver/testutil/test_tmclient.go +++ b/go/vt/vtctl/grpcvtctldserver/testutil/test_tmclient.go @@ -295,7 +295,7 @@ type TabletManagerClient struct { // keyed by tablet alias PopulateReparentJournalResults map[string]error // keyed by tablet alias - ReadReparentJournalInfoResults map[string]int + ReadReparentJournalInfoResults map[string]int32 // keyed by tablet alias. PromoteReplicaDelays map[string]time.Duration // keyed by tablet alias. injects a sleep to the end of the function @@ -974,7 +974,7 @@ func (fake *TabletManagerClient) PopulateReparentJournal(ctx context.Context, ta } // ReadReparentJournalInfo is part of the tmclient.TabletManagerClient interface. -func (fake *TabletManagerClient) ReadReparentJournalInfo(ctx context.Context, tablet *topodatapb.Tablet) (int, error) { +func (fake *TabletManagerClient) ReadReparentJournalInfo(ctx context.Context, tablet *topodatapb.Tablet) (int32, error) { if fake.ReadReparentJournalInfoResults == nil { return 1, nil } diff --git a/go/vt/vtctl/reparentutil/emergency_reparenter.go b/go/vt/vtctl/reparentutil/emergency_reparenter.go index 5f7d3140c7b..513076b8f68 100644 --- a/go/vt/vtctl/reparentutil/emergency_reparenter.go +++ b/go/vt/vtctl/reparentutil/emergency_reparenter.go @@ -805,7 +805,7 @@ func (erp *EmergencyReparenter) findErrantGTIDs( } // Find the maximum length of the reparent journal among all the candidates. - var maxLen int + var maxLen int32 for _, length := range reparentJournalLen { maxLen = max(maxLen, length) } @@ -902,8 +902,8 @@ func (erp *EmergencyReparenter) gatherReparenJournalInfo( validCandidates map[string]replication.Position, tabletMap map[string]*topo.TabletInfo, waitReplicasTimeout time.Duration, -) (map[string]int, error) { - reparentJournalLen := make(map[string]int) +) (map[string]int32, error) { + reparentJournalLen := make(map[string]int32) var mu sync.Mutex errCh := make(chan concurrency.Error) defer close(errCh) @@ -916,7 +916,7 @@ func (erp *EmergencyReparenter) gatherReparenJournalInfo( for candidate := range validCandidates { go func(alias string) { var err error - var length int + var length int32 defer func() { errCh <- concurrency.Error{ Err: err, diff --git a/go/vt/vtctl/reparentutil/emergency_reparenter_test.go b/go/vt/vtctl/reparentutil/emergency_reparenter_test.go index 840df41d6e2..529c2a8f366 100644 --- a/go/vt/vtctl/reparentutil/emergency_reparenter_test.go +++ b/go/vt/vtctl/reparentutil/emergency_reparenter_test.go @@ -4637,7 +4637,7 @@ func TestEmergencyReparenterFindErrantGTIDs(t *testing.T) { { name: "Case 1a: No Errant GTIDs. This is the first reparent. A replica is the most advanced.", tmc: &testutil.TabletManagerClient{ - ReadReparentJournalInfoResults: map[string]int{ + ReadReparentJournalInfoResults: map[string]int32{ "zone1-0000000102": 1, "zone1-0000000103": 1, "zone1-0000000104": 1, @@ -4733,7 +4733,7 @@ func TestEmergencyReparenterFindErrantGTIDs(t *testing.T) { }, }, tmc: &testutil.TabletManagerClient{ - ReadReparentJournalInfoResults: map[string]int{ + ReadReparentJournalInfoResults: map[string]int32{ "zone1-0000000102": 2, "zone1-0000000103": 2, "zone1-0000000104": 2, @@ -4797,7 +4797,7 @@ func TestEmergencyReparenterFindErrantGTIDs(t *testing.T) { }, }, tmc: &testutil.TabletManagerClient{ - ReadReparentJournalInfoResults: map[string]int{ + ReadReparentJournalInfoResults: map[string]int32{ "zone1-0000000102": 2, "zone1-0000000103": 2, "zone1-0000000104": 2, @@ -4861,7 +4861,7 @@ func TestEmergencyReparenterFindErrantGTIDs(t *testing.T) { }, }, tmc: &testutil.TabletManagerClient{ - ReadReparentJournalInfoResults: map[string]int{ + ReadReparentJournalInfoResults: map[string]int32{ "zone1-0000000102": 3, "zone1-0000000103": 2, "zone1-0000000104": 1, @@ -4925,7 +4925,7 @@ func TestEmergencyReparenterFindErrantGTIDs(t *testing.T) { }, }, tmc: &testutil.TabletManagerClient{ - ReadReparentJournalInfoResults: map[string]int{ + ReadReparentJournalInfoResults: map[string]int32{ "zone1-0000000102": 2, "zone1-0000000103": 2, "zone1-0000000104": 1, @@ -4989,7 +4989,7 @@ func TestEmergencyReparenterFindErrantGTIDs(t *testing.T) { }, }, tmc: &testutil.TabletManagerClient{ - ReadReparentJournalInfoResults: map[string]int{ + ReadReparentJournalInfoResults: map[string]int32{ "zone1-0000000102": 2, "zone1-0000000103": 3, "zone1-0000000104": 3, @@ -5052,7 +5052,7 @@ func TestEmergencyReparenterFindErrantGTIDs(t *testing.T) { }, }, tmc: &testutil.TabletManagerClient{ - ReadReparentJournalInfoResults: map[string]int{ + ReadReparentJournalInfoResults: map[string]int32{ "zone1-0000000102": 2, "zone1-0000000103": 3, "zone1-0000000104": 2, @@ -5116,7 +5116,7 @@ func TestEmergencyReparenterFindErrantGTIDs(t *testing.T) { }, }, tmc: &testutil.TabletManagerClient{ - ReadReparentJournalInfoResults: map[string]int{ + ReadReparentJournalInfoResults: map[string]int32{ "zone1-0000000102": 2, "zone1-0000000103": 3, "zone1-0000000104": 2, @@ -5179,7 +5179,7 @@ func TestEmergencyReparenterFindErrantGTIDs(t *testing.T) { }, }, tmc: &testutil.TabletManagerClient{ - ReadReparentJournalInfoResults: map[string]int{ + ReadReparentJournalInfoResults: map[string]int32{ "zone1-0000000102": 3, "zone1-0000000103": 3, "zone1-0000000104": 3, @@ -5243,7 +5243,7 @@ func TestEmergencyReparenterFindErrantGTIDs(t *testing.T) { }, }, tmc: &testutil.TabletManagerClient{ - ReadReparentJournalInfoResults: map[string]int{ + ReadReparentJournalInfoResults: map[string]int32{ "zone1-0000000102": 3, "zone1-0000000103": 3, "zone1-0000000104": 2, @@ -5297,7 +5297,7 @@ func TestEmergencyReparenterFindErrantGTIDs(t *testing.T) { }, }, tmc: &testutil.TabletManagerClient{ - ReadReparentJournalInfoResults: map[string]int{ + ReadReparentJournalInfoResults: map[string]int32{ "zone1-0000000102": 3, "zone1-0000000103": 3, }, @@ -5354,7 +5354,7 @@ func TestEmergencyReparenterFindErrantGTIDs(t *testing.T) { }, }, tmc: &testutil.TabletManagerClient{ - ReadReparentJournalInfoResults: map[string]int{ + ReadReparentJournalInfoResults: map[string]int32{ "zone1-0000000102": 3, "zone1-0000000103": 3, "zone1-0000000104": 3, @@ -5418,7 +5418,7 @@ func TestEmergencyReparenterFindErrantGTIDs(t *testing.T) { }, }, tmc: &testutil.TabletManagerClient{ - ReadReparentJournalInfoResults: map[string]int{ + ReadReparentJournalInfoResults: map[string]int32{ "zone1-0000000102": 2, "zone1-0000000103": 3, "zone1-0000000104": 2, @@ -5481,7 +5481,7 @@ func TestEmergencyReparenterFindErrantGTIDs(t *testing.T) { }, }, tmc: &testutil.TabletManagerClient{ - ReadReparentJournalInfoResults: map[string]int{}, + ReadReparentJournalInfoResults: map[string]int32{}, }, statusMap: map[string]*replicationdatapb.StopReplicationStatus{ "zone1-0000000103": { diff --git a/go/vt/vtctl/vdiff_env_test.go b/go/vt/vtctl/vdiff_env_test.go index fdcf29367cc..9b2fade3204 100644 --- a/go/vt/vtctl/vdiff_env_test.go +++ b/go/vt/vtctl/vdiff_env_test.go @@ -128,7 +128,7 @@ func newTestVDiffEnv(t testing.TB, ctx context.Context, sourceShards, targetShar // But this is one statement per stream. env.tmc.setVRResults( primary.tablet, - fmt.Sprintf("update _vt.vreplication set state='Running', stop_pos='%s', message='synchronizing for vdiff' where id=%d", vdiffSourceGtid, j+1), + fmt.Sprintf("update _vt.vreplication set state='Running', stop_pos=%s, message='synchronizing for vdiff' where id=%d", sqltypes.EncodeStringSQL(vdiffSourceGtid), j+1), &sqltypes.Result{}, ) } diff --git a/go/vt/vtctl/vtctl.go b/go/vt/vtctl/vtctl.go index 0e5ed4ab891..975a8c98a5e 100644 --- a/go/vt/vtctl/vtctl.go +++ b/go/vt/vtctl/vtctl.go @@ -1886,31 +1886,35 @@ func commandCreateKeyspace(ctx context.Context, wr *wrangler.Wrangler, subFlags } if ktype == topodatapb.KeyspaceType_SNAPSHOT { - // copy vschema from base keyspace - vs, err := wr.TopoServer().GetVSchema(ctx, *baseKeyspace) + // Copy vschema from the base keyspace. + bksvs, err := wr.TopoServer().GetVSchema(ctx, *baseKeyspace) + ksvs := &topo.KeyspaceVSchemaInfo{ + Name: keyspace, + } if err != nil { wr.Logger().Infof("error from GetVSchema for base_keyspace: %v, %v", *baseKeyspace, err) if topo.IsErrType(err, topo.NoNode) { - vs = &vschemapb.Keyspace{ - Sharded: false, - Tables: make(map[string]*vschemapb.Table), - Vindexes: make(map[string]*vschemapb.Vindex), - RequireExplicitRouting: true, + // Create an empty vschema for the keyspace. + ksvs.Keyspace = &vschemapb.Keyspace{ + Sharded: false, + Tables: make(map[string]*vschemapb.Table), + Vindexes: make(map[string]*vschemapb.Vindex), } } else { return err } - } else { - // SNAPSHOT keyspaces are excluded from global routing. - vs.RequireExplicitRouting = true } - if err := wr.TopoServer().SaveVSchema(ctx, keyspace, vs); err != nil { - wr.Logger().Infof("error from SaveVSchema %v:%v", vs, err) + // Copy the vschema from the base keyspace to the new one. + ksvs.Keyspace = bksvs.Keyspace.CloneVT() + // SNAPSHOT keyspaces are excluded from global routing. + ksvs.RequireExplicitRouting = true + if err := wr.TopoServer().SaveVSchema(ctx, ksvs); err != nil { + wr.Logger().Infof("error from SaveVSchema %v:%v", ksvs, err) return err } } - return wr.TopoServer().RebuildSrvVSchema(ctx, []string{} /* cells */) + return wr.TopoServer().RebuildSrvVSchema(ctx, nil /* cells */) } func commandDeleteKeyspace(ctx context.Context, wr *wrangler.Wrangler, subFlags *pflag.FlagSet, args []string) error { @@ -3344,7 +3348,7 @@ func commandApplyVSchema(ctx context.Context, wr *wrangler.Wrangler, subFlags *p } keyspace := subFlags.Arg(0) - var vs *vschemapb.Keyspace + var ksvs *topo.KeyspaceVSchemaInfo var err error sqlMode := (*sql != "") != (*sqlFile != "") @@ -3376,20 +3380,10 @@ func commandApplyVSchema(ctx context.Context, wr *wrangler.Wrangler, subFlags *p return fmt.Errorf("error parsing vschema statement `%s`: not a ddl statement", *sql) } - vs, err = wr.TopoServer().GetVSchema(ctx, keyspace) - if err != nil { - if topo.IsErrType(err, topo.NoNode) { - vs = &vschemapb.Keyspace{} - } else { - return err - } - } - - vs, err = topotools.ApplyVSchemaDDL(keyspace, vs, ddl) + ksvs, err = topotools.ApplyVSchemaDDL(ctx, keyspace, wr.TopoServer(), ddl) if err != nil { return err } - } else { // json mode var schema []byte @@ -3403,14 +3397,17 @@ func commandApplyVSchema(ctx context.Context, wr *wrangler.Wrangler, subFlags *p schema = []byte(*vschema) } - vs = &vschemapb.Keyspace{} - err := json2.UnmarshalPB(schema, vs) + ksvs = &topo.KeyspaceVSchemaInfo{ + Name: keyspace, + Keyspace: &vschemapb.Keyspace{}, + } + err := json2.UnmarshalPB(schema, ksvs.Keyspace) if err != nil { return err } } - b, err := json2.MarshalIndentPB(vs, " ") + b, err := json2.MarshalIndentPB(ksvs.Keyspace, " ") if err != nil { wr.Logger().Errorf2(err, "Failed to marshal VSchema for display") } else { @@ -3418,7 +3415,7 @@ func commandApplyVSchema(ctx context.Context, wr *wrangler.Wrangler, subFlags *p } // Validate the VSchema. - ksVs, err := vindexes.BuildKeyspace(vs, wr.SQLParser()) + ksVs, err := vindexes.BuildKeyspace(ksvs.Keyspace, wr.SQLParser()) if err != nil { return err } @@ -3450,11 +3447,11 @@ func commandApplyVSchema(ctx context.Context, wr *wrangler.Wrangler, subFlags *p return err } - if _, err := vindexes.BuildKeyspace(vs, wr.SQLParser()); err != nil { + if _, err := vindexes.BuildKeyspace(ksvs.Keyspace, wr.SQLParser()); err != nil { return err } - if err := wr.TopoServer().SaveVSchema(ctx, keyspace, vs); err != nil { + if err := wr.TopoServer().SaveVSchema(ctx, ksvs); err != nil { return err } diff --git a/go/vt/vtctl/workflow/framework_test.go b/go/vt/vtctl/workflow/framework_test.go index a2c1b2ef8e3..0575965c433 100644 --- a/go/vt/vtctl/workflow/framework_test.go +++ b/go/vt/vtctl/workflow/framework_test.go @@ -272,13 +272,15 @@ type testTMClient struct { createVReplicationWorkflowRequests map[uint32]*createVReplicationWorkflowRequestResponse readVReplicationWorkflowRequests map[uint32]*readVReplicationWorkflowRequestResponse updateVReplicationWorklowsRequests map[uint32]*tabletmanagerdatapb.UpdateVReplicationWorkflowsRequest - applySchemaRequests map[uint32]*applySchemaRequestResponse + updateVReplicationWorklowRequests map[uint32]*updateVReplicationWorkflowRequestResponse + applySchemaRequests map[uint32][]*applySchemaRequestResponse primaryPositions map[uint32]string vdiffRequests map[uint32]*vdiffRequestResponse refreshStateErrors map[uint32]error // Stack of ReadVReplicationWorkflowsResponse to return, in order, for each shard - readVReplicationWorkflowsResponses map[string][]*tabletmanagerdatapb.ReadVReplicationWorkflowsResponse + readVReplicationWorkflowsResponses map[string][]*tabletmanagerdatapb.ReadVReplicationWorkflowsResponse + validateVReplicationPermissionsResponses map[uint32]*validateVReplicationPermissionsResponse env *testEnv // For access to the env config from tmc methods. reverse atomic.Bool // Are we reversing traffic? @@ -296,7 +298,8 @@ func newTestTMClient(env *testEnv) *testTMClient { createVReplicationWorkflowRequests: make(map[uint32]*createVReplicationWorkflowRequestResponse), readVReplicationWorkflowRequests: make(map[uint32]*readVReplicationWorkflowRequestResponse), updateVReplicationWorklowsRequests: make(map[uint32]*tabletmanagerdatapb.UpdateVReplicationWorkflowsRequest), - applySchemaRequests: make(map[uint32]*applySchemaRequestResponse), + updateVReplicationWorklowRequests: make(map[uint32]*updateVReplicationWorkflowRequestResponse), + applySchemaRequests: make(map[uint32][]*applySchemaRequestResponse), readVReplicationWorkflowsResponses: make(map[string][]*tabletmanagerdatapb.ReadVReplicationWorkflowsResponse), primaryPositions: make(map[uint32]string), vdiffRequests: make(map[uint32]*vdiffRequestResponse), @@ -398,10 +401,9 @@ func (tmc *testTMClient) GetSchema(ctx context.Context, tablet *topodatapb.Table schemaDefn := &tabletmanagerdatapb.SchemaDefinition{} for _, table := range req.Tables { if table == "/.*/" { - // Special case of all tables in keyspace. - for key, tableDefn := range tmc.schema { + for key, schemaDefinition := range tmc.schema { if strings.HasPrefix(key, tablet.Keyspace+".") { - schemaDefn.TableDefinitions = append(schemaDefn.TableDefinitions, tableDefn.TableDefinitions...) + schemaDefn.TableDefinitions = append(schemaDefn.TableDefinitions, schemaDefinition.TableDefinitions...) } } break @@ -414,6 +416,12 @@ func (tmc *testTMClient) GetSchema(ctx context.Context, tablet *topodatapb.Table } schemaDefn.TableDefinitions = append(schemaDefn.TableDefinitions, tableDefn.TableDefinitions...) } + for key, schemaDefinition := range tmc.schema { + if strings.HasPrefix(key, tablet.Keyspace) { + schemaDefn.DatabaseSchema = schemaDefinition.DatabaseSchema + break + } + } return schemaDefn, nil } @@ -508,10 +516,21 @@ func (tmc *testTMClient) expectApplySchemaRequest(tabletID uint32, req *applySch defer tmc.mu.Unlock() if tmc.applySchemaRequests == nil { - tmc.applySchemaRequests = make(map[uint32]*applySchemaRequestResponse) + tmc.applySchemaRequests = make(map[uint32][]*applySchemaRequestResponse) + } + + tmc.applySchemaRequests[tabletID] = append(tmc.applySchemaRequests[tabletID], req) +} + +func (tmc *testTMClient) expectValidateVReplicationPermissionsResponse(tabletID uint32, req *validateVReplicationPermissionsResponse) { + tmc.mu.Lock() + defer tmc.mu.Unlock() + + if tmc.validateVReplicationPermissionsResponses == nil { + tmc.validateVReplicationPermissionsResponses = make(map[uint32]*validateVReplicationPermissionsResponse) } - tmc.applySchemaRequests[tabletID] = req + tmc.validateVReplicationPermissionsResponses[tabletID] = req } // Note: ONLY breaks up change.SQL into individual statements and executes it. Does NOT fully implement ApplySchema. @@ -519,11 +538,17 @@ func (tmc *testTMClient) ApplySchema(ctx context.Context, tablet *topodatapb.Tab tmc.mu.Lock() defer tmc.mu.Unlock() - if expect, ok := tmc.applySchemaRequests[tablet.Alias.Uid]; ok { + if requests, ok := tmc.applySchemaRequests[tablet.Alias.Uid]; ok { + if len(requests) == 0 { + return nil, vterrors.Errorf(vtrpcpb.Code_INVALID_ARGUMENT, "unexpected ApplySchema request on tablet %s: got %+v", + topoproto.TabletAliasString(tablet.Alias), change) + } + expect := requests[0] if !reflect.DeepEqual(change, expect.change) { return nil, vterrors.Errorf(vtrpcpb.Code_INVALID_ARGUMENT, "unexpected ApplySchema request on tablet %s: got %+v, want %+v", topoproto.TabletAliasString(tablet.Alias), change, expect.change) } + tmc.applySchemaRequests[tablet.Alias.Uid] = tmc.applySchemaRequests[tablet.Alias.Uid][1:] return expect.res, expect.err } @@ -567,6 +592,17 @@ type applySchemaRequestResponse struct { err error } +type updateVReplicationWorkflowRequestResponse struct { + req *tabletmanagerdatapb.UpdateVReplicationWorkflowRequest + res *tabletmanagerdatapb.UpdateVReplicationWorkflowResponse + err error +} + +type validateVReplicationPermissionsResponse struct { + res *tabletmanagerdatapb.ValidateVReplicationPermissionsResponse + err error +} + func (tmc *testTMClient) expectVDiffRequest(tablet *topodatapb.Tablet, vrr *vdiffRequestResponse) { tmc.mu.Lock() defer tmc.mu.Unlock() @@ -681,6 +717,15 @@ func (tmc *testTMClient) ReadVReplicationWorkflows(ctx context.Context, tablet * } func (tmc *testTMClient) UpdateVReplicationWorkflow(ctx context.Context, tablet *topodatapb.Tablet, req *tabletmanagerdatapb.UpdateVReplicationWorkflowRequest) (*tabletmanagerdatapb.UpdateVReplicationWorkflowResponse, error) { + tmc.mu.Lock() + defer tmc.mu.Unlock() + if expect := tmc.updateVReplicationWorklowRequests[tablet.Alias.Uid]; expect != nil { + if !proto.Equal(expect.req, req) { + return nil, vterrors.Errorf(vtrpcpb.Code_INVALID_ARGUMENT, "unexpected ReadVReplicationWorkflow request on tablet %s: got %+v, want %+v", + topoproto.TabletAliasString(tablet.Alias), req, expect) + } + return expect.res, expect.err + } return &tabletmanagerdatapb.UpdateVReplicationWorkflowResponse{ Result: &querypb.QueryResult{ RowsAffected: 1, @@ -702,6 +747,11 @@ func (tmc *testTMClient) UpdateVReplicationWorkflows(ctx context.Context, tablet } func (tmc *testTMClient) ValidateVReplicationPermissions(ctx context.Context, tablet *topodatapb.Tablet, req *tabletmanagerdatapb.ValidateVReplicationPermissionsRequest) (*tabletmanagerdatapb.ValidateVReplicationPermissionsResponse, error) { + tmc.mu.Lock() + defer tmc.mu.Unlock() + if resp, ok := tmc.validateVReplicationPermissionsResponses[tablet.Alias.Uid]; ok { + return resp.res, resp.err + } return &tabletmanagerdatapb.ValidateVReplicationPermissionsResponse{ User: "vt_filtered", Ok: true, @@ -766,6 +816,12 @@ func (tmc *testTMClient) AddUpdateVReplicationRequests(tabletUID uint32, req *ta tmc.updateVReplicationWorklowsRequests[tabletUID] = req } +func (tmc *testTMClient) AddUpdateVReplicationWorkflowRequestResponse(tabletUID uint32, reqres *updateVReplicationWorkflowRequestResponse) { + tmc.mu.Lock() + defer tmc.mu.Unlock() + tmc.updateVReplicationWorklowRequests[tabletUID] = reqres +} + func (tmc *testTMClient) getVReplicationWorkflowsResponse(key string) *tabletmanagerdatapb.ReadVReplicationWorkflowsResponse { if len(tmc.readVReplicationWorkflowsResponses) == 0 { return nil @@ -779,6 +835,10 @@ func (tmc *testTMClient) getVReplicationWorkflowsResponse(key string) *tabletman return resp } +func (tmc *testTMClient) ReloadSchema(ctx context.Context, tablet *topodatapb.Tablet, waitPosition string) error { + return nil +} + // // Utility / helper functions. // diff --git a/go/vt/vtctl/workflow/lookup_vindex.go b/go/vt/vtctl/workflow/lookup_vindex.go index cef411e7eaf..157dba083b0 100644 --- a/go/vt/vtctl/workflow/lookup_vindex.go +++ b/go/vt/vtctl/workflow/lookup_vindex.go @@ -65,7 +65,7 @@ func newLookupVindex(ws *Server) *lookupVindex { // prepareCreate performs the preparatory steps for creating a Lookup Vindex. func (lv *lookupVindex) prepareCreate(ctx context.Context, workflow, keyspace string, specs *vschemapb.Keyspace, continueAfterCopyWithOwner bool) ( - ms *vtctldatapb.MaterializeSettings, sourceVSchema, targetVSchema *vschemapb.Keyspace, cancelFunc func() error, err error) { + ms *vtctldatapb.MaterializeSettings, sourceVSchema, targetVSchema *topo.KeyspaceVSchemaInfo, cancelFunc func() error, err error) { var ( // sourceVSchemaTable is the table info present in the vschema. sourceVSchemaTable *vschemapb.Table @@ -146,8 +146,12 @@ func (lv *lookupVindex) prepareCreate(ctx context.Context, workflow, keyspace st materializeQuery = generateMaterializeQuery(vInfo, vindex, sourceVindexColumns) // Save a copy of the original vschema if we modify it and need to provide - // a cancelFunc. - ogTargetVSchema := targetVSchema.CloneVT() + // a cancelFunc. We do NOT want to clone the key version as we explicitly + // want to go back in time. So we only clone the internal vschema.Keyspace. + origTargetVSchema := &topo.KeyspaceVSchemaInfo{ + Name: vInfo.targetKeyspace, + Keyspace: targetVSchema.Keyspace.CloneVT(), + } targetChanged := false // Update targetVSchema. @@ -215,7 +219,7 @@ func (lv *lookupVindex) prepareCreate(ctx context.Context, workflow, keyspace st if targetChanged { cancelFunc = func() error { // Restore the original target vschema. - return lv.ts.SaveVSchema(ctx, vInfo.targetKeyspace, ogTargetVSchema) + return lv.ts.SaveVSchema(ctx, origTargetVSchema) } } @@ -326,7 +330,7 @@ func (lv *lookupVindex) validateAndGetVindex(specs *vschemapb.Keyspace) (*vschem }, nil } -func (lv *lookupVindex) getTargetAndSourceVSchema(ctx context.Context, sourceKeyspace string, targetKeyspace string) (sourceVSchema *vschemapb.Keyspace, targetVSchema *vschemapb.Keyspace, err error) { +func (lv *lookupVindex) getTargetAndSourceVSchema(ctx context.Context, sourceKeyspace, targetKeyspace string) (sourceVSchema, targetVSchema *topo.KeyspaceVSchemaInfo, err error) { sourceVSchema, err = lv.ts.GetVSchema(ctx, sourceKeyspace) if err != nil { return nil, nil, err diff --git a/go/vt/vtctl/workflow/materializer.go b/go/vt/vtctl/workflow/materializer.go index c65a00bf614..8cd99d384ee 100644 --- a/go/vt/vtctl/workflow/materializer.go +++ b/go/vt/vtctl/workflow/materializer.go @@ -283,7 +283,7 @@ func (mz *materializer) deploySchema() error { // We do, however, allow the user to override this behavior and retain them. removeAutoInc := false updatedVSchema := false - var targetVSchema *vschemapb.Keyspace + var targetVSchema *topo.KeyspaceVSchemaInfo if mz.workflowType == binlogdatapb.VReplicationWorkflowType_MoveTables && (mz.targetVSchema != nil && mz.targetVSchema.Keyspace != nil && mz.targetVSchema.Keyspace.Sharded) && (mz.ms.GetWorkflowOptions() != nil && mz.ms.GetWorkflowOptions().ShardedAutoIncrementHandling != vtctldatapb.ShardedAutoIncrementHandling_LEAVE) { @@ -472,7 +472,7 @@ func (mz *materializer) deploySchema() error { } if updatedVSchema { - return mz.ts.SaveVSchema(mz.ctx, mz.ms.TargetKeyspace, targetVSchema) + return mz.ts.SaveVSchema(mz.ctx, targetVSchema) } return nil @@ -485,7 +485,7 @@ func (mz *materializer) buildMaterializer() error { if err != nil { return err } - targetVSchema, err := vindexes.BuildKeyspaceSchema(vschema, ms.TargetKeyspace, mz.env.Parser()) + targetVSchema, err := vindexes.BuildKeyspaceSchema(vschema.Keyspace, ms.TargetKeyspace, mz.env.Parser()) if err != nil { return err } @@ -563,7 +563,7 @@ func (mz *materializer) buildMaterializer() error { if err != nil { return fmt.Errorf("failed to get source keyspace vschema: %v", err) } - differentPVs = primaryVindexesDiffer(ms, sourceVSchema, vschema) + differentPVs = primaryVindexesDiffer(ms, sourceVSchema.Keyspace, vschema.Keyspace) mz.targetVSchema = targetVSchema mz.sourceShards = sourceShards diff --git a/go/vt/vtctl/workflow/materializer_env_test.go b/go/vt/vtctl/workflow/materializer_env_test.go index fb5064137cd..c7c66f4fd29 100644 --- a/go/vt/vtctl/workflow/materializer_env_test.go +++ b/go/vt/vtctl/workflow/materializer_env_test.go @@ -86,10 +86,10 @@ func newTestMaterializerEnv(t *testing.T, ctx context.Context, ms *vtctldatapb.M } require.NoError(t, topoServ.CreateKeyspace(ctx, ms.SourceKeyspace, &topodatapb.Keyspace{})) - require.NoError(t, topoServ.SaveVSchema(ctx, ms.SourceKeyspace, &vschemapb.Keyspace{})) + require.NoError(t, topoServ.SaveVSchema(ctx, &topo.KeyspaceVSchemaInfo{Name: ms.SourceKeyspace, Keyspace: &vschemapb.Keyspace{}})) if ms.SourceKeyspace != ms.TargetKeyspace { require.NoError(t, topoServ.CreateKeyspace(ctx, ms.TargetKeyspace, &topodatapb.Keyspace{})) - require.NoError(t, topoServ.SaveVSchema(ctx, ms.TargetKeyspace, &vschemapb.Keyspace{})) + require.NoError(t, topoServ.SaveVSchema(ctx, &topo.KeyspaceVSchemaInfo{Name: ms.TargetKeyspace, Keyspace: &vschemapb.Keyspace{}})) } logger := logutil.NewConsoleLogger() require.NoError(t, topoServ.RebuildSrvVSchema(ctx, []string{"cell"})) diff --git a/go/vt/vtctl/workflow/materializer_test.go b/go/vt/vtctl/workflow/materializer_test.go index e430f740c1f..c28beb933e8 100644 --- a/go/vt/vtctl/workflow/materializer_test.go +++ b/go/vt/vtctl/workflow/materializer_test.go @@ -497,7 +497,10 @@ func TestAddTablesToVSchema(t *testing.T) { } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - err := ts.SaveVSchema(ctx, srcks, tt.sourceVSchema) + err := ts.SaveVSchema(ctx, &topo.KeyspaceVSchemaInfo{ + Name: srcks, + Keyspace: tt.sourceVSchema, + }) require.NoError(t, err) err = ws.addTablesToVSchema(ctx, srcks, tt.inTargetVSchema, tt.tables, tt.copyVSchema) require.NoError(t, err) @@ -910,7 +913,10 @@ func TestShardedAutoIncHandling(t *testing.T) { } if tc.targetVSchema != nil { - err := env.ws.ts.SaveVSchema(ctx, ms.TargetKeyspace, tc.targetVSchema) + err := env.ws.ts.SaveVSchema(ctx, &topo.KeyspaceVSchemaInfo{ + Name: ms.TargetKeyspace, + Keyspace: tc.targetVSchema, + }) require.NoError(t, err) } @@ -1076,10 +1082,16 @@ func TestCreateLookupVindexFull(t *testing.T) { Schema: sourceSchema, }}, } - if err := env.topoServ.SaveVSchema(ctx, ms.TargetKeyspace, &vschemapb.Keyspace{}); err != nil { + if err := env.topoServ.SaveVSchema(ctx, &topo.KeyspaceVSchemaInfo{ + Name: ms.TargetKeyspace, + Keyspace: &vschemapb.Keyspace{}, + }); err != nil { t.Fatal(err) } - if err := env.topoServ.SaveVSchema(ctx, ms.SourceKeyspace, sourceVSchema); err != nil { + if err := env.topoServ.SaveVSchema(ctx, &topo.KeyspaceVSchemaInfo{ + Name: ms.SourceKeyspace, + Keyspace: sourceVSchema, + }); err != nil { t.Fatal(err) } @@ -1133,7 +1145,7 @@ func TestCreateLookupVindexFull(t *testing.T) { } vschema, err := env.topoServ.GetVSchema(ctx, ms.SourceKeyspace) require.NoError(t, err) - utils.MustMatch(t, wantvschema, vschema) + utils.MustMatch(t, wantvschema, vschema.Keyspace) wantvschema = &vschemapb.Keyspace{ Tables: map[string]*vschemapb.Table{ @@ -1142,7 +1154,7 @@ func TestCreateLookupVindexFull(t *testing.T) { } vschema, err = env.topoServ.GetVSchema(ctx, ms.TargetKeyspace) require.NoError(t, err) - utils.MustMatch(t, wantvschema, vschema) + utils.MustMatch(t, wantvschema, vschema.Keyspace) } func TestCreateLookupVindexCreateDDL(t *testing.T) { @@ -1172,7 +1184,10 @@ func TestCreateLookupVindexCreateDDL(t *testing.T) { }, } setStartingVschema := func() { - err := env.topoServ.SaveVSchema(ctx, ms.SourceKeyspace, vs) + err := env.topoServ.SaveVSchema(ctx, &topo.KeyspaceVSchemaInfo{ + Name: ms.SourceKeyspace, + Keyspace: vs, + }) require.NoError(t, err) } setStartingVschema() @@ -1209,25 +1224,28 @@ func TestCreateLookupVindexCreateDDL(t *testing.T) { }, preFunc: func() { // The vschema entries will already exist and we will re-use them. - err := env.ws.ts.SaveVSchema(ctx, ms.SourceKeyspace, &vschemapb.Keyspace{ - Vindexes: map[string]*vschemapb.Vindex{ - "v": { - Type: "lookup_unique", - Params: map[string]string{ - "table": fmt.Sprintf("%s.lkp", ms.TargetKeyspace), - "from": "c1", - "to": "c2", - "write_only": "true", // It has not been externalized yet + err := env.ws.ts.SaveVSchema(ctx, &topo.KeyspaceVSchemaInfo{ + Name: ms.SourceKeyspace, + Keyspace: &vschemapb.Keyspace{ + Vindexes: map[string]*vschemapb.Vindex{ + "v": { + Type: "lookup_unique", + Params: map[string]string{ + "table": fmt.Sprintf("%s.lkp", ms.TargetKeyspace), + "from": "c1", + "to": "c2", + "write_only": "true", // It has not been externalized yet + }, + Owner: "t1", }, - Owner: "t1", }, - }, - Tables: map[string]*vschemapb.Table{ - "t1": { - ColumnVindexes: []*vschemapb.ColumnVindex{{ - Name: "v", - Column: "col2", - }}, + Tables: map[string]*vschemapb.Table{ + "t1": { + ColumnVindexes: []*vschemapb.ColumnVindex{{ + Name: "v", + Column: "col2", + }}, + }, }, }, }) @@ -1270,17 +1288,20 @@ func TestCreateLookupVindexCreateDDL(t *testing.T) { preFunc: func() { // The existing vindex vschema entry differs from what we want to // create so we cannot re-use it. - err := env.ws.ts.SaveVSchema(ctx, ms.SourceKeyspace, &vschemapb.Keyspace{ - Vindexes: map[string]*vschemapb.Vindex{ - "v": { - Type: "lookup_unique", - Params: map[string]string{ - "table": fmt.Sprintf("%s.lkp", ms.TargetKeyspace), - "from": "c1", - "to": "c2", - "write_only": "false", // This vindex has been externalized + err := env.ws.ts.SaveVSchema(ctx, &topo.KeyspaceVSchemaInfo{ + Name: ms.SourceKeyspace, + Keyspace: &vschemapb.Keyspace{ + Vindexes: map[string]*vschemapb.Vindex{ + "v": { + Type: "lookup_unique", + Params: map[string]string{ + "table": fmt.Sprintf("%s.lkp", ms.TargetKeyspace), + "from": "c1", + "to": "c2", + "write_only": "false", // This vindex has been externalized + }, + Owner: "t1", }, - Owner: "t1", }, }, }) @@ -1319,13 +1340,16 @@ func TestCreateLookupVindexCreateDDL(t *testing.T) { preFunc: func() { // The existing ColumnVindexes vschema entry differs from what we // want to create so we cannot re-use it. - err := env.ws.ts.SaveVSchema(ctx, ms.SourceKeyspace, &vschemapb.Keyspace{ - Tables: map[string]*vschemapb.Table{ - "t1": { - ColumnVindexes: []*vschemapb.ColumnVindex{{ - Name: "v", - Columns: []string{"col1", "col2"}, - }}, + err := env.ws.ts.SaveVSchema(ctx, &topo.KeyspaceVSchemaInfo{ + Name: ms.SourceKeyspace, + Keyspace: &vschemapb.Keyspace{ + Tables: map[string]*vschemapb.Table{ + "t1": { + ColumnVindexes: []*vschemapb.ColumnVindex{{ + Name: "v", + Columns: []string{"col1", "col2"}, + }}, + }, }, }, }) @@ -1757,10 +1781,16 @@ func TestCreateLookupVindexSourceVSchema(t *testing.T) { Schema: sourceSchema, }}, } - if err := env.topoServ.SaveVSchema(ctx, ms.TargetKeyspace, &vschemapb.Keyspace{}); err != nil { + if err := env.topoServ.SaveVSchema(ctx, &topo.KeyspaceVSchemaInfo{ + Name: ms.TargetKeyspace, + Keyspace: &vschemapb.Keyspace{}, + }); err != nil { t.Fatal(err) } - if err := env.topoServ.SaveVSchema(ctx, ms.SourceKeyspace, tcase.sourceVSchema); err != nil { + if err := env.topoServ.SaveVSchema(ctx, &topo.KeyspaceVSchemaInfo{ + Name: ms.SourceKeyspace, + Keyspace: tcase.sourceVSchema, + }); err != nil { t.Fatal(err) } @@ -1799,7 +1829,10 @@ func TestCreateLookupVindexTargetVSchema(t *testing.T) { }, }, } - if err := env.topoServ.SaveVSchema(context.Background(), ms.SourceKeyspace, sourcevs); err != nil { + if err := env.topoServ.SaveVSchema(context.Background(), &topo.KeyspaceVSchemaInfo{ + Name: ms.SourceKeyspace, + Keyspace: sourcevs, + }); err != nil { t.Fatal(err) } @@ -1997,7 +2030,10 @@ func TestCreateLookupVindexTargetVSchema(t *testing.T) { }}, } specs.Vindexes["v"].Params["table"] = fmt.Sprintf("%s.%s", ms.TargetKeyspace, tcase.targetTable) - if err := env.topoServ.SaveVSchema(ctx, ms.TargetKeyspace, tcase.targetVSchema); err != nil { + if err := env.topoServ.SaveVSchema(ctx, &topo.KeyspaceVSchemaInfo{ + Name: ms.TargetKeyspace, + Keyspace: tcase.targetVSchema, + }); err != nil { t.Fatal(err) } @@ -2013,7 +2049,7 @@ func TestCreateLookupVindexTargetVSchema(t *testing.T) { // withTable is a vschema that already contains the table and thus // we don't make any vschema changes and there's nothing to cancel. require.True(t, (cancelFunc != nil) == (tcase.targetVSchema != withTable)) - utils.MustMatch(t, tcase.out, got, tcase.description) + utils.MustMatch(t, tcase.out, got.Keyspace, tcase.description) }) } } @@ -2120,7 +2156,10 @@ func TestCreateLookupVindexSameKeyspace(t *testing.T) { Schema: sourceSchema, }}, } - if err := env.topoServ.SaveVSchema(ctx, ms.TargetKeyspace, vschema); err != nil { + if err := env.topoServ.SaveVSchema(ctx, &topo.KeyspaceVSchemaInfo{ + Name: ms.TargetKeyspace, + Keyspace: vschema, + }); err != nil { t.Fatal(err) } @@ -2247,7 +2286,10 @@ func TestCreateCustomizedVindex(t *testing.T) { Schema: sourceSchema, }}, } - if err := env.topoServ.SaveVSchema(ctx, ms.TargetKeyspace, vschema); err != nil { + if err := env.topoServ.SaveVSchema(ctx, &topo.KeyspaceVSchemaInfo{ + Name: ms.TargetKeyspace, + Keyspace: vschema, + }); err != nil { t.Fatal(err) } @@ -2366,7 +2408,10 @@ func TestCreateLookupVindexIgnoreNulls(t *testing.T) { Schema: sourceSchema, }}, } - if err := env.topoServ.SaveVSchema(ctx, ms.TargetKeyspace, vschema); err != nil { + if err := env.topoServ.SaveVSchema(ctx, &topo.KeyspaceVSchemaInfo{ + Name: ms.TargetKeyspace, + Keyspace: vschema, + }); err != nil { t.Fatal(err) } @@ -2447,7 +2492,10 @@ func TestStopAfterCopyFlag(t *testing.T) { Schema: sourceSchema, }}, } - if err := env.topoServ.SaveVSchema(ctx, ms.SourceKeyspace, vschema); err != nil { + if err := env.topoServ.SaveVSchema(ctx, &topo.KeyspaceVSchemaInfo{ + Name: ms.SourceKeyspace, + Keyspace: vschema, + }); err != nil { t.Fatal(err) } @@ -2529,7 +2577,10 @@ func TestCreateLookupVindexFailures(t *testing.T) { }, }, } - err := env.topoServ.SaveVSchema(ctx, ms.TargetKeyspace, vs) + err := env.topoServ.SaveVSchema(ctx, &topo.KeyspaceVSchemaInfo{ + Name: ms.TargetKeyspace, + Keyspace: vs, + }) require.NoError(t, err) testcases := []struct { @@ -2868,7 +2919,7 @@ func TestCreateLookupVindexFailures(t *testing.T) { // definition. cvs, err := env.ws.ts.GetVSchema(ctx, ms.TargetKeyspace) require.NoError(t, err) - require.True(t, proto.Equal(vs, cvs), "expected: %+v, got: %+v", vs, cvs) + require.True(t, proto.Equal(vs, cvs.Keyspace), "expected: %+v, got: %+v", vs, cvs) }) } } @@ -3130,7 +3181,10 @@ func TestKeyRangesEqualOptimization(t *testing.T) { defer env.close() // Target is always sharded. - err := env.ws.ts.SaveVSchema(ctx, targetKs, targetVSchema) + err := env.ws.ts.SaveVSchema(ctx, &topo.KeyspaceVSchemaInfo{ + Name: targetKs, + Keyspace: targetVSchema, + }) require.NoError(t, err, "SaveVSchema failed: %v", err) for _, tablet := range env.tablets { diff --git a/go/vt/vtctl/workflow/resharder.go b/go/vt/vtctl/workflow/resharder.go index e3f7380af69..81261f3e39e 100644 --- a/go/vt/vtctl/workflow/resharder.go +++ b/go/vt/vtctl/workflow/resharder.go @@ -38,7 +38,6 @@ import ( binlogdatapb "vitess.io/vitess/go/vt/proto/binlogdata" tabletmanagerdatapb "vitess.io/vitess/go/vt/proto/tabletmanagerdata" - vschemapb "vitess.io/vitess/go/vt/proto/vschema" vtrpcpb "vitess.io/vitess/go/vt/proto/vtrpc" ) @@ -50,7 +49,7 @@ type resharder struct { sourcePrimaries map[string]*topo.TabletInfo targetShards []*topo.ShardInfo targetPrimaries map[string]*topo.TabletInfo - vschema *vschemapb.Keyspace + vschema *topo.KeyspaceVSchemaInfo refStreams map[string]*refStream // This can be single cell name or cell alias but it can // also be a comma-separated list of cells. @@ -297,7 +296,6 @@ func (rs *resharder) createStreams(ctx context.Context) error { if err != nil { return err } - optionsJSON = fmt.Sprintf("'%s'", optionsJSON) for _, source := range rs.sourceShards { if !key.KeyRangeIntersect(target.KeyRange, source.KeyRange) { continue diff --git a/go/vt/vtctl/workflow/resharder_test.go b/go/vt/vtctl/workflow/resharder_test.go index 6fe1afb0c70..2840030e7e0 100644 --- a/go/vt/vtctl/workflow/resharder_test.go +++ b/go/vt/vtctl/workflow/resharder_test.go @@ -369,10 +369,13 @@ func TestReadRefStreams(t *testing.T) { }, }, workflow: "wf", - vschema: &vschemapb.Keyspace{ - Tables: map[string]*vschemapb.Table{ - "t1": { - Type: vindexes.TypeReference, + vschema: &topo.KeyspaceVSchemaInfo{ + Name: targetKeyspace.KeyspaceName, + Keyspace: &vschemapb.Keyspace{ + Tables: map[string]*vschemapb.Table{ + "t1": { + Type: vindexes.TypeReference, + }, }, }, }, @@ -485,8 +488,11 @@ func TestBlsIsReference(t *testing.T) { for _, tc := range testCases { t.Run(tc.name, func(t *testing.T) { rs := &resharder{ - vschema: &vschemapb.Keyspace{ - Tables: tc.tables, + vschema: &topo.KeyspaceVSchemaInfo{ + Name: "ks", + Keyspace: &vschemapb.Keyspace{ + Tables: tc.tables, + }, }, } diff --git a/go/vt/vtctl/workflow/server.go b/go/vt/vtctl/workflow/server.go index 19990f49f6d..4a1fb2e461a 100644 --- a/go/vt/vtctl/workflow/server.go +++ b/go/vt/vtctl/workflow/server.go @@ -610,7 +610,7 @@ func (s *Server) LookupVindexCreate(ctx context.Context, req *vtctldatapb.Lookup return nil, err } - if err := s.ts.SaveVSchema(ctx, ms.TargetKeyspace, targetVSchema); err != nil { + if err := s.ts.SaveVSchema(ctx, targetVSchema); err != nil { return nil, vterrors.Wrapf(err, "failed to save updated vschema '%v' in the %s keyspace", targetVSchema, ms.TargetKeyspace) } @@ -626,7 +626,7 @@ func (s *Server) LookupVindexCreate(ctx context.Context, req *vtctldatapb.Lookup return nil, err } if ms.SourceKeyspace != ms.TargetKeyspace { - if err := s.ts.SaveVSchema(ctx, ms.SourceKeyspace, sourceVSchema); err != nil { + if err := s.ts.SaveVSchema(ctx, sourceVSchema); err != nil { return nil, vterrors.Wrapf(err, "failed to save updated vschema '%v' in the %s keyspace", sourceVSchema, ms.SourceKeyspace) } @@ -651,7 +651,7 @@ func (s *Server) LookupVindexExternalize(ctx context.Context, req *vtctldatapb.L span.Annotate("table_keyspace", req.TableKeyspace) span.Annotate("delete_workflow", req.DeleteWorkflow) - vindex, sourceVSchema, err := getVindexAndVSchema(ctx, s.ts, req.Keyspace, req.Name) + vindex, sourceKsVS, err := getVindexAndVSchema(ctx, s.ts, req.Keyspace, req.Name) if err != nil { return nil, err } @@ -741,7 +741,7 @@ func (s *Server) LookupVindexExternalize(ctx context.Context, req *vtctldatapb.L // Remove the write_only param and save the source vschema. delete(vindex.Params, "write_only") - if err := s.ts.SaveVSchema(ctx, req.Keyspace, sourceVSchema); err != nil { + if err := s.ts.SaveVSchema(ctx, sourceKsVS); err != nil { return nil, err } return resp, s.ts.RebuildSrvVSchema(ctx, nil) @@ -756,7 +756,7 @@ func (s *Server) LookupVindexInternalize(ctx context.Context, req *vtctldatapb.L span.Annotate("name", req.Name) span.Annotate("table_keyspace", req.TableKeyspace) - vindex, sourceVSchema, err := getVindexAndVSchema(ctx, s.ts, req.Keyspace, req.Name) + vindex, sourceKsVS, err := getVindexAndVSchema(ctx, s.ts, req.Keyspace, req.Name) if err != nil { return nil, err } @@ -773,7 +773,7 @@ func (s *Server) LookupVindexInternalize(ctx context.Context, req *vtctldatapb.L // Make the vindex back to write_only and save the source vschema. vindex.Params["write_only"] = "true" - if err := s.ts.SaveVSchema(ctx, req.Keyspace, sourceVSchema); err != nil { + if err := s.ts.SaveVSchema(ctx, sourceKsVS); err != nil { return nil, err } @@ -915,9 +915,10 @@ func (s *Server) moveTablesCreate(ctx context.Context, req *vtctldatapb.MoveTabl s.Logger().Infof("Successfully opened external topo: %+v", externalTopo) } - var vschema *vschemapb.Keyspace - var origVSchema *vschemapb.Keyspace // If we need to rollback a failed create - vschema, err = s.ts.GetVSchema(ctx, targetKeyspace) + origVSchema := &topo.KeyspaceVSchemaInfo{ // If we need to rollback a failed create + Name: targetKeyspace, + } + vschema, err := s.ts.GetVSchema(ctx, targetKeyspace) if err != nil { return nil, err } @@ -973,12 +974,14 @@ func (s *Server) moveTablesCreate(ctx context.Context, req *vtctldatapb.MoveTabl if !vschema.Sharded { // Save the original in case we need to restore it for a late failure in - // the defer(). - origVSchema = vschema.CloneVT() - if err := s.addTablesToVSchema(ctx, sourceKeyspace, vschema, tables, externalTopo == nil); err != nil { + // the defer(). We do NOT want to clone the version field as we will + // intentionally be going back in time. So we only clone the internal + // vschemapb.Keyspace field. + origVSchema.Keyspace = vschema.Keyspace.CloneVT() + if err := s.addTablesToVSchema(ctx, sourceKeyspace, vschema.Keyspace, tables, externalTopo == nil); err != nil { return nil, err } - if err := s.ts.SaveVSchema(ctx, targetKeyspace, vschema); err != nil { + if err := s.ts.SaveVSchema(ctx, vschema); err != nil { return nil, err } } @@ -1079,7 +1082,7 @@ func (s *Server) moveTablesCreate(ctx context.Context, req *vtctldatapb.MoveTabl if origVSchema == nil { // There's no previous version to restore return } - if cerr := s.ts.SaveVSchema(ctx, targetKeyspace, origVSchema); cerr != nil { + if cerr := s.ts.SaveVSchema(ctx, origVSchema); cerr != nil { err = vterrors.Wrapf(err, "failed to restore original target vschema: %v", cerr) } } @@ -2146,7 +2149,7 @@ func (s *Server) buildTrafficSwitcher(ctx context.Context, targetKeyspace, workf if err != nil { return nil, err } - ts.sourceKSSchema, err = vindexes.BuildKeyspaceSchema(vs, ts.sourceKeyspace, s.env.Parser()) + ts.sourceKSSchema, err = vindexes.BuildKeyspaceSchema(vs.Keyspace, ts.sourceKeyspace, s.env.Parser()) if err != nil { return nil, err } @@ -2917,8 +2920,10 @@ func (s *Server) switchWrites(ctx context.Context, req *vtctldatapb.WorkflowSwit return handleError("failed to migrate the workflow streams", err) } if cancel { - sw.cancelMigration(ctx, sm) - return 0, sw.logs(), nil + if cerr := sw.cancelMigration(ctx, sm); cerr != nil { + err = vterrors.Errorf(vtrpcpb.Code_CANCELED, "%v\n\n%v", err, cerr) + } + return 0, sw.logs(), err } // We stop writes on the source before stopping the source streams so that the catchup time @@ -2930,7 +2935,9 @@ func (s *Server) switchWrites(ctx context.Context, req *vtctldatapb.WorkflowSwit // we actually stop them. ts.Logger().Infof("Stopping source writes") if err := sw.stopSourceWrites(ctx); err != nil { - sw.cancelMigration(ctx, sm) + if cerr := sw.cancelMigration(ctx, sm); cerr != nil { + err = vterrors.Errorf(vtrpcpb.Code_CANCELED, "%v\n\n%v", err, cerr) + } return handleError(fmt.Sprintf("failed to stop writes in the %s keyspace", ts.SourceKeyspaceName()), err) } @@ -2948,7 +2955,9 @@ func (s *Server) switchWrites(ctx context.Context, req *vtctldatapb.WorkflowSwit ts.Logger().Errorf("stream in stopStreams: key %s shard %s stream %+v", key, stream.BinlogSource.Shard, stream.BinlogSource) } } - sw.cancelMigration(ctx, sm) + if cerr := sw.cancelMigration(ctx, sm); cerr != nil { + err = vterrors.Errorf(vtrpcpb.Code_CANCELED, "%v\n\n%v", err, cerr) + } return handleError(fmt.Sprintf("failed to stop the workflow streams in the %s keyspace", ts.SourceKeyspaceName()), err) } @@ -2958,7 +2967,9 @@ func (s *Server) switchWrites(ctx context.Context, req *vtctldatapb.WorkflowSwit // the tablet's deny list check and the first mysqld side table lock. for cnt := 1; cnt <= lockTablesCycles; cnt++ { if err := ts.executeLockTablesOnSource(ctx); err != nil { - sw.cancelMigration(ctx, sm) + if cerr := sw.cancelMigration(ctx, sm); cerr != nil { + err = vterrors.Errorf(vtrpcpb.Code_CANCELED, "%v\n\n%v", err, cerr) + } return handleError(fmt.Sprintf("failed to execute LOCK TABLES (attempt %d of %d) on sources", cnt, lockTablesCycles), err) } // No need to UNLOCK the tables as the connection was closed once the locks were acquired @@ -2979,7 +2990,9 @@ func (s *Server) switchWrites(ctx context.Context, req *vtctldatapb.WorkflowSwit } ts.Logger().Infof("Waiting for streams to catchup") if err := sw.waitForCatchup(ctx, waitTimeout); err != nil { - sw.cancelMigration(ctx, sm) + if cerr := sw.cancelMigration(ctx, sm); cerr != nil { + err = vterrors.Errorf(vtrpcpb.Code_CANCELED, "%v\n\n%v", err, cerr) + } return handleError("failed to sync up replication between the source and target", err) } @@ -2988,7 +3001,9 @@ func (s *Server) switchWrites(ctx context.Context, req *vtctldatapb.WorkflowSwit } ts.Logger().Infof("Migrating streams") if err := sw.migrateStreams(ctx, sm); err != nil { - sw.cancelMigration(ctx, sm) + if cerr := sw.cancelMigration(ctx, sm); cerr != nil { + err = vterrors.Errorf(vtrpcpb.Code_CANCELED, "%v\n\n%v", err, cerr) + } return handleError("failed to migrate the workflow streams", err) } @@ -2997,7 +3012,9 @@ func (s *Server) switchWrites(ctx context.Context, req *vtctldatapb.WorkflowSwit } ts.Logger().Infof("Resetting sequences") if err := sw.resetSequences(ctx); err != nil { - sw.cancelMigration(ctx, sm) + if cerr := sw.cancelMigration(ctx, sm); cerr != nil { + err = vterrors.Errorf(vtrpcpb.Code_CANCELED, "%v\n\n%v", err, cerr) + } return handleError("failed to reset the sequences", err) } @@ -3006,7 +3023,9 @@ func (s *Server) switchWrites(ctx context.Context, req *vtctldatapb.WorkflowSwit } ts.Logger().Infof("Creating reverse streams") if err := sw.createReverseVReplication(ctx); err != nil { - sw.cancelMigration(ctx, sm) + if cerr := sw.cancelMigration(ctx, sm); cerr != nil { + err = vterrors.Errorf(vtrpcpb.Code_CANCELED, "%v\n\n%v", err, cerr) + } return handleError("failed to create the reverse vreplication streams", err) } @@ -3021,7 +3040,9 @@ func (s *Server) switchWrites(ctx context.Context, req *vtctldatapb.WorkflowSwit initSeqCtx, cancel := context.WithTimeout(ctx, waitTimeout/2) defer cancel() if err := sw.initializeTargetSequences(initSeqCtx, sequenceMetadata); err != nil { - sw.cancelMigration(ctx, sm) + if cerr := sw.cancelMigration(ctx, sm); cerr != nil { + err = vterrors.Errorf(vtrpcpb.Code_CANCELED, "%v\n\n%v", err, cerr) + } return handleError(fmt.Sprintf("failed to initialize the sequences used in the %s keyspace", ts.TargetKeyspaceName()), err) } } @@ -3071,15 +3092,14 @@ func (s *Server) canSwitch(ctx context.Context, ts *trafficSwitcher, maxAllowedR if err != nil { return "", err } + if wf.MaxVReplicationTransactionLag > maxAllowedReplLagSecs { + return fmt.Sprintf(cannotSwitchHighLag, wf.MaxVReplicationTransactionLag, maxAllowedReplLagSecs), nil + } for _, stream := range wf.ShardStreams { for _, st := range stream.GetStreams() { if st.Message == Frozen { return cannotSwitchFrozen, nil } - // If no new events have been replicated after the copy phase then it will be 0. - if vreplLag := time.Now().Unix() - st.TimeUpdated.Seconds; vreplLag > maxAllowedReplLagSecs { - return fmt.Sprintf(cannotSwitchHighLag, vreplLag, maxAllowedReplLagSecs), nil - } switch st.State { case binlogdatapb.VReplicationWorkflowState_Copying.String(): return cannotSwitchCopyIncomplete, nil diff --git a/go/vt/vtctl/workflow/server_test.go b/go/vt/vtctl/workflow/server_test.go index 8bb4a06f23a..99e8e657cc7 100644 --- a/go/vt/vtctl/workflow/server_test.go +++ b/go/vt/vtctl/workflow/server_test.go @@ -29,15 +29,19 @@ import ( "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" + "google.golang.org/grpc/codes" + "google.golang.org/grpc/status" "google.golang.org/protobuf/encoding/prototext" "vitess.io/vitess/go/sqltypes" "vitess.io/vitess/go/test/utils" "vitess.io/vitess/go/vt/logutil" + "vitess.io/vitess/go/vt/mysqlctl/tmutils" "vitess.io/vitess/go/vt/topo" "vitess.io/vitess/go/vt/topo/topoproto" "vitess.io/vitess/go/vt/topotools" "vitess.io/vitess/go/vt/vtenv" + "vitess.io/vitess/go/vt/vttablet/tabletmanager/vreplication" "vitess.io/vitess/go/vt/vttablet/tmclient" binlogdatapb "vitess.io/vitess/go/vt/proto/binlogdata" @@ -741,11 +745,14 @@ func TestWorkflowDelete(t *testing.T) { }, }, preFunc: func(t *testing.T, env *testEnv) { - err := env.ts.SaveVSchema(ctx, targetKeyspaceName, &vschemapb.Keyspace{ - Sharded: true, - MultiTenantSpec: &vschemapb.MultiTenantSpec{ - TenantIdColumnName: "tenant_id", - TenantIdColumnType: sqltypes.Int64, + err := env.ts.SaveVSchema(ctx, &topo.KeyspaceVSchemaInfo{ + Name: targetKeyspaceName, + Keyspace: &vschemapb.Keyspace{ + Sharded: true, + MultiTenantSpec: &vschemapb.MultiTenantSpec{ + TenantIdColumnName: "tenant_id", + TenantIdColumnType: sqltypes.Int64, + }, }, }) require.NoError(t, err) @@ -851,11 +858,14 @@ func TestWorkflowDelete(t *testing.T) { }, }, preFunc: func(t *testing.T, env *testEnv) { - err := env.ts.SaveVSchema(ctx, targetKeyspaceName, &vschemapb.Keyspace{ - Sharded: true, - MultiTenantSpec: &vschemapb.MultiTenantSpec{ - TenantIdColumnName: "tenant_id", - TenantIdColumnType: sqltypes.Int64, + err := env.ts.SaveVSchema(ctx, &topo.KeyspaceVSchemaInfo{ + Name: targetKeyspaceName, + Keyspace: &vschemapb.Keyspace{ + Sharded: true, + MultiTenantSpec: &vschemapb.MultiTenantSpec{ + TenantIdColumnName: "tenant_id", + TenantIdColumnType: sqltypes.Int64, + }, }, }) require.NoError(t, err) @@ -911,11 +921,14 @@ func TestWorkflowDelete(t *testing.T) { }, }, preFunc: func(t *testing.T, env *testEnv) { - err := env.ts.SaveVSchema(ctx, targetKeyspaceName, &vschemapb.Keyspace{ - Sharded: true, - MultiTenantSpec: &vschemapb.MultiTenantSpec{ - TenantIdColumnName: "tenant_id", - TenantIdColumnType: sqltypes.Int64, + err := env.ts.SaveVSchema(ctx, &topo.KeyspaceVSchemaInfo{ + Name: targetKeyspaceName, + Keyspace: &vschemapb.Keyspace{ + Sharded: true, + MultiTenantSpec: &vschemapb.MultiTenantSpec{ + TenantIdColumnName: "tenant_id", + TenantIdColumnType: sqltypes.Int64, + }, }, }) require.NoError(t, err) @@ -2306,3 +2319,353 @@ func TestWorkflowStatus(t *testing.T) { assert.Equal(t, float32(50), stateTable1.RowsPercentage) assert.Equal(t, float32(50), stateTable2.RowsPercentage) } + +func TestDeleteShard(t *testing.T) { + ctx := context.Background() + + sourceKeyspace := &testKeyspace{"source_keyspace", []string{"-"}} + targetKeyspace := &testKeyspace{"target_keyspace", []string{"-"}} + + te := newTestEnv(t, ctx, defaultCellName, sourceKeyspace, targetKeyspace) + defer te.close() + + // Verify that shard exists. + si, err := te.ts.GetShard(ctx, targetKeyspace.KeyspaceName, targetKeyspace.ShardNames[0]) + require.NoError(t, err) + require.NotNil(t, si) + + // Expect to fail if recursive is false. + err = te.ws.DeleteShard(ctx, targetKeyspace.KeyspaceName, targetKeyspace.ShardNames[0], false, true) + assert.ErrorContains(t, err, "shard target_keyspace/- still has 1 tablets in cell") + + // Should not throw error if given keyspace or shard is invalid. + err = te.ws.DeleteShard(ctx, "invalid_keyspace", "-", false, true) + assert.NoError(t, err) + + // Successful shard delete. + err = te.ws.DeleteShard(ctx, targetKeyspace.KeyspaceName, targetKeyspace.ShardNames[0], true, true) + assert.NoError(t, err) + + // Check if the shard was deleted. + _, err = te.ts.GetShard(ctx, targetKeyspace.KeyspaceName, targetKeyspace.ShardNames[0]) + assert.ErrorContains(t, err, "node doesn't exist") +} + +func TestCopySchemaShard(t *testing.T) { + ctx := context.Background() + + sourceKeyspace := &testKeyspace{"source_keyspace", []string{"-"}} + targetKeyspace := &testKeyspace{"target_keyspace", []string{"-"}} + + te := newTestEnv(t, ctx, defaultCellName, sourceKeyspace, targetKeyspace) + defer te.close() + + sqlSchema := `create table t1(id bigint(20) unsigned auto_increment, msg varchar(64), primary key (id)) Engine=InnoDB;` + te.tmc.schema[fmt.Sprintf("%s.t1", sourceKeyspace.KeyspaceName)] = &tabletmanagerdatapb.SchemaDefinition{ + DatabaseSchema: "CREATE DATABASE {{.DatabaseName}}", + TableDefinitions: []*tabletmanagerdatapb.TableDefinition{ + { + Name: "t1", + Schema: sqlSchema, + Columns: []string{ + "id", + "msg", + }, + Type: tmutils.TableBaseTable, + }, + }, + } + + // Expect queries on target shards + te.tmc.expectApplySchemaRequest(200, &applySchemaRequestResponse{ + change: &tmutils.SchemaChange{ + SQL: "CREATE DATABASE `vt_target_keyspace`", + Force: false, + AllowReplication: true, + SQLMode: vreplication.SQLMode, + }, + }) + te.tmc.expectApplySchemaRequest(200, &applySchemaRequestResponse{ + change: &tmutils.SchemaChange{ + SQL: sqlSchema, + Force: false, + AllowReplication: true, + SQLMode: vreplication.SQLMode, + }, + }) + + sourceTablet := te.tablets[sourceKeyspace.KeyspaceName][100] + err := te.ws.CopySchemaShard(ctx, sourceTablet.Alias, []string{"/.*/"}, nil, false, targetKeyspace.KeyspaceName, "-", 1*time.Second, true) + assert.NoError(t, err) + assert.Empty(t, te.tmc.applySchemaRequests[200]) +} + +func TestValidateShardsHaveVReplicationPermissions(t *testing.T) { + ctx := context.Background() + + sourceKeyspace := &testKeyspace{"source_keyspace", []string{"-"}} + targetKeyspace := &testKeyspace{"target_keyspace", []string{"-80", "80-"}} + + te := newTestEnv(t, ctx, defaultCellName, sourceKeyspace, targetKeyspace) + defer te.close() + + si1, err := te.ts.GetShard(ctx, targetKeyspace.KeyspaceName, targetKeyspace.ShardNames[0]) + require.NoError(t, err) + si2, err := te.ts.GetShard(ctx, targetKeyspace.KeyspaceName, targetKeyspace.ShardNames[1]) + require.NoError(t, err) + + testcases := []struct { + name string + response *validateVReplicationPermissionsResponse + expectedErrContains string + }{ + { + // Expect no error in this case. + name: "unimplemented error", + response: &validateVReplicationPermissionsResponse{ + err: status.Error(codes.Unimplemented, "unimplemented test"), + }, + }, + { + name: "tmc error", + response: &validateVReplicationPermissionsResponse{ + err: fmt.Errorf("tmc throws error"), + }, + expectedErrContains: "tmc throws error", + }, + { + name: "no permissions", + response: &validateVReplicationPermissionsResponse{ + res: &tabletmanagerdatapb.ValidateVReplicationPermissionsResponse{ + User: "vt_test_user", + Ok: false, + }, + }, + expectedErrContains: "vt_test_user does not have the required set of permissions", + }, + { + name: "success", + response: &validateVReplicationPermissionsResponse{ + res: &tabletmanagerdatapb.ValidateVReplicationPermissionsResponse{ + User: "vt_filtered", + Ok: true, + }, + }, + }, + } + + for _, tc := range testcases { + t.Run(tc.name, func(t *testing.T) { + te.tmc.expectValidateVReplicationPermissionsResponse(200, tc.response) + te.tmc.expectValidateVReplicationPermissionsResponse(210, tc.response) + err = te.ws.validateShardsHaveVReplicationPermissions(ctx, targetKeyspace.KeyspaceName, []*topo.ShardInfo{si1, si2}) + if tc.expectedErrContains == "" { + assert.NoError(t, err) + return + } + assert.ErrorContains(t, err, tc.expectedErrContains) + }) + } +} + +func TestWorkflowUpdate(t *testing.T) { + ctx := context.Background() + + sourceKeyspace := &testKeyspace{"source_keyspace", []string{"-"}} + targetKeyspace := &testKeyspace{"target_keyspace", []string{"-80", "80-"}} + + te := newTestEnv(t, ctx, defaultCellName, sourceKeyspace, targetKeyspace) + defer te.close() + + req := &vtctldatapb.WorkflowUpdateRequest{ + Keyspace: targetKeyspace.KeyspaceName, + TabletRequest: &tabletmanagerdatapb.UpdateVReplicationWorkflowRequest{ + Workflow: "wf1", + State: binlogdatapb.VReplicationWorkflowState_Running.Enum(), + }, + } + + testcases := []struct { + name string + response map[uint32]*tabletmanagerdatapb.UpdateVReplicationWorkflowResponse + err map[uint32]error + + // Match the tablet `changed` field from response. + expectedResponse map[uint32]bool + expectedErrContains string + }{ + { + name: "one tablet stream changed", + response: map[uint32]*tabletmanagerdatapb.UpdateVReplicationWorkflowResponse{ + 200: { + Result: &querypb.QueryResult{ + RowsAffected: 1, + }, + }, + 210: { + Result: &querypb.QueryResult{ + RowsAffected: 0, + }, + }, + }, + expectedResponse: map[uint32]bool{ + 200: true, + 210: false, + }, + }, + { + name: "two tablet stream changed", + response: map[uint32]*tabletmanagerdatapb.UpdateVReplicationWorkflowResponse{ + 200: { + Result: &querypb.QueryResult{ + RowsAffected: 1, + }, + }, + 210: { + Result: &querypb.QueryResult{ + RowsAffected: 2, + }, + }, + }, + expectedResponse: map[uint32]bool{ + 200: true, + 210: true, + }, + }, + { + name: "tablet throws error", + err: map[uint32]error{ + 200: fmt.Errorf("test error from 200"), + }, + expectedErrContains: "test error from 200", + }, + } + + for _, tc := range testcases { + t.Run(tc.name, func(t *testing.T) { + // Add responses + for tabletID, resp := range tc.response { + te.tmc.AddUpdateVReplicationWorkflowRequestResponse(tabletID, &updateVReplicationWorkflowRequestResponse{ + req: req.TabletRequest, + res: resp, + }) + } + // Add errors + for tabletID, err := range tc.err { + te.tmc.AddUpdateVReplicationWorkflowRequestResponse(tabletID, &updateVReplicationWorkflowRequestResponse{ + req: req.TabletRequest, + err: err, + }) + } + + res, err := te.ws.WorkflowUpdate(ctx, req) + if tc.expectedErrContains != "" { + assert.ErrorContains(t, err, tc.expectedErrContains) + return + } + + assert.NoError(t, err) + for tabletID, changed := range tc.expectedResponse { + i := slices.IndexFunc(res.Details, func(det *vtctldatapb.WorkflowUpdateResponse_TabletInfo) bool { + return det.Tablet.Uid == tabletID + }) + assert.NotEqual(t, -1, i) + assert.Equal(t, changed, res.Details[i].Changed) + } + }) + } +} + +func TestFinalizeMigrateWorkflow(t *testing.T) { + ctx := context.Background() + + workflowName := "wf1" + tableName1 := "t1" + tableName2 := "t2" + + sourceKeyspace := &testKeyspace{"source_keyspace", []string{"-"}} + targetKeyspace := &testKeyspace{"target_keyspace", []string{"-80", "80-"}} + + schema := map[string]*tabletmanagerdatapb.SchemaDefinition{ + tableName1: { + TableDefinitions: []*tabletmanagerdatapb.TableDefinition{ + { + Name: tableName1, + Schema: fmt.Sprintf("CREATE TABLE %s (id BIGINT, name VARCHAR(64), PRIMARY KEY (id))", tableName1), + }, + }, + }, + tableName2: { + TableDefinitions: []*tabletmanagerdatapb.TableDefinition{ + { + Name: tableName2, + Schema: fmt.Sprintf("CREATE TABLE %s (id BIGINT, name VARCHAR(64), PRIMARY KEY (id))", tableName2), + }, + }, + }, + } + + testcases := []struct { + name string + expectQueries []string + cancel bool + keepData bool + }{ + { + name: "cancel false, keepData true", + expectQueries: []string{ + "delete from _vt.vreplication where db_name = 'vt_target_keyspace' and workflow = 'wf1'", + }, + cancel: false, + keepData: true, + }, + { + name: "cancel true, keepData false", + expectQueries: []string{ + "delete from _vt.vreplication where db_name = 'vt_target_keyspace' and workflow = 'wf1'", + "drop table `vt_target_keyspace`.`t1`", + "drop table `vt_target_keyspace`.`t2`", + }, + cancel: true, + keepData: false, + }, + } + + for _, tc := range testcases { + t.Run(tc.name, func(t *testing.T) { + te := newTestEnv(t, ctx, defaultCellName, sourceKeyspace, targetKeyspace) + defer te.close() + te.tmc.schema = schema + + ts, _, err := te.ws.getWorkflowState(ctx, targetKeyspace.KeyspaceName, workflowName) + require.NoError(t, err) + + for _, q := range tc.expectQueries { + te.tmc.expectVRQuery(200, q, nil) + te.tmc.expectVRQuery(210, q, nil) + } + + _, err = te.ws.finalizeMigrateWorkflow(ctx, ts, "", tc.cancel, tc.keepData, false, false) + assert.NoError(t, err) + + ks, err := te.ts.GetSrvVSchema(ctx, "cell") + require.NoError(t, err) + assert.NotNil(t, ks.Keyspaces[targetKeyspace.KeyspaceName]) + + // Expect tables to be present in the VSchema if cancel was false. + if !tc.cancel { + assert.Len(t, ks.Keyspaces[targetKeyspace.KeyspaceName].Tables, 2) + assert.NotNil(t, ks.Keyspaces[targetKeyspace.KeyspaceName].Tables[tableName1]) + assert.NotNil(t, ks.Keyspaces[targetKeyspace.KeyspaceName].Tables[tableName2]) + } else { + assert.Len(t, ks.Keyspaces[targetKeyspace.KeyspaceName].Tables, 0) + assert.Nil(t, ks.Keyspaces[targetKeyspace.KeyspaceName].Tables[tableName1]) + assert.Nil(t, ks.Keyspaces[targetKeyspace.KeyspaceName].Tables[tableName2]) + } + + // Expect queries to be used. + assert.Empty(t, te.tmc.applySchemaRequests[200]) + assert.Empty(t, te.tmc.applySchemaRequests[210]) + }) + } +} diff --git a/go/vt/vtctl/workflow/stream_migrator.go b/go/vt/vtctl/workflow/stream_migrator.go index a700a1338dd..7b4fe69074f 100644 --- a/go/vt/vtctl/workflow/stream_migrator.go +++ b/go/vt/vtctl/workflow/stream_migrator.go @@ -203,12 +203,15 @@ func (sm *StreamMigrator) Templates() []*VReplicationStream { } // CancelStreamMigrations cancels the stream migrations. -func (sm *StreamMigrator) CancelStreamMigrations(ctx context.Context) { +func (sm *StreamMigrator) CancelStreamMigrations(ctx context.Context) error { if sm.streams == nil { - return + return nil } + errs := &concurrency.AllErrorRecorder{} - _ = sm.deleteTargetStreams(ctx) + if err := sm.deleteTargetStreams(ctx); err != nil { + errs.RecordError(fmt.Errorf("could not delete target streams: %v", err)) + } // Restart the source streams, but leave the Reshard workflow's reverse // variant stopped. @@ -221,8 +224,13 @@ func (sm *StreamMigrator) CancelStreamMigrations(ctx context.Context) { return err }) if err != nil { + errs.RecordError(fmt.Errorf("could not restart source streams: %v", err)) sm.logger.Errorf("Cancel stream migrations failed: could not restart source streams: %v", err) } + if errs.HasErrors() { + return errs.AggrError(vterrors.Aggregate) + } + return nil } // MigrateStreams migrates N streams diff --git a/go/vt/vtctl/workflow/switcher.go b/go/vt/vtctl/workflow/switcher.go index 789822b5be9..03d1a413e98 100644 --- a/go/vt/vtctl/workflow/switcher.go +++ b/go/vt/vtctl/workflow/switcher.go @@ -124,8 +124,8 @@ func (r *switcher) stopStreams(ctx context.Context, sm *StreamMigrator) ([]strin return sm.StopStreams(ctx) } -func (r *switcher) cancelMigration(ctx context.Context, sm *StreamMigrator) { - r.ts.cancelMigration(ctx, sm) +func (r *switcher) cancelMigration(ctx context.Context, sm *StreamMigrator) error { + return r.ts.cancelMigration(ctx, sm) } func (r *switcher) lockKeyspace(ctx context.Context, keyspace, action string, opts ...topo.LockOption) (context.Context, func(*error), error) { diff --git a/go/vt/vtctl/workflow/switcher_dry_run.go b/go/vt/vtctl/workflow/switcher_dry_run.go index 29c40f85a69..c7f66b93e14 100644 --- a/go/vt/vtctl/workflow/switcher_dry_run.go +++ b/go/vt/vtctl/workflow/switcher_dry_run.go @@ -301,8 +301,9 @@ func (dr *switcherDryRun) stopStreams(ctx context.Context, sm *StreamMigrator) ( return nil, nil } -func (dr *switcherDryRun) cancelMigration(ctx context.Context, sm *StreamMigrator) { +func (dr *switcherDryRun) cancelMigration(ctx context.Context, sm *StreamMigrator) error { dr.drLog.Log("Cancel migration as requested") + return nil } func (dr *switcherDryRun) lockKeyspace(ctx context.Context, keyspace, _ string, _ ...topo.LockOption) (context.Context, func(*error), error) { diff --git a/go/vt/vtctl/workflow/switcher_interface.go b/go/vt/vtctl/workflow/switcher_interface.go index 560b7a695fd..e780add1a2c 100644 --- a/go/vt/vtctl/workflow/switcher_interface.go +++ b/go/vt/vtctl/workflow/switcher_interface.go @@ -27,7 +27,7 @@ import ( type iswitcher interface { lockKeyspace(ctx context.Context, keyspace, action string, opts ...topo.LockOption) (context.Context, func(*error), error) - cancelMigration(ctx context.Context, sm *StreamMigrator) + cancelMigration(ctx context.Context, sm *StreamMigrator) error stopStreams(ctx context.Context, sm *StreamMigrator) ([]string, error) stopSourceWrites(ctx context.Context) error waitForCatchup(ctx context.Context, filteredReplicationWaitTime time.Duration) error diff --git a/go/vt/vtctl/workflow/traffic_switcher.go b/go/vt/vtctl/workflow/traffic_switcher.go index 4fc34992b0f..4463e30b711 100644 --- a/go/vt/vtctl/workflow/traffic_switcher.go +++ b/go/vt/vtctl/workflow/traffic_switcher.go @@ -409,7 +409,7 @@ func (ts *trafficSwitcher) addParticipatingTablesToKeyspace(ctx context.Context, vschema.Tables[table] = &vschemapb.Table{} } } - return ts.TopoServer().SaveVSchema(ctx, keyspace, vschema) + return ts.TopoServer().SaveVSchema(ctx, vschema) } func (ts *trafficSwitcher) deleteRoutingRules(ctx context.Context) error { @@ -538,7 +538,7 @@ func (ts *trafficSwitcher) dropParticipatingTablesFromKeyspace(ctx context.Conte for _, tableName := range ts.Tables() { delete(vschema.Tables, tableName) } - return ts.TopoServer().SaveVSchema(ctx, keyspace, vschema) + return ts.TopoServer().SaveVSchema(ctx, vschema) } func (ts *trafficSwitcher) removeSourceTables(ctx context.Context, removalType TableRemovalType) error { @@ -754,7 +754,7 @@ func (ts *trafficSwitcher) changeShardsAccess(ctx context.Context, keyspace stri func (ts *trafficSwitcher) allowTargetWrites(ctx context.Context) error { if ts.MigrationType() == binlogdatapb.MigrationType_TABLES { - return ts.switchDeniedTables(ctx) + return ts.switchDeniedTables(ctx, false) } return ts.changeShardsAccess(ctx, ts.TargetKeyspaceName(), ts.TargetShards(), allowWrites) } @@ -858,8 +858,8 @@ func (ts *trafficSwitcher) getReverseVReplicationUpdateQuery(targetCell string, } if ts.optCells != "" || ts.optTabletTypes != "" { - query := fmt.Sprintf("update _vt.vreplication set cell = '%s', tablet_types = '%s', options = '%s' where workflow = '%s' and db_name = '%s'", - ts.optCells, ts.optTabletTypes, options, ts.ReverseWorkflowName(), dbname) + query := fmt.Sprintf("update _vt.vreplication set cell = %s, tablet_types = %s, options = %s where workflow = %s and db_name = %s", + sqltypes.EncodeStringSQL(ts.optCells), sqltypes.EncodeStringSQL(ts.optTabletTypes), sqltypes.EncodeStringSQL(options), sqltypes.EncodeStringSQL(ts.ReverseWorkflowName()), sqltypes.EncodeStringSQL(dbname)) return query } return "" @@ -941,8 +941,8 @@ func (ts *trafficSwitcher) createReverseVReplication(ctx context.Context) error // For non-reference tables we return an error if there's no primary // vindex as it's not clear what to do. if len(vtable.ColumnVindexes) > 0 && len(vtable.ColumnVindexes[0].Columns) > 0 { - inKeyrange = fmt.Sprintf(" where in_keyrange(%s, '%s.%s', '%s')", sqlparser.String(vtable.ColumnVindexes[0].Columns[0]), - ts.SourceKeyspaceName(), vtable.ColumnVindexes[0].Name, key.KeyRangeString(source.GetShard().KeyRange)) + inKeyrange = fmt.Sprintf(" where in_keyrange(%s, '%s.%s', %s)", sqlparser.String(vtable.ColumnVindexes[0].Columns[0]), + ts.SourceKeyspaceName(), vtable.ColumnVindexes[0].Name, encodeString(key.KeyRangeString(source.GetShard().KeyRange))) } else { return vterrors.Errorf(vtrpcpb.Code_INTERNAL, "no primary vindex found for the %s table in the %s keyspace", vtable.Name.String(), ts.SourceKeyspaceName()) @@ -1013,7 +1013,7 @@ func (ts *trafficSwitcher) buildTenantPredicate(ctx context.Context) (*sqlparser if err != nil { return nil, err } - targetVSchema, err := vindexes.BuildKeyspaceSchema(vschema, ts.targetKeyspace, parser) + targetVSchema, err := vindexes.BuildKeyspaceSchema(vschema.Keyspace, ts.targetKeyspace, parser) if err != nil { return nil, err } @@ -1062,7 +1062,7 @@ func (ts *trafficSwitcher) waitForCatchup(ctx context.Context, filteredReplicati func (ts *trafficSwitcher) stopSourceWrites(ctx context.Context) error { var err error if ts.MigrationType() == binlogdatapb.MigrationType_TABLES { - err = ts.switchDeniedTables(ctx) + err = ts.switchDeniedTables(ctx, false) } else { err = ts.changeShardsAccess(ctx, ts.SourceKeyspaceName(), ts.SourceShards(), disallowWrites) } @@ -1074,17 +1074,27 @@ func (ts *trafficSwitcher) stopSourceWrites(ctx context.Context) error { } // switchDeniedTables switches the denied tables rules for the traffic switch. -// They are removed on the source side and added on the target side. -func (ts *trafficSwitcher) switchDeniedTables(ctx context.Context) error { +// They are added on the source side and removed on the target side. +// If backward is true, then we swap this logic, removing on the source side +// and adding on the target side. You would want to do that e.g. when canceling +// a failed (and currently partial) traffic switch as we may have already +// switched the denied tables entries and in any event we need to go back to +// the original state. +func (ts *trafficSwitcher) switchDeniedTables(ctx context.Context, backward bool) error { if ts.MigrationType() != binlogdatapb.MigrationType_TABLES { return nil } + rmsource, rmtarget := false, true + if backward { + rmsource, rmtarget = true, false + } + egrp, ectx := errgroup.WithContext(ctx) egrp.Go(func() error { return ts.ForAllSources(func(source *MigrationSource) error { if _, err := ts.TopoServer().UpdateShardFields(ctx, ts.SourceKeyspaceName(), source.GetShard().ShardName(), func(si *topo.ShardInfo) error { - return si.UpdateDeniedTables(ectx, topodatapb.TabletType_PRIMARY, nil, false, ts.Tables()) + return si.UpdateDeniedTables(ectx, topodatapb.TabletType_PRIMARY, nil, rmsource, ts.Tables()) }); err != nil { return err } @@ -1107,7 +1117,7 @@ func (ts *trafficSwitcher) switchDeniedTables(ctx context.Context) error { egrp.Go(func() error { return ts.ForAllTargets(func(target *MigrationTarget) error { if _, err := ts.TopoServer().UpdateShardFields(ectx, ts.TargetKeyspaceName(), target.GetShard().ShardName(), func(si *topo.ShardInfo) error { - return si.UpdateDeniedTables(ctx, topodatapb.TabletType_PRIMARY, nil, true, ts.Tables()) + return si.UpdateDeniedTables(ctx, topodatapb.TabletType_PRIMARY, nil, rmtarget, ts.Tables()) }); err != nil { return err } @@ -1137,8 +1147,9 @@ func (ts *trafficSwitcher) switchDeniedTables(ctx context.Context) error { // cancelMigration attempts to revert all changes made during the migration so that we can get back to the // state when traffic switching (or reversing) was initiated. -func (ts *trafficSwitcher) cancelMigration(ctx context.Context, sm *StreamMigrator) { +func (ts *trafficSwitcher) cancelMigration(ctx context.Context, sm *StreamMigrator) error { var err error + cancelErrs := &concurrency.AllErrorRecorder{} if ctx.Err() != nil { // Even though we create a new context later on we still record any context error: @@ -1147,21 +1158,29 @@ func (ts *trafficSwitcher) cancelMigration(ctx context.Context, sm *StreamMigrat } // We create a new context while canceling the migration, so that we are independent of the original - // context being cancelled prior to or during the cancel operation. - cmTimeout := 60 * time.Second - cmCtx, cmCancel := context.WithTimeout(context.Background(), cmTimeout) + // context being canceled prior to or during the cancel operation itself. + // First we create a copy of the parent context, so that we maintain the locks, but which cannot be + // canceled by the parent context. + wcCtx := context.WithoutCancel(ctx) + // Now we create a child context from that which has a timeout. + cmTimeout := 2 * time.Minute + cmCtx, cmCancel := context.WithTimeout(wcCtx, cmTimeout) defer cmCancel() if ts.MigrationType() == binlogdatapb.MigrationType_TABLES { - err = ts.switchDeniedTables(cmCtx) + err = ts.switchDeniedTables(cmCtx, true /* revert */) } else { err = ts.changeShardsAccess(cmCtx, ts.SourceKeyspaceName(), ts.SourceShards(), allowWrites) } if err != nil { + cancelErrs.RecordError(fmt.Errorf("could not revert denied tables / shard access: %v", err)) ts.Logger().Errorf("Cancel migration failed: could not revert denied tables / shard access: %v", err) } - sm.CancelStreamMigrations(cmCtx) + if err := sm.CancelStreamMigrations(cmCtx); err != nil { + cancelErrs.RecordError(fmt.Errorf("could not cancel stream migrations: %v", err)) + ts.Logger().Errorf("Cancel migration failed: could not cancel stream migrations: %v", err) + } err = ts.ForAllTargets(func(target *MigrationTarget) error { query := fmt.Sprintf("update _vt.vreplication set state='Running', message='' where db_name=%s and workflow=%s", @@ -1170,13 +1189,19 @@ func (ts *trafficSwitcher) cancelMigration(ctx context.Context, sm *StreamMigrat return err }) if err != nil { + cancelErrs.RecordError(fmt.Errorf("could not restart vreplication: %v", err)) ts.Logger().Errorf("Cancel migration failed: could not restart vreplication: %v", err) } - err = ts.deleteReverseVReplication(cmCtx) - if err != nil { + if err := ts.deleteReverseVReplication(cmCtx); err != nil { + cancelErrs.RecordError(fmt.Errorf("could not delete reverse vreplication streams: %v", err)) ts.Logger().Errorf("Cancel migration failed: could not delete reverse vreplication streams: %v", err) } + + if cancelErrs.HasErrors() { + return vterrors.Wrap(cancelErrs.AggrError(vterrors.Aggregate), "cancel migration failed, manual cleanup work may be necessary") + } + return nil } func (ts *trafficSwitcher) freezeTargetVReplication(ctx context.Context) error { @@ -1184,7 +1209,7 @@ func (ts *trafficSwitcher) freezeTargetVReplication(ctx context.Context) error { // re-invoked after a freeze, it will skip all the previous steps err := ts.ForAllTargets(func(target *MigrationTarget) error { ts.Logger().Infof("Marking target streams frozen for workflow %s db_name %s", ts.WorkflowName(), target.GetPrimary().DbName()) - query := fmt.Sprintf("update _vt.vreplication set message = '%s' where db_name=%s and workflow=%s", Frozen, + query := fmt.Sprintf("update _vt.vreplication set message = %s where db_name=%s and workflow=%s", encodeString(Frozen), encodeString(target.GetPrimary().DbName()), encodeString(ts.WorkflowName())) _, err := ts.TabletManagerClient().VReplicationExec(ctx, target.GetPrimary().Tablet, query) return err @@ -1441,7 +1466,7 @@ func (ts *trafficSwitcher) getTargetSequenceMetadata(ctx context.Context) (map[s return nil, nil } - sequencesByBackingTable, backingTablesFound, err := ts.findSequenceUsageInKeyspace(vschema) + sequencesByBackingTable, backingTablesFound, err := ts.findSequenceUsageInKeyspace(vschema.Keyspace) if err != nil { return nil, err } @@ -1609,7 +1634,7 @@ func (ts trafficSwitcher) createMissingSequenceTables(ctx context.Context, seque } } if updatedGlobalVSchema { - err = ts.ws.ts.SaveVSchema(ctx, globalKeyspace, globalVSchema) + err = ts.ws.ts.SaveVSchema(ctx, globalVSchema) if err != nil { return vterrors.Wrapf(err, "failed to update vschema in the global-keyspace %s", globalKeyspace) } diff --git a/go/vt/vtctl/workflow/traffic_switcher_test.go b/go/vt/vtctl/workflow/traffic_switcher_test.go index b06c95b6c16..eb8c877e255 100644 --- a/go/vt/vtctl/workflow/traffic_switcher_test.go +++ b/go/vt/vtctl/workflow/traffic_switcher_test.go @@ -30,6 +30,7 @@ import ( "vitess.io/vitess/go/sqlescape" "vitess.io/vitess/go/sqltypes" "vitess.io/vitess/go/vt/mysqlctl/tmutils" + "vitess.io/vitess/go/vt/proto/binlogdata" "vitess.io/vitess/go/vt/proto/vschema" "vitess.io/vitess/go/vt/sqlparser" "vitess.io/vitess/go/vt/topo" @@ -534,9 +535,15 @@ func TestGetTargetSequenceMetadata(t *testing.T) { for _, tc := range tests { t.Run(tc.name, func(t *testing.T) { - err := env.ts.SaveVSchema(ctx, sourceKeyspace.KeyspaceName, tc.sourceVSchema) + err := env.ts.SaveVSchema(ctx, &topo.KeyspaceVSchemaInfo{ + Name: sourceKeyspace.KeyspaceName, + Keyspace: tc.sourceVSchema, + }) require.NoError(t, err) - err = env.ts.SaveVSchema(ctx, targetKeyspace.KeyspaceName, tc.targetVSchema) + err = env.ts.SaveVSchema(ctx, &topo.KeyspaceVSchemaInfo{ + Name: targetKeyspace.KeyspaceName, + Keyspace: tc.targetVSchema, + }) require.NoError(t, err) err = env.ts.RebuildSrvVSchema(ctx, nil) require.NoError(t, err) @@ -750,10 +757,13 @@ func TestAddTenantFilter(t *testing.T) { defer env.close() env.tmc.schema = schema - err := env.ts.SaveVSchema(ctx, targetKeyspaceName, &vschema.Keyspace{ - MultiTenantSpec: &vschema.MultiTenantSpec{ - TenantIdColumnName: "tenant_id", - TenantIdColumnType: sqltypes.Int64, + err := env.ts.SaveVSchema(ctx, &topo.KeyspaceVSchemaInfo{ + Name: targetKeyspaceName, + Keyspace: &vschema.Keyspace{ + MultiTenantSpec: &vschema.MultiTenantSpec{ + TenantIdColumnName: "tenant_id", + TenantIdColumnType: sqltypes.Int64, + }, }, }) require.NoError(t, err) @@ -903,3 +913,125 @@ func TestAddParticipatingTablesToKeyspace(t *testing.T) { assert.Len(t, vs.Tables["t1"].ColumnVindexes, 2) assert.Len(t, vs.Tables["t2"].ColumnVindexes, 1) } + +func TestCancelMigration_TABLES(t *testing.T) { + ctx, cancel := context.WithTimeout(context.Background(), 60*time.Second) + defer cancel() + + workflowName := "wf1" + tableName := "t1" + + sourceKeyspace := &testKeyspace{ + KeyspaceName: "sourceks", + ShardNames: []string{"0"}, + } + targetKeyspace := &testKeyspace{ + KeyspaceName: "targetks", + ShardNames: []string{"0"}, + } + + schema := map[string]*tabletmanagerdatapb.SchemaDefinition{ + tableName: { + TableDefinitions: []*tabletmanagerdatapb.TableDefinition{ + { + Name: tableName, + Schema: fmt.Sprintf("CREATE TABLE %s (id BIGINT, name VARCHAR(64), PRIMARY KEY (id))", tableName), + }, + }, + }, + } + + env := newTestEnv(t, ctx, defaultCellName, sourceKeyspace, targetKeyspace) + defer env.close() + env.tmc.schema = schema + + ts, _, err := env.ws.getWorkflowState(ctx, targetKeyspace.KeyspaceName, workflowName) + require.NoError(t, err) + + sm, err := BuildStreamMigrator(ctx, ts, false, sqlparser.NewTestParser()) + require.NoError(t, err) + + env.tmc.expectVRQuery(200, "update _vt.vreplication set state='Running', message='' where db_name='vt_targetks' and workflow='wf1'", &sqltypes.Result{}) + env.tmc.expectVRQuery(100, "delete from _vt.vreplication where db_name = 'vt_sourceks' and workflow = 'wf1_reverse'", &sqltypes.Result{}) + + ctx, _, err = env.ts.LockKeyspace(ctx, targetKeyspace.KeyspaceName, "test") + require.NoError(t, err) + + ctx, _, err = env.ts.LockKeyspace(ctx, sourceKeyspace.KeyspaceName, "test") + require.NoError(t, err) + + err = topo.CheckKeyspaceLocked(ctx, ts.targetKeyspace) + require.NoError(t, err) + + err = topo.CheckKeyspaceLocked(ctx, ts.sourceKeyspace) + require.NoError(t, err) + + err = ts.cancelMigration(ctx, sm) + require.NoError(t, err) + + // Expect the queries to be cleared + assert.Empty(t, env.tmc.vrQueries[100]) + assert.Empty(t, env.tmc.vrQueries[200]) +} + +func TestCancelMigration_SHARDS(t *testing.T) { + ctx, cancel := context.WithTimeout(context.Background(), 60*time.Second) + defer cancel() + + workflowName := "wf1" + tableName := "t1" + + sourceKeyspace := &testKeyspace{ + KeyspaceName: "sourceks", + ShardNames: []string{"0"}, + } + targetKeyspace := &testKeyspace{ + KeyspaceName: "targetks", + ShardNames: []string{"0"}, + } + + schema := map[string]*tabletmanagerdatapb.SchemaDefinition{ + tableName: { + TableDefinitions: []*tabletmanagerdatapb.TableDefinition{ + { + Name: tableName, + Schema: fmt.Sprintf("CREATE TABLE %s (id BIGINT, name VARCHAR(64), PRIMARY KEY (id))", tableName), + }, + }, + }, + } + + env := newTestEnv(t, ctx, defaultCellName, sourceKeyspace, targetKeyspace) + defer env.close() + env.tmc.schema = schema + + ts, _, err := env.ws.getWorkflowState(ctx, targetKeyspace.KeyspaceName, workflowName) + require.NoError(t, err) + ts.migrationType = binlogdata.MigrationType_SHARDS + + sm, err := BuildStreamMigrator(ctx, ts, false, sqlparser.NewTestParser()) + require.NoError(t, err) + + env.tmc.expectVRQuery(100, "update /*vt+ ALLOW_UNSAFE_VREPLICATION_WRITE */ _vt.vreplication set state='Running', stop_pos=null, message='' where db_name='vt_sourceks' and workflow != 'wf1_reverse'", &sqltypes.Result{}) + env.tmc.expectVRQuery(200, "update _vt.vreplication set state='Running', message='' where db_name='vt_targetks' and workflow='wf1'", &sqltypes.Result{}) + env.tmc.expectVRQuery(100, "delete from _vt.vreplication where db_name = 'vt_sourceks' and workflow = 'wf1_reverse'", &sqltypes.Result{}) + + ctx, _, err = env.ts.LockKeyspace(ctx, targetKeyspace.KeyspaceName, "test") + require.NoError(t, err) + + ctx, _, err = env.ts.LockKeyspace(ctx, sourceKeyspace.KeyspaceName, "test") + require.NoError(t, err) + + err = topo.CheckKeyspaceLocked(ctx, ts.targetKeyspace) + require.NoError(t, err) + + err = topo.CheckKeyspaceLocked(ctx, ts.sourceKeyspace) + require.NoError(t, err) + + err = ts.cancelMigration(ctx, sm) + require.NoError(t, err) + + // Expect the queries to be cleared + assert.Empty(t, env.tmc.vrQueries[100]) + assert.Empty(t, env.tmc.vrQueries[200]) +} diff --git a/go/vt/vtctl/workflow/utils.go b/go/vt/vtctl/workflow/utils.go index 593cdeda46f..571c40b474f 100644 --- a/go/vt/vtctl/workflow/utils.go +++ b/go/vt/vtctl/workflow/utils.go @@ -17,7 +17,6 @@ limitations under the License. package workflow import ( - "bytes" "context" "encoding/json" "fmt" @@ -627,9 +626,7 @@ func ReverseWorkflowName(workflow string) string { // this public, but it doesn't belong in package workflow. Maybe package sqltypes, // or maybe package sqlescape? func encodeString(in string) string { - buf := bytes.NewBuffer(nil) - sqltypes.NewVarChar(in).EncodeSQL(buf) - return buf.String() + return sqltypes.EncodeStringSQL(in) } func getRenameFileName(tableName string) string { @@ -1055,7 +1052,7 @@ func validateSourceTablesExist(sourceKeyspace string, ksTables, tables []string) // getVindexAndVSchema gets the vindex (from VSchema) and VSchema with the // provided vindex name and keyspace. -func getVindexAndVSchema(ctx context.Context, ts *topo.Server, keyspace string, vindexName string) (*vschemapb.Vindex, *vschemapb.Keyspace, error) { +func getVindexAndVSchema(ctx context.Context, ts *topo.Server, keyspace string, vindexName string) (*vschemapb.Vindex, *topo.KeyspaceVSchemaInfo, error) { vschema, err := ts.GetVSchema(ctx, keyspace) if err != nil { return nil, nil, vterrors.Errorf(vtrpcpb.Code_INTERNAL, "failed to get vschema for the %s keyspace", keyspace) diff --git a/go/vt/vtctl/workflow/utils_test.go b/go/vt/vtctl/workflow/utils_test.go index eecbfd6269b..99850639ac5 100644 --- a/go/vt/vtctl/workflow/utils_test.go +++ b/go/vt/vtctl/workflow/utils_test.go @@ -15,6 +15,7 @@ import ( "github.com/stretchr/testify/require" clientv3 "go.etcd.io/etcd/client/v3" + "vitess.io/vitess/go/sqltypes" "vitess.io/vitess/go/testfiles" "vitess.io/vitess/go/vt/log" "vitess.io/vitess/go/vt/topo" @@ -22,6 +23,7 @@ import ( "vitess.io/vitess/go/vt/topo/memorytopo" "vitess.io/vitess/go/vt/topotools" + tabletmanagerdatapb "vitess.io/vitess/go/vt/proto/tabletmanagerdata" "vitess.io/vitess/go/vt/proto/vtctldata" ) @@ -280,3 +282,77 @@ func TestValidateSourceTablesExist(t *testing.T) { }) } } + +func TestLegacyBuildTargets(t *testing.T) { + ctx, cancel := context.WithTimeout(context.Background(), 60*time.Second) + defer cancel() + + workflowName := "wf1" + tableName := "t1" + + sourceKeyspace := &testKeyspace{ + KeyspaceName: "sourceks", + ShardNames: []string{"0"}, + } + targetKeyspace := &testKeyspace{ + KeyspaceName: "targetks", + ShardNames: []string{"-80", "80-"}, + } + + schema := map[string]*tabletmanagerdatapb.SchemaDefinition{ + tableName: { + TableDefinitions: []*tabletmanagerdatapb.TableDefinition{ + { + Name: tableName, + Schema: fmt.Sprintf("CREATE TABLE %s (id BIGINT, name VARCHAR(64), PRIMARY KEY (id))", tableName), + }, + }, + }, + } + + env := newTestEnv(t, ctx, defaultCellName, sourceKeyspace, targetKeyspace) + defer env.close() + env.tmc.schema = schema + + result1 := sqltypes.MakeTestResult(sqltypes.MakeTestFields( + "id|source|message|cell|tablet_types|workflow_type|workflow_sub_type|defer_secondary_keys", + "int64|varchar|varchar|varchar|varchar|int64|int64|int64"), + "1|keyspace:\"source\" shard:\"-80\" filter:{rules:{match:\"t1\"} rules:{match:\"t2\"}}||||0|0|0", + ) + result2 := sqltypes.MakeTestResult(sqltypes.MakeTestFields( + "id|source|message|cell|tablet_types|workflow_type|workflow_sub_type|defer_secondary_keys", + "int64|varchar|varchar|varchar|varchar|int64|int64|int64"), + "1|keyspace:\"source\" shard:\"80-\" filter:{rules:{match:\"t1\"} rules:{match:\"t2\"}}||||0|0|0", + "2|keyspace:\"source\" shard:\"80-\" filter:{rules:{match:\"t3\"} rules:{match:\"t4\"}}||||0|0|0", + ) + env.tmc.expectVRQuery(200, "select id, source, message, cell, tablet_types, workflow_type, workflow_sub_type, defer_secondary_keys from _vt.vreplication where workflow='wf1' and db_name='vt_targetks'", result1) + env.tmc.expectVRQuery(210, "select id, source, message, cell, tablet_types, workflow_type, workflow_sub_type, defer_secondary_keys from _vt.vreplication where workflow='wf1' and db_name='vt_targetks'", result2) + + ti, err := LegacyBuildTargets(ctx, env.ts, env.tmc, targetKeyspace.KeyspaceName, workflowName, targetKeyspace.ShardNames) + require.NoError(t, err) + // Expect 2 targets as there are 2 target shards. + assert.Len(t, ti.Targets, 2) + + assert.NotNil(t, ti.Targets["-80"]) + assert.NotNil(t, ti.Targets["80-"]) + + t1 := ti.Targets["-80"] + t2 := ti.Targets["80-"] + assert.Len(t, t1.Sources, 1) + assert.Len(t, t2.Sources, 2) + assert.Len(t, t1.Sources[1].Filter.Rules, 2) + + assert.Equal(t, t1.Sources[1].Filter.Rules[0].Match, "t1") + assert.Equal(t, t1.Sources[1].Filter.Rules[1].Match, "t2") + assert.Equal(t, t1.Sources[1].Shard, "-80") + + assert.Len(t, t2.Sources[1].Filter.Rules, 2) + assert.Len(t, t2.Sources[2].Filter.Rules, 2) + + assert.Equal(t, t2.Sources[1].Shard, "80-") + assert.Equal(t, t2.Sources[2].Shard, "80-") + assert.Equal(t, t2.Sources[1].Filter.Rules[0].Match, "t1") + assert.Equal(t, t2.Sources[1].Filter.Rules[1].Match, "t2") + assert.Equal(t, t2.Sources[2].Filter.Rules[0].Match, "t3") + assert.Equal(t, t2.Sources[2].Filter.Rules[1].Match, "t4") +} diff --git a/go/vt/vtctl/workflow/workflows.go b/go/vt/vtctl/workflow/workflows.go index da0ee5dfec7..a1b4393f2c0 100644 --- a/go/vt/vtctl/workflow/workflows.go +++ b/go/vt/vtctl/workflow/workflows.go @@ -446,35 +446,11 @@ func (wf *workflowFetcher) scanWorkflow( workflow.WorkflowSubType = res.WorkflowSubType.String() workflow.DeferSecondaryKeys = res.DeferSecondaryKeys - // MaxVReplicationTransactionLag estimates the actual statement processing lag - // between the source and the target. If we are still processing source events it - // is the difference b/w current time and the timestamp of the last event. If - // heartbeats are more recent than the last event, then the lag is the time since - // the last heartbeat as there can be an actual event immediately after the - // heartbeat, but which has not yet been processed on the target. - // We don't allow switching during the copy phase, so in that case we just return - // a large lag. All timestamps are in seconds since epoch. - if rstream.TransactionTimestamp == nil { - rstream.TransactionTimestamp = &vttimepb.Time{} - } - lastTransactionTime := rstream.TransactionTimestamp.Seconds - if rstream.TimeHeartbeat == nil { - rstream.TimeHeartbeat = &vttimepb.Time{} - } - lastHeartbeatTime := rstream.TimeHeartbeat.Seconds - if stream.State == binlogdatapb.VReplicationWorkflowState_Copying.String() { - meta.maxVReplicationTransactionLag = math.MaxInt64 - } else { - if lastTransactionTime == 0 /* no new events after copy */ || - lastHeartbeatTime > lastTransactionTime /* no recent transactions, so all caught up */ { - - lastTransactionTime = lastHeartbeatTime - } - now := time.Now().Unix() /* seconds since epoch */ - transactionReplicationLag := float64(now - lastTransactionTime) - if transactionReplicationLag > meta.maxVReplicationTransactionLag { - meta.maxVReplicationTransactionLag = transactionReplicationLag - } + // MaxVReplicationTransactionLag estimates the max statement processing lag + // between the source and the target across all of the workflow streams. + transactionReplicationLag := getVReplicationTrxLag(rstream.TransactionTimestamp, rstream.TimeUpdated, rstream.TimeHeartbeat, rstream.State) + if transactionReplicationLag > meta.maxVReplicationTransactionLag { + meta.maxVReplicationTransactionLag = transactionReplicationLag } } @@ -670,3 +646,41 @@ func getStreamState(stream *vtctldatapb.Workflow_Stream, rstream *tabletmanagerd } return rstream.State.String() } + +// getVReplicationTrxLag estimates the actual statement processing lag between the +// source and the target. If we are still processing source events it is the +// difference between current time and the timestamp of the last event. If +// heartbeats are more recent than the last event, then the lag is the time since +// the last heartbeat as there can be an actual event immediately after the +// heartbeat, but which has not yet been processed on the target. We don't allow +// switching during the copy phase, so in that case we just return a large lag. +// All timestamps are in seconds since epoch. +func getVReplicationTrxLag(trxTs, updatedTs, heartbeatTs *vttimepb.Time, state binlogdatapb.VReplicationWorkflowState) float64 { + if state == binlogdatapb.VReplicationWorkflowState_Copying { + return math.MaxInt64 + } + if trxTs == nil { + trxTs = &vttimepb.Time{} + } + lastTransactionTime := trxTs.Seconds + if updatedTs == nil { + updatedTs = &vttimepb.Time{} + } + lastUpdatedTime := updatedTs.Seconds + if heartbeatTs == nil { + heartbeatTs = &vttimepb.Time{} + } + lastHeartbeatTime := heartbeatTs.Seconds + // We do NOT update the heartbeat timestamp when we are regularly updating the + // position as we replicate transactions (GTIDs). + // When we DO record a heartbeat, we set the updated time to the same value. + // When recording that we are throttled, we update the updated time but NOT + // the heartbeat time. + if lastTransactionTime == 0 /* No replicated events after copy */ || + (lastUpdatedTime == lastHeartbeatTime && /* The last update was from a heartbeat */ + lastUpdatedTime > lastTransactionTime /* No recent transactions, only heartbeats, so all caught up */) { + lastTransactionTime = lastUpdatedTime + } + now := time.Now().Unix() // Seconds since epoch + return float64(now - lastTransactionTime) +} diff --git a/go/vt/vtctld/api_test.go b/go/vt/vtctld/api_test.go index 4166ca3293b..2809c37540d 100644 --- a/go/vt/vtctld/api_test.go +++ b/go/vt/vtctld/api_test.go @@ -28,6 +28,7 @@ import ( "github.com/stretchr/testify/require" "vitess.io/vitess/go/vt/servenv/testutils" + "vitess.io/vitess/go/vt/topo" "vitess.io/vitess/go/vt/topo/memorytopo" "vitess.io/vitess/go/vt/vtctl/reparentutil/policy" "vitess.io/vitess/go/vt/vtenv" @@ -82,7 +83,10 @@ func TestAPI(t *testing.T) { }, }, } - ts.SaveVSchema(ctx, "ks1", vs) + ts.SaveVSchema(ctx, &topo.KeyspaceVSchemaInfo{ + Name: "ks1", + Keyspace: vs, + }) tablet1 := topodatapb.Tablet{ Alias: &topodatapb.TabletAlias{Cell: "cell1", Uid: 100}, diff --git a/go/vt/vtgate/buffer/shard_buffer.go b/go/vt/vtgate/buffer/shard_buffer.go index 66c6ee702e6..f3196a16415 100644 --- a/go/vt/vtgate/buffer/shard_buffer.go +++ b/go/vt/vtgate/buffer/shard_buffer.go @@ -286,7 +286,7 @@ func (sb *shardBuffer) startBufferingLocked(ctx context.Context, kev *discovery. msg = "Dry-run: Would have started buffering" } starts.Add(sb.statsKey, 1) - log.V(2).Infof("%v for shard: %s (window: %v, size: %v, max failover duration: %v) (A failover was detected by this seen error: %v.)", + log.Infof("%v for shard: %s (window: %v, size: %v, max failover duration: %v) (A failover was detected by this seen error: %v.)", msg, topoproto.KeyspaceShardString(sb.keyspace, sb.shard), sb.buf.config.Window, @@ -562,7 +562,7 @@ func (sb *shardBuffer) stopBufferingLocked(reason stopReason, details string) { if sb.mode == bufferModeDryRun { msg = "Dry-run: Would have stopped buffering" } - log.V(2).Infof("%v for shard: %s after: %.1f seconds due to: %v. Draining %d buffered requests now.", + log.Infof("%v for shard: %s after: %.1f seconds due to: %v. Draining %d buffered requests now.", msg, topoproto.KeyspaceShardString(sb.keyspace, sb.shard), d.Seconds(), details, len(q)) var clientEntryError error @@ -622,7 +622,7 @@ func (sb *shardBuffer) drain(q []*entry, err error) { wg.Wait() d := sb.timeNow().Sub(start) - log.V(2).Infof("Draining finished for shard: %s Took: %v for: %d requests.", topoproto.KeyspaceShardString(sb.keyspace, sb.shard), d, len(q)) + log.Infof("Draining finished for shard: %s Took: %v for: %d requests.", topoproto.KeyspaceShardString(sb.keyspace, sb.shard), d, len(q)) requestsDrained.Add(sb.statsKey, int64(len(q))) // Draining is done. Change state from "draining" to "idle". diff --git a/go/vt/vtgate/evalengine/cached_size.go b/go/vt/vtgate/evalengine/cached_size.go index d51c65c75b4..b953afda95c 100644 --- a/go/vt/vtgate/evalengine/cached_size.go +++ b/go/vt/vtgate/evalengine/cached_size.go @@ -175,6 +175,20 @@ func (cached *Column) CachedSize(alloc bool) int64 { } return size } +func (cached *Comparison) CachedSize(alloc bool) int64 { + if cached == nil { + return int64(0) + } + size := int64(0) + if alloc { + size += int64(24) + } + size += hack.RuntimeAllocSize(int64(cap(*cached)) * int64(56)) + for _, elem := range *cached { + size += elem.CachedSize(false) + } + return size +} func (cached *ComparisonExpr) CachedSize(alloc bool) int64 { if cached == nil { return int64(0) @@ -245,6 +259,20 @@ func (cached *ConvertUsingExpr) CachedSize(alloc bool) int64 { size += cached.CollationEnv.CachedSize(true) return size } +func (cached *EnumSetValues) CachedSize(alloc bool) int64 { + if cached == nil { + return int64(0) + } + size := int64(0) + if alloc { + size += int64(24) + } + size += hack.RuntimeAllocSize(int64(cap(*cached)) * int64(16)) + for _, elem := range *cached { + size += hack.RuntimeAllocSize(int64(len(elem))) + } + return size +} func (cached *InExpr) CachedSize(alloc bool) int64 { if cached == nil { return int64(0) @@ -391,6 +419,22 @@ func (cached *TupleBindVariable) CachedSize(alloc bool) int64 { size += hack.RuntimeAllocSize(int64(len(cached.Key))) return size } +func (cached *TupleExpr) CachedSize(alloc bool) int64 { + if cached == nil { + return int64(0) + } + size := int64(0) + if alloc { + size += int64(24) + } + size += hack.RuntimeAllocSize(int64(cap(*cached)) * int64(16)) + for _, elem := range *cached { + if cc, ok := elem.(cachedObject); ok { + size += cc.CachedSize(true) + } + } + return size +} func (cached *Type) CachedSize(alloc bool) int64 { if cached == nil { return int64(0) @@ -2114,6 +2158,9 @@ func (cached *evalYear) CachedSize(alloc bool) int64 { } return size } +func (cached *frame) CachedSize(alloc bool) int64 { + return int64(0) +} func (cached *typedExpr) CachedSize(alloc bool) int64 { if cached == nil { return int64(0) diff --git a/go/vt/vtgate/executor_test.go b/go/vt/vtgate/executor_test.go index 904805e789b..5e7e5c2a07d 100644 --- a/go/vt/vtgate/executor_test.go +++ b/go/vt/vtgate/executor_test.go @@ -1860,6 +1860,30 @@ func TestPassthroughDDL(t *testing.T) { sbc2.Queries = nil } +func TestShowStatus(t *testing.T) { + executor, sbc1, _, _, ctx := createExecutorEnvWithConfig(t, createExecutorConfigWithNormalizer()) + session := &vtgatepb.Session{ + TargetString: "TestExecutor", + } + + sql1 := "show slave status" + _, err := executorExec(ctx, executor, session, sql1, nil) + require.NoError(t, err) + + sql2 := "show replica status" + _, err = executorExec(ctx, executor, session, sql2, nil) + require.NoError(t, err) + + wantQueries := []*querypb.BoundQuery{{ + Sql: sql1, + BindVariables: map[string]*querypb.BindVariable{}, + }, { + Sql: sql2, + BindVariables: map[string]*querypb.BindVariable{}, + }} + assert.Equal(t, wantQueries, sbc1.Queries) +} + func TestParseEmptyTargetSingleKeyspace(t *testing.T) { r, _, _, _, _ := createExecutorEnv(t) diff --git a/go/vt/vtgate/executorcontext/vcursor_impl.go b/go/vt/vtgate/executorcontext/vcursor_impl.go index 79a46c86496..4d3f631bac5 100644 --- a/go/vt/vtgate/executorcontext/vcursor_impl.go +++ b/go/vt/vtgate/executorcontext/vcursor_impl.go @@ -123,7 +123,7 @@ type ( // VSchemaOperator is an interface to Vschema Operations VSchemaOperator interface { GetCurrentSrvVschema() *vschemapb.SrvVSchema - UpdateVSchema(ctx context.Context, ksName string, vschema *vschemapb.SrvVSchema) error + UpdateVSchema(ctx context.Context, ks *topo.KeyspaceVSchemaInfo, vschema *vschemapb.SrvVSchema) error } // VCursorImpl implements the VCursor functionality used by dependent @@ -1401,7 +1401,10 @@ func (vc *VCursorImpl) ExecuteVSchema(ctx context.Context, keyspace string, vsch } // Resolve the keyspace either from the table qualifier or the target keyspace - var ksName string + var ( + ksName string + err error + ) if !vschemaDDL.Table.IsEmpty() { ksName = vschemaDDL.Table.Qualifier.String() } @@ -1412,15 +1415,14 @@ func (vc *VCursorImpl) ExecuteVSchema(ctx context.Context, keyspace string, vsch return ErrNoKeyspace } - ks := srvVschema.Keyspaces[ksName] - ks, err := topotools.ApplyVSchemaDDL(ksName, ks, vschemaDDL) + ksvs, err := topotools.ApplyVSchemaDDL(ctx, ksName, vc.topoServer, vschemaDDL) if err != nil { return err } - srvVschema.Keyspaces[ksName] = ks + srvVschema.Keyspaces[ksName] = ksvs.Keyspace - return vc.vm.UpdateVSchema(ctx, ksName, srvVschema) + return vc.vm.UpdateVSchema(ctx, ksvs, srvVschema) } func (vc *VCursorImpl) MessageStream(ctx context.Context, rss []*srvtopo.ResolvedShard, tableName string, callback func(*sqltypes.Result) error) error { diff --git a/go/vt/vtgate/executorcontext/vcursor_impl_test.go b/go/vt/vtgate/executorcontext/vcursor_impl_test.go index 244a80c9ffe..54173bf63b0 100644 --- a/go/vt/vtgate/executorcontext/vcursor_impl_test.go +++ b/go/vt/vtgate/executorcontext/vcursor_impl_test.go @@ -32,6 +32,8 @@ import ( "vitess.io/vitess/go/mysql/collations" "vitess.io/vitess/go/sqltypes" binlogdatapb "vitess.io/vitess/go/vt/proto/binlogdata" + "vitess.io/vitess/go/vt/proto/vschema" + "vitess.io/vitess/go/vt/topo" "vitess.io/vitess/go/vt/vtenv" "vitess.io/vitess/go/vt/vtgate/engine" "vitess.io/vitess/go/vt/vtgate/vtgateservice" @@ -58,7 +60,7 @@ func (f fakeVSchemaOperator) GetCurrentSrvVschema() *vschemapb.SrvVSchema { panic("implement me") } -func (f fakeVSchemaOperator) UpdateVSchema(ctx context.Context, ksName string, vschema *vschemapb.SrvVSchema) error { +func (f fakeVSchemaOperator) UpdateVSchema(ctx context.Context, ksvs *topo.KeyspaceVSchemaInfo, srvvs *vschema.SrvVSchema) error { panic("implement me") } diff --git a/go/vt/vtgate/planbuilder/builder.go b/go/vt/vtgate/planbuilder/builder.go index 065c50a6dfa..85d9f5f94ea 100644 --- a/go/vt/vtgate/planbuilder/builder.go +++ b/go/vt/vtgate/planbuilder/builder.go @@ -73,7 +73,7 @@ func (staticConfig) DirectEnabled() bool { // TestBuilder builds a plan for a query based on the specified vschema. // This method is only used from tests func TestBuilder(query string, vschema plancontext.VSchema, keyspace string) (*engine.Plan, error) { - stmt, reserved, err := vschema.Environment().Parser().Parse2(query) + stmt, known, err := vschema.Environment().Parser().Parse2(query) if err != nil { return nil, err } @@ -93,12 +93,12 @@ func TestBuilder(query string, vschema plancontext.VSchema, keyspace string) (*e }() } } - result, err := sqlparser.RewriteAST(stmt, keyspace, sqlparser.SQLSelectLimitUnset, "", nil, vschema.GetForeignKeyChecksState(), vschema) + reservedVars := sqlparser.NewReservedVars("vtg", known) + result, err := sqlparser.PrepareAST(stmt, reservedVars, map[string]*querypb.BindVariable{}, false, keyspace, sqlparser.SQLSelectLimitUnset, "", nil, vschema.GetForeignKeyChecksState(), vschema) if err != nil { return nil, err } - reservedVars := sqlparser.NewReservedVars("vtg", reserved) return BuildFromStmt(context.Background(), query, result.AST, reservedVars, vschema, result.BindVarNeeds, staticConfig{}) } diff --git a/go/vt/vtgate/planbuilder/simplifier_test.go b/go/vt/vtgate/planbuilder/simplifier_test.go index 5aeb0565f9b..012475ba021 100644 --- a/go/vt/vtgate/planbuilder/simplifier_test.go +++ b/go/vt/vtgate/planbuilder/simplifier_test.go @@ -21,6 +21,8 @@ import ( "fmt" "testing" + querypb "vitess.io/vitess/go/vt/proto/query" + "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" @@ -45,8 +47,8 @@ func TestSimplifyBuggyQuery(t *testing.T) { stmt, reserved, err := sqlparser.NewTestParser().Parse2(query) require.NoError(t, err) - rewritten, _ := sqlparser.RewriteAST(sqlparser.Clone(stmt), vw.CurrentDb(), sqlparser.SQLSelectLimitUnset, "", nil, nil, nil) reservedVars := sqlparser.NewReservedVars("vtg", reserved) + rewritten, _ := sqlparser.PrepareAST(sqlparser.Clone(stmt), reservedVars, map[string]*querypb.BindVariable{}, false, vw.CurrentDb(), sqlparser.SQLSelectLimitUnset, "", nil, nil, nil) simplified := simplifier.SimplifyStatement( stmt.(sqlparser.TableStatement), @@ -69,8 +71,8 @@ func TestSimplifyPanic(t *testing.T) { stmt, reserved, err := sqlparser.NewTestParser().Parse2(query) require.NoError(t, err) - rewritten, _ := sqlparser.RewriteAST(sqlparser.Clone(stmt), vw.CurrentDb(), sqlparser.SQLSelectLimitUnset, "", nil, nil, nil) reservedVars := sqlparser.NewReservedVars("vtg", reserved) + rewritten, _ := sqlparser.PrepareAST(sqlparser.Clone(stmt), reservedVars, map[string]*querypb.BindVariable{}, false, vw.CurrentDb(), sqlparser.SQLSelectLimitUnset, "", nil, nil, nil) simplified := simplifier.SimplifyStatement( stmt.(sqlparser.TableStatement), @@ -100,12 +102,12 @@ func TestUnsupportedFile(t *testing.T) { t.Skip() return } - rewritten, err := sqlparser.RewriteAST(stmt, vw.CurrentDb(), sqlparser.SQLSelectLimitUnset, "", nil, nil, nil) + reservedVars := sqlparser.NewReservedVars("vtg", reserved) + rewritten, err := sqlparser.PrepareAST(stmt, reservedVars, map[string]*querypb.BindVariable{}, false, vw.CurrentDb(), sqlparser.SQLSelectLimitUnset, "", nil, nil, nil) if err != nil { t.Skip() } - reservedVars := sqlparser.NewReservedVars("vtg", reserved) ast := rewritten.AST origQuery := sqlparser.String(ast) stmt, _, _ = sqlparser.NewTestParser().Parse2(tcase.Query) @@ -133,7 +135,7 @@ func keepSameError(query string, reservedVars *sqlparser.ReservedVars, vschema * if err != nil { panic(err) } - rewritten, _ := sqlparser.RewriteAST(stmt, vschema.CurrentDb(), sqlparser.SQLSelectLimitUnset, "", nil, nil, nil) + rewritten, _ := sqlparser.PrepareAST(stmt, reservedVars, map[string]*querypb.BindVariable{}, false, vschema.CurrentDb(), sqlparser.SQLSelectLimitUnset, "", nil, nil, nil) ast := rewritten.AST _, expected := BuildFromStmt(context.Background(), query, ast, reservedVars, vschema, rewritten.BindVarNeeds, staticConfig{}) if expected == nil { diff --git a/go/vt/vtgate/sandbox_test.go b/go/vt/vtgate/sandbox_test.go index fa5ffbbffd8..6030de2ba59 100644 --- a/go/vt/vtgate/sandbox_test.go +++ b/go/vt/vtgate/sandbox_test.go @@ -221,8 +221,12 @@ type sandboxTopo struct { // // when this version is used, WatchSrvVSchema can properly simulate watches func newSandboxForCells(ctx context.Context, cells []string) *sandboxTopo { + ts := memorytopo.NewServer(ctx, cells...) + for ks := range ksToSandbox { + ts.EnsureVSchema(ctx, ks) + } return &sandboxTopo{ - topoServer: memorytopo.NewServer(ctx, cells...), + ts, } } @@ -293,6 +297,16 @@ func (sct *sandboxTopo) WatchSrvVSchema(ctx context.Context, cell string, callba return } + // Update the backing topo server with the current sandbox vschemas. + for ks := range ksToSandbox { + ksvs := &topo.KeyspaceVSchemaInfo{ + Name: ks, + Keyspace: srvVSchema.Keyspaces[ks], + } + if err := sct.topoServer.SaveVSchema(ctx, ksvs); err != nil { + panic(fmt.Sprintf("sandboxTopo SaveVSchema returned an error: %v", err)) + } + } sct.topoServer.UpdateSrvVSchema(ctx, cell, srvVSchema) current, updateChan, err := sct.topoServer.WatchSrvVSchema(ctx, cell) if err != nil { diff --git a/go/vt/vtgate/schema/tracker.go b/go/vt/vtgate/schema/tracker.go index 8fa41712223..4dae11cded9 100644 --- a/go/vt/vtgate/schema/tracker.go +++ b/go/vt/vtgate/schema/tracker.go @@ -353,7 +353,7 @@ func (t *Tracker) updatedTableSchema(th *discovery.TabletHealth) bool { func (t *Tracker) updateTables(keyspace string, res map[string]string) { for tableName, tableDef := range res { - stmt, err := t.parser.Parse(tableDef) + stmt, err := t.parser.ParseStrictDDL(tableDef) if err != nil { log.Warningf("error parsing table definition for %s: %v", tableName, err) continue @@ -535,7 +535,7 @@ func (vm *viewMap) set(ks, tbl, sql string) { m = make(map[tableNameStr]sqlparser.TableStatement) vm.m[ks] = m } - stmt, err := vm.parser.Parse(sql) + stmt, err := vm.parser.ParseStrictDDL(sql) if err != nil { log.Warningf("ignoring view '%s', parsing error in view definition: '%s'", tbl, sql) return diff --git a/go/vt/vtgate/schema/tracker_test.go b/go/vt/vtgate/schema/tracker_test.go index 1ee15ba99cb..e5280c78ed8 100644 --- a/go/vt/vtgate/schema/tracker_test.go +++ b/go/vt/vtgate/schema/tracker_test.go @@ -202,6 +202,9 @@ func TestTableTracking(t *testing.T) { tables( tbl("t4", "create table t4(name varchar(50) primary key)"), ), + tables( + tbl("t5", "create table t5(name varchar(50) primary key with broken syntax)"), + ), } testcases := []testCases{{ @@ -234,6 +237,15 @@ func TestTableTracking(t *testing.T) { "t3": {{Name: sqlparser.NewIdentifierCI("id"), Type: querypb.Type_DATETIME, CollationName: "binary", Size: 0, Nullable: true}}, "t4": {{Name: sqlparser.NewIdentifierCI("name"), Type: querypb.Type_VARCHAR, Size: 50, Nullable: true}}, }, + }, { + testName: "new broken table", + updTbl: []string{"t5"}, + expTbl: map[string][]vindexes.Column{ + "t1": {{Name: sqlparser.NewIdentifierCI("id"), Type: querypb.Type_INT64, CollationName: "binary", Nullable: true}, {Name: sqlparser.NewIdentifierCI("name"), Type: querypb.Type_VARCHAR, Size: 50, Nullable: true}, {Name: sqlparser.NewIdentifierCI("email"), Type: querypb.Type_VARCHAR, Size: 50, Nullable: false, Default: &sqlparser.Literal{Val: "a@b.com"}}}, + "T1": {{Name: sqlparser.NewIdentifierCI("id"), Type: querypb.Type_VARCHAR, Size: 50, Nullable: true}, {Name: sqlparser.NewIdentifierCI("name"), Type: querypb.Type_VARCHAR, Size: 50, Nullable: true}}, + "t3": {{Name: sqlparser.NewIdentifierCI("id"), Type: querypb.Type_DATETIME, CollationName: "binary", Size: 0, Nullable: true}}, + "t4": {{Name: sqlparser.NewIdentifierCI("name"), Type: querypb.Type_VARCHAR, Size: 50, Nullable: true}}, + }, }} testTracker(t, false, schemaResponse, testcases) @@ -253,6 +265,7 @@ func TestViewsTracking(t *testing.T) { tbl("t3", "create view t3 as select 1 from tbl3"), ), tables(tbl("t4", "create view t4 as select 1 from tbl4")), + tables(tbl("t4", "create view t5 as select 1 from tbl4 with broken syntax")), } testcases := []testCases{{ @@ -281,6 +294,14 @@ func TestViewsTracking(t *testing.T) { "V1": "select 1, 2 from tbl2", "t3": "select 1 from tbl3", "t4": "select 1 from tbl4"}, + }, { + testName: "new broken t5", + updView: []string{"t5"}, + expView: map[string]string{ + "t1": "select 1 from tbl1", + "V1": "select 1, 2 from tbl2", + "t3": "select 1 from tbl3", + "t4": "select 1 from tbl4"}, }} testTracker(t, false, schemaDefResult, testcases) diff --git a/go/vt/vtgate/semantics/typer_test.go b/go/vt/vtgate/semantics/typer_test.go index 7de5ecf1340..1ec642b8168 100644 --- a/go/vt/vtgate/semantics/typer_test.go +++ b/go/vt/vtgate/semantics/typer_test.go @@ -41,15 +41,16 @@ func TestNormalizerAndSemanticAnalysisIntegration(t *testing.T) { for _, test := range tests { t.Run(test.query, func(t *testing.T) { - parse, err := sqlparser.NewTestParser().Parse(test.query) + parse, known, err := sqlparser.NewTestParser().Parse2(test.query) require.NoError(t, err) - err = sqlparser.Normalize(parse, sqlparser.NewReservedVars("bv", sqlparser.BindVars{}), map[string]*querypb.BindVariable{}) + rv := sqlparser.NewReservedVars("", known) + out, err := sqlparser.PrepareAST(parse, rv, map[string]*querypb.BindVariable{}, true, "d", 0, "", map[string]string{}, nil, nil) require.NoError(t, err) - st, err := Analyze(parse, "d", fakeSchemaInfo()) + st, err := Analyze(out.AST, "d", fakeSchemaInfo()) require.NoError(t, err) - bv := parse.(*sqlparser.Select).SelectExprs[0].(*sqlparser.AliasedExpr).Expr.(*sqlparser.Argument) + bv := out.AST.(*sqlparser.Select).SelectExprs[0].(*sqlparser.AliasedExpr).Expr.(*sqlparser.Argument) typ, found := st.ExprTypes[bv] require.True(t, found, "bindvar was not typed") require.Equal(t, test.typ, typ.Type().String()) @@ -68,15 +69,15 @@ func TestColumnCollations(t *testing.T) { for _, test := range tests { t.Run(test.query, func(t *testing.T) { - parse, err := sqlparser.NewTestParser().Parse(test.query) + ast, err := sqlparser.NewTestParser().Parse(test.query) require.NoError(t, err) - err = sqlparser.Normalize(parse, sqlparser.NewReservedVars("bv", sqlparser.BindVars{}), map[string]*querypb.BindVariable{}) + out, err := sqlparser.PrepareAST(ast, sqlparser.NewReservedVars("bv", sqlparser.BindVars{}), map[string]*querypb.BindVariable{}, true, "d", 0, "", map[string]string{}, nil, nil) require.NoError(t, err) - st, err := Analyze(parse, "d", fakeSchemaInfo()) + st, err := Analyze(out.AST, "d", fakeSchemaInfo()) require.NoError(t, err) - col := extract(parse.(*sqlparser.Select), 0) + col := extract(out.AST.(*sqlparser.Select), 0) typ, found := st.TypeForExpr(col) require.True(t, found, "column was not typed") diff --git a/go/vt/vtgate/vindexes/cached_size.go b/go/vt/vtgate/vindexes/cached_size.go index eeadb69b532..ac68887c00d 100644 --- a/go/vt/vtgate/vindexes/cached_size.go +++ b/go/vt/vtgate/vindexes/cached_size.go @@ -392,6 +392,24 @@ func (cached *Numeric) CachedSize(alloc bool) int64 { } return size } +func (cached *NumericLookupTable) CachedSize(alloc bool) int64 { + if cached == nil { + return int64(0) + } + size := int64(0) + if alloc { + size += int64(8) + } + size += int64(48) + hmap := reflect.ValueOf(*cached) + numBuckets := int(math.Pow(2, float64((*(*uint8)(unsafe.Pointer(hmap.Pointer() + uintptr(9))))))) + numOldBuckets := (*(*uint16)(unsafe.Pointer(hmap.Pointer() + uintptr(10)))) + size += hack.RuntimeAllocSize(int64(numOldBuckets * 144)) + if len(*cached) > 0 || numBuckets > 1 { + size += hack.RuntimeAllocSize(int64(numBuckets * 144)) + } + return size +} //go:nocheckptr func (cached *NumericStaticMap) CachedSize(alloc bool) int64 { @@ -482,6 +500,24 @@ func (cached *RegionJSON) CachedSize(alloc bool) int64 { } return size } +func (cached *RegionMap) CachedSize(alloc bool) int64 { + if cached == nil { + return int64(0) + } + size := int64(0) + if alloc { + size += int64(8) + } + size += int64(48) + hmap := reflect.ValueOf(*cached) + numBuckets := int(math.Pow(2, float64((*(*uint8)(unsafe.Pointer(hmap.Pointer() + uintptr(9))))))) + numOldBuckets := (*(*uint16)(unsafe.Pointer(hmap.Pointer() + uintptr(10)))) + size += hack.RuntimeAllocSize(int64(numOldBuckets * 208)) + if len(*cached) > 0 || numBuckets > 1 { + size += hack.RuntimeAllocSize(int64(numBuckets * 208)) + } + return size +} func (cached *ReverseBits) CachedSize(alloc bool) int64 { if cached == nil { return int64(0) diff --git a/go/vt/vtgate/vschema_manager.go b/go/vt/vtgate/vschema_manager.go index 49674951ed7..e73bff4c196 100644 --- a/go/vt/vtgate/vschema_manager.go +++ b/go/vt/vtgate/vschema_manager.go @@ -18,11 +18,11 @@ package vtgate import ( "context" + "errors" "sync" "vitess.io/vitess/go/vt/graph" "vitess.io/vitess/go/vt/log" - topodatapb "vitess.io/vitess/go/vt/proto/topodata" "vitess.io/vitess/go/vt/schema" "vitess.io/vitess/go/vt/sqlparser" "vitess.io/vitess/go/vt/srvtopo" @@ -30,9 +30,14 @@ import ( "vitess.io/vitess/go/vt/vterrors" "vitess.io/vitess/go/vt/vtgate/vindexes" + topodatapb "vitess.io/vitess/go/vt/proto/topodata" vschemapb "vitess.io/vitess/go/vt/proto/vschema" ) +// The full SQL error that the user sees in their vtgate connection looks like this: +// failed to update vschema as the session's version was stale; please try again (errno 1105) (sqlstate HY000) during query: ALTER VSCHEMA DROP TABLE t864 +var ErrStaleVSchema = errors.New("failed to update vschema as the session's version was stale; please try again") + // VSchemaManager is used to watch for updates to the vschema and to implement // the DDL commands to add / remove vindexes type VSchemaManager struct { @@ -64,21 +69,23 @@ func (vm *VSchemaManager) GetCurrentSrvVschema() *vschemapb.SrvVSchema { // UpdateVSchema propagates the updated vschema to the topo. The entry for // the given keyspace is updated in the global topo, and the full SrvVSchema // is updated in all known cells. -func (vm *VSchemaManager) UpdateVSchema(ctx context.Context, ksName string, vschema *vschemapb.SrvVSchema) error { +func (vm *VSchemaManager) UpdateVSchema(ctx context.Context, ks *topo.KeyspaceVSchemaInfo, srv *vschemapb.SrvVSchema) error { topoServer, err := vm.serv.GetTopoServer() if err != nil { return err } - ks := vschema.Keyspaces[ksName] - - _, err = vindexes.BuildKeyspace(ks, vm.parser) + _, err = vindexes.BuildKeyspace(ks.Keyspace, vm.parser) if err != nil { return err } - err = topoServer.SaveVSchema(ctx, ksName, ks) + err = topoServer.SaveVSchema(ctx, ks) if err != nil { + if topo.IsErrType(err, topo.BadVersion) { + // Provide a more useful error message to the user. + return ErrStaleVSchema + } return err } @@ -89,7 +96,7 @@ func (vm *VSchemaManager) UpdateVSchema(ctx context.Context, ksName string, vsch // even if one cell fails, continue to try the others for _, cell := range cells { - cellErr := topoServer.UpdateSrvVSchema(ctx, cell, vschema) + cellErr := topoServer.UpdateSrvVSchema(ctx, cell, srv) if cellErr != nil { err = cellErr log.Errorf("error updating vschema in cell %s: %v", cell, cellErr) @@ -100,7 +107,7 @@ func (vm *VSchemaManager) UpdateVSchema(ctx context.Context, ksName string, vsch } // Update all the local copy of VSchema if the topo update is successful. - vm.VSchemaUpdate(vschema, err) + vm.VSchemaUpdate(srv, err) return nil } diff --git a/go/vt/vtorc/inst/instance_dao.go b/go/vt/vtorc/inst/instance_dao.go index f92a15079dd..9e35e6e3e0b 100644 --- a/go/vt/vtorc/inst/instance_dao.go +++ b/go/vt/vtorc/inst/instance_dao.go @@ -206,9 +206,10 @@ func ReadTopologyInstanceBufferable(tabletAlias string, latency *stopwatch.Named fs, err = fullStatus(tabletAlias) if err != nil { - if config.GetStalledDiskPrimaryRecovery() && strings.Contains(err.Error(), "stalled disk") { - stalledDisk = true - } + goto Cleanup + } + if config.GetStalledDiskPrimaryRecovery() && fs.DiskStalled { + stalledDisk = true goto Cleanup } partialSuccess = true // We at least managed to read something from the server. diff --git a/go/vt/vtorc/logic/keyspace_shard_discovery.go b/go/vt/vtorc/logic/keyspace_shard_discovery.go index 0dd17cb65fd..8115e614418 100644 --- a/go/vt/vtorc/logic/keyspace_shard_discovery.go +++ b/go/vt/vtorc/logic/keyspace_shard_discovery.go @@ -18,10 +18,10 @@ package logic import ( "context" - "sort" - "strings" "sync" + "golang.org/x/exp/maps" + "vitess.io/vitess/go/vt/log" "vitess.io/vitess/go/vt/topo" @@ -31,7 +31,7 @@ import ( // RefreshAllKeyspacesAndShards reloads the keyspace and shard information for the keyspaces that vtorc is concerned with. func RefreshAllKeyspacesAndShards(ctx context.Context) error { var keyspaces []string - if len(clustersToWatch) == 0 { // all known keyspaces + if len(shardsToWatch) == 0 { // all known keyspaces ctx, cancel := context.WithTimeout(ctx, topo.RemoteOperationTimeout) defer cancel() var err error @@ -41,26 +41,10 @@ func RefreshAllKeyspacesAndShards(ctx context.Context) error { return err } } else { - // Parse input and build list of keyspaces - for _, ks := range clustersToWatch { - if strings.Contains(ks, "/") { - // This is a keyspace/shard specification - input := strings.Split(ks, "/") - keyspaces = append(keyspaces, input[0]) - } else { - // Assume this is a keyspace - keyspaces = append(keyspaces, ks) - } - } - if len(keyspaces) == 0 { - log.Errorf("Found no keyspaces for input: %+v", clustersToWatch) - return nil - } + // Get keyspaces to watch from the list of known keyspaces. + keyspaces = maps.Keys(shardsToWatch) } - // Sort the list of keyspaces. - // The list can have duplicates because the input to clusters to watch may have multiple shards of the same keyspace - sort.Strings(keyspaces) refreshCtx, refreshCancel := context.WithTimeout(ctx, topo.RemoteOperationTimeout) defer refreshCancel() var wg sync.WaitGroup diff --git a/go/vt/vtorc/logic/keyspace_shard_discovery_test.go b/go/vt/vtorc/logic/keyspace_shard_discovery_test.go index 8218af45db6..f05295416d0 100644 --- a/go/vt/vtorc/logic/keyspace_shard_discovery_test.go +++ b/go/vt/vtorc/logic/keyspace_shard_discovery_test.go @@ -93,6 +93,8 @@ func TestRefreshAllKeyspaces(t *testing.T) { // Set clusters to watch to only watch ks1 and ks3 onlyKs1and3 := []string{"ks1/-80", "ks3/-80", "ks3/80-"} clustersToWatch = onlyKs1and3 + err := initializeShardsToWatch() + require.NoError(t, err) require.NoError(t, RefreshAllKeyspacesAndShards(context.Background())) // Verify that we only have ks1 and ks3 in vtorc's db. @@ -106,6 +108,8 @@ func TestRefreshAllKeyspaces(t *testing.T) { // Set clusters to watch to watch all keyspaces clustersToWatch = nil + err = initializeShardsToWatch() + require.NoError(t, err) // Change the durability policy of ks1 reparenttestutil.SetKeyspaceDurability(ctx, t, ts, "ks1", policy.DurabilitySemiSync) require.NoError(t, RefreshAllKeyspacesAndShards(context.Background())) @@ -119,7 +123,6 @@ func TestRefreshAllKeyspaces(t *testing.T) { verifyPrimaryAlias(t, "ks3", "80-", "zone_ks3-0000000101", "") verifyKeyspaceInfo(t, "ks4", keyspaceDurabilityTest, "") verifyPrimaryAlias(t, "ks4", "80-", "zone_ks4-0000000101", "") - } func TestRefreshKeyspace(t *testing.T) { diff --git a/go/vt/vtorc/logic/tablet_discovery.go b/go/vt/vtorc/logic/tablet_discovery.go index eb10bb2a667..c5c23df0cd0 100644 --- a/go/vt/vtorc/logic/tablet_discovery.go +++ b/go/vt/vtorc/logic/tablet_discovery.go @@ -32,6 +32,7 @@ import ( "google.golang.org/protobuf/proto" "vitess.io/vitess/go/vt/external/golib/sqlutils" + "vitess.io/vitess/go/vt/key" "vitess.io/vitess/go/vt/log" topodatapb "vitess.io/vitess/go/vt/proto/topodata" "vitess.io/vitess/go/vt/topo" @@ -48,8 +49,10 @@ var ( clustersToWatch []string shutdownWaitTime = 30 * time.Second shardsLockCounter int32 - shardsToWatch map[string][]string - shardsToWatchMu sync.Mutex + // shardsToWatch is a map storing the shards for a given keyspace that need to be watched. + // We store the key range for all the shards that we want to watch. + // This is populated by parsing `--clusters_to_watch` flag. + shardsToWatch map[string][]*topodatapb.KeyRange // ErrNoPrimaryTablet is a fixed error message. ErrNoPrimaryTablet = errors.New("no primary tablet found") @@ -57,18 +60,18 @@ var ( // RegisterFlags registers the flags required by VTOrc func RegisterFlags(fs *pflag.FlagSet) { - fs.StringSliceVar(&clustersToWatch, "clusters_to_watch", clustersToWatch, "Comma-separated list of keyspaces or keyspace/shards that this instance will monitor and repair. Defaults to all clusters in the topology. Example: \"ks1,ks2/-80\"") + fs.StringSliceVar(&clustersToWatch, "clusters_to_watch", clustersToWatch, "Comma-separated list of keyspaces or keyspace/keyranges that this instance will monitor and repair. Defaults to all clusters in the topology. Example: \"ks1,ks2/-80\"") fs.DurationVar(&shutdownWaitTime, "shutdown_wait_time", shutdownWaitTime, "Maximum time to wait for VTOrc to release all the locks that it is holding before shutting down on SIGTERM") } -// updateShardsToWatch parses the --clusters_to_watch flag-value +// initializeShardsToWatch parses the --clusters_to_watch flag-value // into a map of keyspace/shards. -func updateShardsToWatch() { +func initializeShardsToWatch() error { + shardsToWatch = make(map[string][]*topodatapb.KeyRange) if len(clustersToWatch) == 0 { - return + return nil } - newShardsToWatch := make(map[string][]string, 0) for _, ks := range clustersToWatch { if strings.Contains(ks, "/") && !strings.HasSuffix(ks, "/") { // Validate keyspace/shard parses. @@ -77,34 +80,50 @@ func updateShardsToWatch() { log.Errorf("Could not parse keyspace/shard %q: %+v", ks, err) continue } - newShardsToWatch[k] = append(newShardsToWatch[k], s) + if !key.IsValidKeyRange(s) { + return fmt.Errorf("invalid key range %q while parsing clusters to watch", s) + } + // Parse the shard name into key range value. + keyRanges, err := key.ParseShardingSpec(s) + if err != nil { + return fmt.Errorf("could not parse shard name %q: %+v", s, err) + } + shardsToWatch[k] = append(shardsToWatch[k], keyRanges...) } else { - ctx, cancel := context.WithTimeout(context.Background(), topo.RemoteOperationTimeout) - defer cancel() - // Assume this is a keyspace and find all shards in keyspace. // Remove trailing slash if exists. ks = strings.TrimSuffix(ks, "/") - shards, err := ts.GetShardNames(ctx, ks) - if err != nil { - // Log the err and continue. - log.Errorf("Error fetching shards for keyspace: %v", ks) - continue - } - if len(shards) == 0 { - log.Errorf("Topo has no shards for ks: %v", ks) - continue - } - newShardsToWatch[ks] = shards + // We store the entire range of key range if nothing is specified. + shardsToWatch[ks] = []*topodatapb.KeyRange{key.NewCompleteKeyRange()} } } - if len(newShardsToWatch) == 0 { - log.Error("No keyspace/shards to watch") - return + + if len(shardsToWatch) == 0 { + log.Error("No keyspace/shards to watch, watching all keyspaces") } + return nil +} - shardsToWatchMu.Lock() - defer shardsToWatchMu.Unlock() - shardsToWatch = newShardsToWatch +// shouldWatchTablet checks if the given tablet is part of the watch list. +func shouldWatchTablet(tablet *topodatapb.Tablet) bool { + // If we are watching all keyspaces, then we want to watch this tablet too. + if len(shardsToWatch) == 0 { + return true + } + shardRanges, ok := shardsToWatch[tablet.GetKeyspace()] + // If we don't have the keyspace in our map, then this tablet + // doesn't need to be watched. + if !ok { + return false + } + // Get the tablet's key range, and check if + // it is part of the shard ranges we are watching. + kr := tablet.GetKeyRange() + for _, shardRange := range shardRanges { + if key.KeyRangeContainsKeyRange(shardRange, kr) { + return true + } + } + return false } // OpenTabletDiscovery opens the vitess topo if enables and returns a ticker @@ -117,7 +136,10 @@ func OpenTabletDiscovery() <-chan time.Time { log.Error(err) } // Parse --clusters_to_watch into a filter. - updateShardsToWatch() + err := initializeShardsToWatch() + if err != nil { + log.Fatalf("Error parsing --clusters-to-watch: %v", err) + } // We refresh all information from the topo once before we start the ticks to do // it on a timer. ctx, cancel := context.WithTimeout(context.Background(), topo.RemoteOperationTimeout) @@ -179,16 +201,10 @@ func refreshTabletsUsing(ctx context.Context, loader func(tabletAlias string), f // Filter tablets that should not be watched using shardsToWatch map. matchedTablets := make([]*topo.TabletInfo, 0, len(tablets)) func() { - shardsToWatchMu.Lock() - defer shardsToWatchMu.Unlock() for _, t := range tablets { - if len(shardsToWatch) > 0 { - _, ok := shardsToWatch[t.Tablet.Keyspace] - if !ok || !slices.Contains(shardsToWatch[t.Tablet.Keyspace], t.Tablet.Shard) { - continue // filter - } + if shouldWatchTablet(t.Tablet) { + matchedTablets = append(matchedTablets, t) } - matchedTablets = append(matchedTablets, t) } }() diff --git a/go/vt/vtorc/logic/tablet_discovery_test.go b/go/vt/vtorc/logic/tablet_discovery_test.go index 54284e8a017..4514ef81724 100644 --- a/go/vt/vtorc/logic/tablet_discovery_test.go +++ b/go/vt/vtorc/logic/tablet_discovery_test.go @@ -30,6 +30,7 @@ import ( "google.golang.org/protobuf/proto" "vitess.io/vitess/go/vt/external/golib/sqlutils" + "vitess.io/vitess/go/vt/key" topodatapb "vitess.io/vitess/go/vt/proto/topodata" "vitess.io/vitess/go/vt/proto/vttime" "vitess.io/vitess/go/vt/topo" @@ -102,60 +103,200 @@ var ( } ) -func TestUpdateShardsToWatch(t *testing.T) { +func TestShouldWatchTablet(t *testing.T) { oldClustersToWatch := clustersToWatch - oldTs := ts defer func() { clustersToWatch = oldClustersToWatch shardsToWatch = nil - ts = oldTs }() - // Create a memory topo-server and create the keyspace and shard records - ctx, cancel := context.WithCancel(context.Background()) - defer cancel() + testCases := []struct { + in []string + tablet *topodatapb.Tablet + expectedShouldWatch bool + }{ + { + in: []string{}, + tablet: &topodatapb.Tablet{ + Keyspace: keyspace, + Shard: shard, + }, + expectedShouldWatch: true, + }, + { + in: []string{keyspace}, + tablet: &topodatapb.Tablet{ + Keyspace: keyspace, + Shard: shard, + }, + expectedShouldWatch: true, + }, + { + in: []string{keyspace + "/-"}, + tablet: &topodatapb.Tablet{ + Keyspace: keyspace, + Shard: shard, + }, + expectedShouldWatch: true, + }, + { + in: []string{keyspace + "/" + shard}, + tablet: &topodatapb.Tablet{ + Keyspace: keyspace, + Shard: shard, + }, + expectedShouldWatch: true, + }, + { + in: []string{"ks/-70", "ks/70-"}, + tablet: &topodatapb.Tablet{ + Keyspace: "ks", + KeyRange: key.NewKeyRange([]byte{0x50}, []byte{0x70}), + }, + expectedShouldWatch: true, + }, + { + in: []string{"ks/-70", "ks/70-"}, + tablet: &topodatapb.Tablet{ + Keyspace: "ks", + KeyRange: key.NewKeyRange([]byte{0x40}, []byte{0x50}), + }, + expectedShouldWatch: true, + }, + { + in: []string{"ks/-70", "ks/70-"}, + tablet: &topodatapb.Tablet{ + Keyspace: "ks", + KeyRange: key.NewKeyRange([]byte{0x70}, []byte{0x90}), + }, + expectedShouldWatch: true, + }, + { + in: []string{"ks/-70", "ks/70-"}, + tablet: &topodatapb.Tablet{ + Keyspace: "ks", + KeyRange: key.NewKeyRange([]byte{0x60}, []byte{0x90}), + }, + expectedShouldWatch: false, + }, + { + in: []string{"ks/50-70"}, + tablet: &topodatapb.Tablet{ + Keyspace: "ks", + KeyRange: key.NewKeyRange([]byte{0x50}, []byte{0x70}), + }, + expectedShouldWatch: true, + }, + { + in: []string{"ks2/-70", "ks2/70-", "unknownKs/-", "ks/-80"}, + tablet: &topodatapb.Tablet{ + Keyspace: "ks", + KeyRange: key.NewKeyRange([]byte{0x60}, []byte{0x80}), + }, + expectedShouldWatch: true, + }, + { + in: []string{"ks2/-70", "ks2/70-", "unknownKs/-", "ks/-80"}, + tablet: &topodatapb.Tablet{ + Keyspace: "ks", + KeyRange: key.NewKeyRange([]byte{0x80}, []byte{0x90}), + }, + expectedShouldWatch: false, + }, + { + in: []string{"ks2/-70", "ks2/70-", "unknownKs/-", "ks/-80"}, + tablet: &topodatapb.Tablet{ + Keyspace: "ks", + KeyRange: key.NewKeyRange([]byte{0x90}, []byte{0xa0}), + }, + expectedShouldWatch: false, + }, + } - ts = memorytopo.NewServer(ctx, cell1) - _, err := ts.GetOrCreateShard(context.Background(), keyspace, shard) - require.NoError(t, err) + for _, tt := range testCases { + t.Run(fmt.Sprintf("%v-Tablet-%v-%v", strings.Join(tt.in, ","), tt.tablet.GetKeyspace(), tt.tablet.GetShard()), func(t *testing.T) { + clustersToWatch = tt.in + err := initializeShardsToWatch() + require.NoError(t, err) + assert.Equal(t, tt.expectedShouldWatch, shouldWatchTablet(tt.tablet)) + }) + } +} + +// TestInitializeShardsToWatch tests that we initialize the shardsToWatch map correctly +// using the `--clusters_to_watch` flag. +func TestInitializeShardsToWatch(t *testing.T) { + oldClustersToWatch := clustersToWatch + defer func() { + clustersToWatch = oldClustersToWatch + shardsToWatch = nil + }() testCases := []struct { - in []string - expected map[string][]string + in []string + expected map[string][]*topodatapb.KeyRange + expectedErr string }{ { in: []string{}, - expected: nil, + expected: map[string][]*topodatapb.KeyRange{}, }, { - in: []string{""}, - expected: map[string][]string{}, + in: []string{"unknownKs"}, + expected: map[string][]*topodatapb.KeyRange{ + "unknownKs": { + key.NewCompleteKeyRange(), + }, + }, }, { in: []string{"test/-"}, - expected: map[string][]string{ - "test": {"-"}, + expected: map[string][]*topodatapb.KeyRange{ + "test": { + key.NewCompleteKeyRange(), + }, + }, + }, + { + in: []string{"test/324"}, + expectedErr: `invalid key range "324" while parsing clusters to watch`, + }, + { + in: []string{"test/0"}, + expected: map[string][]*topodatapb.KeyRange{ + "test": { + key.NewCompleteKeyRange(), + }, }, }, { in: []string{"test/-", "test2/-80", "test2/80-"}, - expected: map[string][]string{ - "test": {"-"}, - "test2": {"-80", "80-"}, + expected: map[string][]*topodatapb.KeyRange{ + "test": { + key.NewCompleteKeyRange(), + }, + "test2": { + key.NewKeyRange(nil, []byte{0x80}), + key.NewKeyRange([]byte{0x80}, nil), + }, }, }, { - // confirm shards fetch from topo + // known keyspace in: []string{keyspace}, - expected: map[string][]string{ - keyspace: {shard}, + expected: map[string][]*topodatapb.KeyRange{ + keyspace: { + key.NewCompleteKeyRange(), + }, }, }, { - // confirm shards fetch from topo when keyspace has trailing-slash + // keyspace with trailing-slash in: []string{keyspace + "/"}, - expected: map[string][]string{ - keyspace: {shard}, + expected: map[string][]*topodatapb.KeyRange{ + keyspace: { + key.NewCompleteKeyRange(), + }, }, }, } @@ -163,10 +304,15 @@ func TestUpdateShardsToWatch(t *testing.T) { for _, testCase := range testCases { t.Run(strings.Join(testCase.in, ","), func(t *testing.T) { defer func() { - shardsToWatch = make(map[string][]string, 0) + shardsToWatch = make(map[string][]*topodatapb.KeyRange, 0) }() clustersToWatch = testCase.in - updateShardsToWatch() + err := initializeShardsToWatch() + if testCase.expectedErr != "" { + require.EqualError(t, err, testCase.expectedErr) + return + } + require.NoError(t, err) require.Equal(t, testCase.expected, shardsToWatch) }) } diff --git a/go/vt/vtorc/logic/topology_recovery.go b/go/vt/vtorc/logic/topology_recovery.go index ab41d1fa988..41c0ca5d398 100644 --- a/go/vt/vtorc/logic/topology_recovery.go +++ b/go/vt/vtorc/logic/topology_recovery.go @@ -171,13 +171,15 @@ func resolveRecovery(topologyRecovery *TopologyRecovery, successorInstance *inst } // recoverPrimaryHasPrimary resets the replication on the primary instance -func recoverPrimaryHasPrimary(ctx context.Context, analysisEntry *inst.ReplicationAnalysis) (recoveryAttempted bool, topologyRecovery *TopologyRecovery, err error) { +func recoverPrimaryHasPrimary(ctx context.Context, analysisEntry *inst.ReplicationAnalysis, logger *log.PrefixedLogger) (recoveryAttempted bool, topologyRecovery *TopologyRecovery, err error) { topologyRecovery, err = AttemptRecoveryRegistration(analysisEntry) if topologyRecovery == nil { - _ = AuditTopologyRecovery(topologyRecovery, fmt.Sprintf("found an active or recent recovery on %+v. Will not issue another fixPrimaryHasPrimary.", analysisEntry.AnalyzedInstanceAlias)) + message := fmt.Sprintf("found an active or recent recovery on %+v. Will not issue another fixPrimaryHasPrimary.", analysisEntry.AnalyzedInstanceAlias) + logger.Warning(message) + _ = AuditTopologyRecovery(topologyRecovery, message) return false, nil, err } - log.Infof("Analysis: %v, will fix incorrect primaryship on %+v", analysisEntry.Analysis, analysisEntry.AnalyzedInstanceAlias) + logger.Infof("Analysis: %v, will fix incorrect primaryship on %+v", analysisEntry.Analysis, analysisEntry.AnalyzedInstanceAlias) // This has to be done in the end; whether successful or not, we should mark that the recovery is done. // So that after the active period passes, we are able to run other recoveries. defer func() { @@ -187,6 +189,7 @@ func recoverPrimaryHasPrimary(ctx context.Context, analysisEntry *inst.Replicati // Read the tablet information from the database to find the shard and keyspace of the tablet analyzedTablet, err := inst.ReadTablet(analysisEntry.AnalyzedInstanceAlias) if err != nil { + logger.Errorf("Failed to read instance %s, aborting recovery", analysisEntry.AnalyzedInstanceAlias) return false, nil, err } @@ -197,19 +200,22 @@ func recoverPrimaryHasPrimary(ctx context.Context, analysisEntry *inst.Replicati // runEmergencyReparentOp runs a recovery for which we have to run ERS. Here waitForAllTablets is a boolean telling ERS whether it should wait for all the tablets // or is it okay to skip 1. -func runEmergencyReparentOp(ctx context.Context, analysisEntry *inst.ReplicationAnalysis, recoveryName string, waitForAllTablets bool) (recoveryAttempted bool, topologyRecovery *TopologyRecovery, err error) { +func runEmergencyReparentOp(ctx context.Context, analysisEntry *inst.ReplicationAnalysis, recoveryName string, waitForAllTablets bool, logger *log.PrefixedLogger) (recoveryAttempted bool, topologyRecovery *TopologyRecovery, err error) { // Read the tablet information from the database to find the shard and keyspace of the tablet tablet, err := inst.ReadTablet(analysisEntry.AnalyzedInstanceAlias) if err != nil { + logger.Errorf("Failed to read instance %s, aborting recovery", analysisEntry.AnalyzedInstanceAlias) return false, nil, err } topologyRecovery, err = AttemptRecoveryRegistration(analysisEntry) if topologyRecovery == nil { - _ = AuditTopologyRecovery(topologyRecovery, fmt.Sprintf("found an active or recent recovery on %+v. Will not issue another %v.", analysisEntry.AnalyzedInstanceAlias, recoveryName)) + message := fmt.Sprintf("found an active or recent recovery on %+v. Will not issue another %v.", analysisEntry.AnalyzedInstanceAlias, recoveryName) + logger.Warning(message) + _ = AuditTopologyRecovery(topologyRecovery, message) return false, nil, err } - log.Infof("Analysis: %v, %v %+v", analysisEntry.Analysis, recoveryName, analysisEntry.AnalyzedInstanceAlias) + logger.Infof("Analysis: %v, %v %+v", analysisEntry.Analysis, recoveryName, analysisEntry.AnalyzedInstanceAlias) var promotedReplica *inst.Instance // This has to be done in the end; whether successful or not, we should mark that the recovery is done. // So that after the active period passes, we are able to run other recoveries. @@ -223,11 +229,11 @@ func runEmergencyReparentOp(ctx context.Context, analysisEntry *inst.Replication // we only log the warnings and errors explicitly, everything gets logged as an information message anyways in auditing topology recovery switch level { case logutilpb.Level_WARNING: - log.Warningf("ERS - %s", value) + logger.Warningf("ERS - %s", value) case logutilpb.Level_ERROR: - log.Errorf("ERS - %s", value) + logger.Errorf("ERS - %s", value) default: - log.Infof("ERS - %s", value) + logger.Infof("ERS - %s", value) } _ = AuditTopologyRecovery(topologyRecovery, value) })).ReparentShard(ctx, @@ -241,7 +247,7 @@ func runEmergencyReparentOp(ctx context.Context, analysisEntry *inst.Replication }, ) if err != nil { - log.Errorf("Error running ERS - %v", err) + logger.Errorf("Error running ERS - %v", err) } if ev != nil && ev.NewPrimary != nil { @@ -253,13 +259,13 @@ func runEmergencyReparentOp(ctx context.Context, analysisEntry *inst.Replication // recoverDeadPrimary checks a given analysis, decides whether to take action, and possibly takes action // Returns true when action was taken. -func recoverDeadPrimary(ctx context.Context, analysisEntry *inst.ReplicationAnalysis) (recoveryAttempted bool, topologyRecovery *TopologyRecovery, err error) { - return runEmergencyReparentOp(ctx, analysisEntry, "RecoverDeadPrimary", false) +func recoverDeadPrimary(ctx context.Context, analysisEntry *inst.ReplicationAnalysis, logger *log.PrefixedLogger) (recoveryAttempted bool, topologyRecovery *TopologyRecovery, err error) { + return runEmergencyReparentOp(ctx, analysisEntry, "RecoverDeadPrimary", false, logger) } // recoverPrimaryTabletDeleted tries to run a recovery for the case where the primary tablet has been deleted. -func recoverPrimaryTabletDeleted(ctx context.Context, analysisEntry *inst.ReplicationAnalysis) (recoveryAttempted bool, topologyRecovery *TopologyRecovery, err error) { - return runEmergencyReparentOp(ctx, analysisEntry, "PrimaryTabletDeleted", true) +func recoverPrimaryTabletDeleted(ctx context.Context, analysisEntry *inst.ReplicationAnalysis, logger *log.PrefixedLogger) (recoveryAttempted bool, topologyRecovery *TopologyRecovery, err error) { + return runEmergencyReparentOp(ctx, analysisEntry, "PrimaryTabletDeleted", true, logger) } func postErsCompletion(topologyRecovery *TopologyRecovery, analysisEntry *inst.ReplicationAnalysis, recoveryName string, promotedReplica *inst.Instance) { @@ -272,12 +278,14 @@ func postErsCompletion(topologyRecovery *TopologyRecovery, analysisEntry *inst.R } // checkAndRecoverGenericProblem is a general-purpose recovery function -func checkAndRecoverLockedSemiSyncPrimary(ctx context.Context, analysisEntry *inst.ReplicationAnalysis) (recoveryAttempted bool, topologyRecovery *TopologyRecovery, err error) { +func checkAndRecoverLockedSemiSyncPrimary(ctx context.Context, analysisEntry *inst.ReplicationAnalysis, logger *log.PrefixedLogger) (recoveryAttempted bool, topologyRecovery *TopologyRecovery, err error) { + logger.Warning("No actions in checkAndRecoverLockedSemiSyncPrimary") return false, nil, nil } // checkAndRecoverGenericProblem is a general-purpose recovery function -func checkAndRecoverGenericProblem(ctx context.Context, analysisEntry *inst.ReplicationAnalysis) (bool, *TopologyRecovery, error) { +func checkAndRecoverGenericProblem(ctx context.Context, analysisEntry *inst.ReplicationAnalysis, logger *log.PrefixedLogger) (bool, *TopologyRecovery, error) { + logger.Warning("No actions in checkAndRecoverGenericProblem") return false, nil, nil } @@ -367,7 +375,7 @@ func hasActionableRecovery(recoveryFunctionCode recoveryFunction) bool { // getCheckAndRecoverFunction gets the recovery function for the given code. func getCheckAndRecoverFunction(recoveryFunctionCode recoveryFunction) ( - checkAndRecoverFunction func(ctx context.Context, analysisEntry *inst.ReplicationAnalysis) (recoveryAttempted bool, topologyRecovery *TopologyRecovery, err error), + checkAndRecoverFunction func(ctx context.Context, analysisEntry *inst.ReplicationAnalysis, logger *log.PrefixedLogger) (recoveryAttempted bool, topologyRecovery *TopologyRecovery, err error), ) { switch recoveryFunctionCode { case noRecoveryFunc: @@ -447,16 +455,20 @@ func executeCheckAndRecoverFunction(analysisEntry *inst.ReplicationAnalysis) (er countPendingRecoveries.Add(1) defer countPendingRecoveries.Add(-1) + logger := log.NewPrefixedLogger(fmt.Sprintf("Recovery for %s on %s/%s", analysisEntry.Analysis, analysisEntry.AnalyzedKeyspace, analysisEntry.AnalyzedShard)) + logger.Info("Starting checkAndRecover") + checkAndRecoverFunctionCode := getCheckAndRecoverFunctionCode(analysisEntry.Analysis, analysisEntry.AnalyzedInstanceAlias) isActionableRecovery := hasActionableRecovery(checkAndRecoverFunctionCode) analysisEntry.IsActionableRecovery = isActionableRecovery if checkAndRecoverFunctionCode == noRecoveryFunc { + logger.Warning("No recovery strategies for problem, aborting recovery") // Unhandled problem type if analysisEntry.Analysis != inst.NoProblem { if util.ClearToLog("executeCheckAndRecoverFunction", analysisEntry.AnalyzedInstanceAlias) { - log.Warningf("executeCheckAndRecoverFunction: ignoring analysisEntry that has no action plan: %+v; tablet: %+v", - analysisEntry.Analysis, analysisEntry.AnalyzedInstanceAlias) + logger.Warningf("executeCheckAndRecoverFunction: ignoring analysisEntry that has no action plan: tablet: %+v", + analysisEntry.AnalyzedInstanceAlias) } } @@ -464,24 +476,24 @@ func executeCheckAndRecoverFunction(analysisEntry *inst.ReplicationAnalysis) (er } // we have a recovery function; its execution still depends on filters if not disabled. if isActionableRecovery || util.ClearToLog("executeCheckAndRecoverFunction: detection", analysisEntry.AnalyzedInstanceAlias) { - log.Infof("executeCheckAndRecoverFunction: proceeding with %+v detection on %+v; isActionable?: %+v", analysisEntry.Analysis, analysisEntry.AnalyzedInstanceAlias, isActionableRecovery) + logger.Infof("executeCheckAndRecoverFunction: proceeding with %+v detection on %+v; isActionable?: %+v", analysisEntry.Analysis, analysisEntry.AnalyzedInstanceAlias, isActionableRecovery) } // At this point we have validated there's a failure scenario for which we have a recovery path. // Record the failure detected in the logs. err = InsertRecoveryDetection(analysisEntry) if err != nil { - log.Errorf("executeCheckAndRecoverFunction: error on inserting recovery detection record: %+v", err) + logger.Errorf("executeCheckAndRecoverFunction: error inserting recovery detection record, aborting recovery: %+v", err) return err } // Check for recovery being disabled globally if recoveryDisabledGlobally, err := IsRecoveryDisabled(); err != nil { // Unexpected. Shouldn't get this - log.Errorf("Unable to determine if recovery is disabled globally: %v", err) + logger.Errorf("Unable to determine if recovery is disabled globally, still attempting to recover: %v", err) } else if recoveryDisabledGlobally { - log.Infof("CheckAndRecover: Analysis: %+v, Tablet: %+v: NOT Recovering host (disabled globally)", - analysisEntry.Analysis, analysisEntry.AnalyzedInstanceAlias) + logger.Infof("CheckAndRecover: Tablet: %+v: NOT Recovering host (disabled globally)", + analysisEntry.AnalyzedInstanceAlias) return err } @@ -489,6 +501,7 @@ func executeCheckAndRecoverFunction(analysisEntry *inst.ReplicationAnalysis) (er // We lock the shard here and then refresh the tablets information ctx, unlock, err := LockShard(context.Background(), analysisEntry.AnalyzedInstanceAlias, getLockAction(analysisEntry.AnalyzedInstanceAlias, analysisEntry.Analysis)) if err != nil { + logger.Errorf("Failed to lock shard, aborting recovery: %v", err) return err } defer unlock(&err) @@ -498,7 +511,7 @@ func executeCheckAndRecoverFunction(analysisEntry *inst.ReplicationAnalysis) (er // changes, we should be checking that this failure is indeed needed to be fixed. We do this after locking the shard to be sure // that the data that we use now is up-to-date. if isActionableRecovery { - log.Errorf("executeCheckAndRecoverFunction: Proceeding with %v recovery on %v validation after acquiring shard lock.", analysisEntry.Analysis, analysisEntry.AnalyzedInstanceAlias) + logger.Infof("executeCheckAndRecoverFunction: Proceeding with %v recovery on %v validation after acquiring shard lock.", analysisEntry.Analysis, analysisEntry.AnalyzedInstanceAlias) // The first step we have to do is refresh the keyspace and shard information // This is required to know if the durability policies have changed or not // If they have, then recoveries like ReplicaSemiSyncMustNotBeSet, etc won't be valid anymore. @@ -506,6 +519,7 @@ func executeCheckAndRecoverFunction(analysisEntry *inst.ReplicationAnalysis) (er // a change in the recovery we run. err = RefreshKeyspaceAndShard(analysisEntry.AnalyzedKeyspace, analysisEntry.AnalyzedShard) if err != nil { + logger.Errorf("Failed to refresh keyspace and shard, aborting recovery: %v", err) return err } // If we are about to run a cluster-wide recovery, it is imperative to first refresh all the tablets @@ -518,6 +532,7 @@ func executeCheckAndRecoverFunction(analysisEntry *inst.ReplicationAnalysis) (er } // We ignore the dead primary tablet because it is going to be unreachable. If all the other tablets aren't able to reach this tablet either, // we can proceed with the dead primary recovery. We don't need to refresh the information for this dead tablet. + logger.Info("Force refreshing all shard tablets") forceRefreshAllTabletsInShard(ctx, analysisEntry.AnalyzedKeyspace, analysisEntry.AnalyzedShard, tabletsToIgnore) } else { // If we are not running a cluster-wide recovery, then it is only concerned with the specific tablet @@ -526,66 +541,76 @@ func executeCheckAndRecoverFunction(analysisEntry *inst.ReplicationAnalysis) (er // and the host-port set on the tablet in question. // So, we only need to refresh the tablet info records (to know if the primary tablet has changed), // and the replication data of the new primary and this tablet. + logger.Info("Refreshing shard tablet info") refreshTabletInfoOfShard(ctx, analysisEntry.AnalyzedKeyspace, analysisEntry.AnalyzedShard) + logger.Info("Discovering analysis instance") DiscoverInstance(analysisEntry.AnalyzedInstanceAlias, true) + logger.Info("Getting shard primary") primaryTablet, err := shardPrimary(analysisEntry.AnalyzedKeyspace, analysisEntry.AnalyzedShard) if err != nil { - log.Errorf("executeCheckAndRecoverFunction: Analysis: %+v, Tablet: %+v: error while finding the shard primary: %v", - analysisEntry.Analysis, analysisEntry.AnalyzedInstanceAlias, err) + logger.Errorf("executeCheckAndRecoverFunction: Tablet: %+v: error while finding the shard primary: %v", + analysisEntry.AnalyzedInstanceAlias, err) return err } primaryTabletAlias := topoproto.TabletAliasString(primaryTablet.Alias) // We can skip the refresh if we know the tablet we are looking at is the primary tablet. // This would be the case for PrimaryHasPrimary recovery. We don't need to refresh the same tablet twice. if analysisEntry.AnalyzedInstanceAlias != primaryTabletAlias { + logger.Info("Discovering primary instance") DiscoverInstance(primaryTabletAlias, true) } } alreadyFixed, err := checkIfAlreadyFixed(analysisEntry) if err != nil { - log.Errorf("executeCheckAndRecoverFunction: Analysis: %+v, Tablet: %+v: error while trying to find if the problem is already fixed: %v", - analysisEntry.Analysis, analysisEntry.AnalyzedInstanceAlias, err) + logger.Errorf("executeCheckAndRecoverFunction: Tablet: %+v: error while trying to find if the problem is already fixed: %v", + analysisEntry.AnalyzedInstanceAlias, err) return err } if alreadyFixed { - log.Infof("Analysis: %v on tablet %v - No longer valid, some other agent must have fixed the problem.", analysisEntry.Analysis, analysisEntry.AnalyzedInstanceAlias) + logger.Infof("Analysis: %v on tablet %v - No longer valid, some other agent must have fixed the problem.", analysisEntry.Analysis, analysisEntry.AnalyzedInstanceAlias) return nil } } // Actually attempt recovery: if isActionableRecovery || util.ClearToLog("executeCheckAndRecoverFunction: recovery", analysisEntry.AnalyzedInstanceAlias) { - log.Infof("executeCheckAndRecoverFunction: proceeding with %+v recovery on %+v; isRecoverable?: %+v", analysisEntry.Analysis, analysisEntry.AnalyzedInstanceAlias, isActionableRecovery) + logger.Infof("executeCheckAndRecoverFunction: proceeding with recovery on %+v; isRecoverable?: %+v", analysisEntry.AnalyzedInstanceAlias, isActionableRecovery) } - recoveryAttempted, topologyRecovery, err := getCheckAndRecoverFunction(checkAndRecoverFunctionCode)(ctx, analysisEntry) + recoveryAttempted, topologyRecovery, err := getCheckAndRecoverFunction(checkAndRecoverFunctionCode)(ctx, analysisEntry, logger) if !recoveryAttempted { + logger.Errorf("Recovery not attempted: %+v", err) return err } recoveryName := getRecoverFunctionName(checkAndRecoverFunctionCode) recoveriesCounter.Add(recoveryName, 1) if err != nil { + logger.Errorf("Failed to recover: %+v", err) recoveriesFailureCounter.Add(recoveryName, 1) } else { + logger.Info("Recovery succeeded") recoveriesSuccessfulCounter.Add(recoveryName, 1) } if topologyRecovery == nil { + logger.Error("Topology recovery is nil - recovery might have failed") return err } if b, err := json.Marshal(topologyRecovery); err == nil { - log.Infof("Topology recovery: %+v", string(b)) + logger.Infof("Topology recovery: %+v", string(b)) } else { - log.Infof("Topology recovery: %+v", topologyRecovery) + logger.Infof("Topology recovery: %+v", topologyRecovery) } // If we ran a cluster wide recovery and actually attempted it, then we know that the replication state for all the tablets in this cluster // would have changed. So we can go ahead and pre-emptively refresh them. // For this refresh we don't use the same context that we used for the recovery, since that context might have expired or could expire soon // Instead we pass the background context. The call forceRefreshAllTabletsInShard handles adding a timeout to it for us. if isClusterWideRecovery(checkAndRecoverFunctionCode) { + logger.Info("Forcing refresh of all tablets post recovery") forceRefreshAllTabletsInShard(context.Background(), analysisEntry.AnalyzedKeyspace, analysisEntry.AnalyzedShard, nil) } else { // For all other recoveries, we would have changed the replication status of the analyzed tablet // so it doesn't hurt to re-read the information of this tablet, otherwise we'll requeue the same recovery // that we just completed because we would be using stale data. + logger.Info("Force discovering problem instance %s post recovery", analysisEntry.AnalyzedInstanceAlias) DiscoverInstance(analysisEntry.AnalyzedInstanceAlias, true) } return err @@ -667,13 +692,15 @@ func postPrsCompletion(topologyRecovery *TopologyRecovery, analysisEntry *inst.R } // electNewPrimary elects a new primary while none were present before. -func electNewPrimary(ctx context.Context, analysisEntry *inst.ReplicationAnalysis) (recoveryAttempted bool, topologyRecovery *TopologyRecovery, err error) { +func electNewPrimary(ctx context.Context, analysisEntry *inst.ReplicationAnalysis, logger *log.PrefixedLogger) (recoveryAttempted bool, topologyRecovery *TopologyRecovery, err error) { topologyRecovery, err = AttemptRecoveryRegistration(analysisEntry) if topologyRecovery == nil || err != nil { - _ = AuditTopologyRecovery(topologyRecovery, fmt.Sprintf("found an active or recent recovery on %+v. Will not issue another electNewPrimary.", analysisEntry.AnalyzedInstanceAlias)) + message := fmt.Sprintf("found an active or recent recovery on %+v. Will not issue another electNewPrimary.", analysisEntry.AnalyzedInstanceAlias) + logger.Warning(message) + _ = AuditTopologyRecovery(topologyRecovery, message) return false, nil, err } - log.Infof("Analysis: %v, will elect a new primary for %v:%v", analysisEntry.Analysis, analysisEntry.ClusterDetails.Keyspace, analysisEntry.ClusterDetails.Shard) + logger.Infof("Analysis: %v, will elect a new primary for %v:%v", analysisEntry.Analysis, analysisEntry.ClusterDetails.Keyspace, analysisEntry.ClusterDetails.Shard) var promotedReplica *inst.Instance // This has to be done in the end; whether successful or not, we should mark that the recovery is done. @@ -684,6 +711,7 @@ func electNewPrimary(ctx context.Context, analysisEntry *inst.ReplicationAnalysi analyzedTablet, err := inst.ReadTablet(analysisEntry.AnalyzedInstanceAlias) if err != nil { + logger.Errorf("Failed to read instance %s, aborting recovery", analysisEntry.AnalyzedInstanceAlias) return false, topologyRecovery, err } _ = AuditTopologyRecovery(topologyRecovery, "starting PlannedReparentShard for electing new primary.") @@ -694,9 +722,9 @@ func electNewPrimary(ctx context.Context, analysisEntry *inst.ReplicationAnalysi // we only log the warnings and errors explicitly, everything gets logged as an information message anyways in auditing topology recovery switch level { case logutilpb.Level_WARNING: - log.Warningf("PRS - %s", value) + logger.Warningf("PRS - %s", value) case logutilpb.Level_ERROR: - log.Errorf("PRS - %s", value) + logger.Errorf("PRS - %s", value) } _ = AuditTopologyRecovery(topologyRecovery, value) })).ReparentShard(ctx, @@ -716,13 +744,15 @@ func electNewPrimary(ctx context.Context, analysisEntry *inst.ReplicationAnalysi } // fixPrimary sets the primary as read-write. -func fixPrimary(ctx context.Context, analysisEntry *inst.ReplicationAnalysis) (recoveryAttempted bool, topologyRecovery *TopologyRecovery, err error) { +func fixPrimary(ctx context.Context, analysisEntry *inst.ReplicationAnalysis, logger *log.PrefixedLogger) (recoveryAttempted bool, topologyRecovery *TopologyRecovery, err error) { topologyRecovery, err = AttemptRecoveryRegistration(analysisEntry) if topologyRecovery == nil { - _ = AuditTopologyRecovery(topologyRecovery, fmt.Sprintf("found an active or recent recovery on %+v. Will not issue another fixPrimary.", analysisEntry.AnalyzedInstanceAlias)) + message := fmt.Sprintf("found an active or recent recovery on %+v. Will not issue another fixPrimary.", analysisEntry.AnalyzedInstanceAlias) + logger.Warning(message) + _ = AuditTopologyRecovery(topologyRecovery, message) return false, nil, err } - log.Infof("Analysis: %v, will fix primary to read-write %+v", analysisEntry.Analysis, analysisEntry.AnalyzedInstanceAlias) + logger.Infof("Analysis: %v, will fix primary to read-write %+v", analysisEntry.Analysis, analysisEntry.AnalyzedInstanceAlias) // This has to be done in the end; whether successful or not, we should mark that the recovery is done. // So that after the active period passes, we are able to run other recoveries. defer func() { @@ -731,12 +761,13 @@ func fixPrimary(ctx context.Context, analysisEntry *inst.ReplicationAnalysis) (r analyzedTablet, err := inst.ReadTablet(analysisEntry.AnalyzedInstanceAlias) if err != nil { + logger.Errorf("Failed to read instance %s, aborting recovery", analysisEntry.AnalyzedInstanceAlias) return false, topologyRecovery, err } durabilityPolicy, err := inst.GetDurabilityPolicy(analyzedTablet.Keyspace) if err != nil { - log.Info("Could not read the durability policy for %v/%v", analyzedTablet.Keyspace, analyzedTablet.Shard) + logger.Info("Could not read the durability policy for %v/%v", analyzedTablet.Keyspace, analyzedTablet.Shard) return false, topologyRecovery, err } @@ -747,13 +778,15 @@ func fixPrimary(ctx context.Context, analysisEntry *inst.ReplicationAnalysis) (r } // fixReplica sets the replica as read-only and points it at the current primary. -func fixReplica(ctx context.Context, analysisEntry *inst.ReplicationAnalysis) (recoveryAttempted bool, topologyRecovery *TopologyRecovery, err error) { +func fixReplica(ctx context.Context, analysisEntry *inst.ReplicationAnalysis, logger *log.PrefixedLogger) (recoveryAttempted bool, topologyRecovery *TopologyRecovery, err error) { topologyRecovery, err = AttemptRecoveryRegistration(analysisEntry) if topologyRecovery == nil { - _ = AuditTopologyRecovery(topologyRecovery, fmt.Sprintf("found an active or recent recovery on %+v. Will not issue another fixReplica.", analysisEntry.AnalyzedInstanceAlias)) + message := fmt.Sprintf("found an active or recent recovery on %+v. Will not issue another fixReplica.", analysisEntry.AnalyzedInstanceAlias) + logger.Warning(message) + _ = AuditTopologyRecovery(topologyRecovery, message) return false, nil, err } - log.Infof("Analysis: %v, will fix replica %+v", analysisEntry.Analysis, analysisEntry.AnalyzedInstanceAlias) + logger.Infof("Analysis: %v, will fix replica %+v", analysisEntry.Analysis, analysisEntry.AnalyzedInstanceAlias) // This has to be done in the end; whether successful or not, we should mark that the recovery is done. // So that after the active period passes, we are able to run other recoveries. defer func() { @@ -762,24 +795,25 @@ func fixReplica(ctx context.Context, analysisEntry *inst.ReplicationAnalysis) (r analyzedTablet, err := inst.ReadTablet(analysisEntry.AnalyzedInstanceAlias) if err != nil { + logger.Errorf("Failed to read instance %s, aborting recovery", analysisEntry.AnalyzedInstanceAlias) return false, topologyRecovery, err } primaryTablet, err := shardPrimary(analyzedTablet.Keyspace, analyzedTablet.Shard) if err != nil { - log.Info("Could not compute primary for %v/%v", analyzedTablet.Keyspace, analyzedTablet.Shard) + logger.Info("Could not compute primary for %v/%v", analyzedTablet.Keyspace, analyzedTablet.Shard) return false, topologyRecovery, err } durabilityPolicy, err := inst.GetDurabilityPolicy(analyzedTablet.Keyspace) if err != nil { - log.Info("Could not read the durability policy for %v/%v", analyzedTablet.Keyspace, analyzedTablet.Shard) + logger.Info("Could not read the durability policy for %v/%v", analyzedTablet.Keyspace, analyzedTablet.Shard) return false, topologyRecovery, err } err = setReadOnly(ctx, analyzedTablet) if err != nil { - log.Info("Could not set the tablet %v to readonly - %v", analysisEntry.AnalyzedInstanceAlias, err) + logger.Info("Could not set the tablet %v to readonly - %v", analysisEntry.AnalyzedInstanceAlias, err) return true, topologyRecovery, err } @@ -788,13 +822,15 @@ func fixReplica(ctx context.Context, analysisEntry *inst.ReplicationAnalysis) (r } // recoverErrantGTIDDetected changes the tablet type of a replica tablet that has errant GTIDs. -func recoverErrantGTIDDetected(ctx context.Context, analysisEntry *inst.ReplicationAnalysis) (recoveryAttempted bool, topologyRecovery *TopologyRecovery, err error) { +func recoverErrantGTIDDetected(ctx context.Context, analysisEntry *inst.ReplicationAnalysis, logger *log.PrefixedLogger) (recoveryAttempted bool, topologyRecovery *TopologyRecovery, err error) { topologyRecovery, err = AttemptRecoveryRegistration(analysisEntry) if topologyRecovery == nil { - _ = AuditTopologyRecovery(topologyRecovery, fmt.Sprintf("found an active or recent recovery on %+v. Will not issue another recoverErrantGTIDDetected.", analysisEntry.AnalyzedInstanceAlias)) + message := fmt.Sprintf("found an active or recent recovery on %+v. Will not issue another recoverErrantGTIDDetected.", analysisEntry.AnalyzedInstanceAlias) + logger.Warning(message) + _ = AuditTopologyRecovery(topologyRecovery, message) return false, nil, err } - log.Infof("Analysis: %v, will fix tablet %+v", analysisEntry.Analysis, analysisEntry.AnalyzedInstanceAlias) + logger.Infof("Analysis: %v, will fix tablet %+v", analysisEntry.Analysis, analysisEntry.AnalyzedInstanceAlias) // This has to be done in the end; whether successful or not, we should mark that the recovery is done. // So that after the active period passes, we are able to run other recoveries. defer func() { @@ -808,13 +844,13 @@ func recoverErrantGTIDDetected(ctx context.Context, analysisEntry *inst.Replicat primaryTablet, err := shardPrimary(analyzedTablet.Keyspace, analyzedTablet.Shard) if err != nil { - log.Info("Could not compute primary for %v/%v", analyzedTablet.Keyspace, analyzedTablet.Shard) + logger.Info("Could not compute primary for %v/%v", analyzedTablet.Keyspace, analyzedTablet.Shard) return false, topologyRecovery, err } durabilityPolicy, err := inst.GetDurabilityPolicy(analyzedTablet.Keyspace) if err != nil { - log.Info("Could not read the durability policy for %v/%v", analyzedTablet.Keyspace, analyzedTablet.Shard) + logger.Info("Could not read the durability policy for %v/%v", analyzedTablet.Keyspace, analyzedTablet.Shard) return false, topologyRecovery, err } diff --git a/go/vt/vtorc/logic/topology_recovery_test.go b/go/vt/vtorc/logic/topology_recovery_test.go index ca164d78836..9df5fc989f0 100644 --- a/go/vt/vtorc/logic/topology_recovery_test.go +++ b/go/vt/vtorc/logic/topology_recovery_test.go @@ -20,6 +20,8 @@ import ( "context" "testing" + "vitess.io/vitess/go/vt/log" + "github.com/stretchr/testify/require" topodatapb "vitess.io/vitess/go/vt/proto/topodata" @@ -131,7 +133,7 @@ func TestElectNewPrimaryPanic(t *testing.T) { defer cancel() ts = memorytopo.NewServer(ctx, "zone1") - recoveryAttempted, _, err := electNewPrimary(context.Background(), analysisEntry) + recoveryAttempted, _, err := electNewPrimary(context.Background(), analysisEntry, log.NewPrefixedLogger("prefix")) require.True(t, recoveryAttempted) require.Error(t, err) } diff --git a/go/vt/vtorc/logic/vtorc.go b/go/vt/vtorc/logic/vtorc.go index 1fde6e31c0d..5ac5af50d47 100644 --- a/go/vt/vtorc/logic/vtorc.go +++ b/go/vt/vtorc/logic/vtorc.go @@ -326,12 +326,6 @@ func refreshAllInformation(ctx context.Context) error { return RefreshAllKeyspacesAndShards(ctx) }) - // Refresh shards to watch. - eg.Go(func() error { - updateShardsToWatch() - return nil - }) - // Refresh all tablets. eg.Go(func() error { return refreshAllTablets(ctx) diff --git a/go/vt/vttablet/common/config.go b/go/vt/vttablet/common/config.go index 72047ce4580..05a989d4cf2 100644 --- a/go/vt/vttablet/common/config.go +++ b/go/vt/vttablet/common/config.go @@ -142,18 +142,18 @@ func NewVReplicationConfig(overrides map[string]string) (*VReplicationConfig, er c.ExperimentalFlags = value } case "vreplication_net_read_timeout": - value, err := strconv.ParseInt(v, 10, 64) + value, err := strconv.Atoi(v) if err != nil { errors = append(errors, getError(k, v)) } else { - c.NetReadTimeout = int(value) + c.NetReadTimeout = value } case "vreplication_net_write_timeout": - value, err := strconv.ParseInt(v, 10, 64) + value, err := strconv.Atoi(v) if err != nil { errors = append(errors, getError(k, v)) } else { - c.NetWriteTimeout = int(value) + c.NetWriteTimeout = value } case "vreplication_copy_phase_duration": value, err := time.ParseDuration(v) @@ -177,18 +177,18 @@ func NewVReplicationConfig(overrides map[string]string) (*VReplicationConfig, er c.MaxTimeToRetryError = value } case "relay_log_max_size": - value, err := strconv.ParseInt(v, 10, 64) + value, err := strconv.Atoi(v) if err != nil { errors = append(errors, getError(k, v)) } else { - c.RelayLogMaxSize = int(value) + c.RelayLogMaxSize = value } case "relay_log_max_items": - value, err := strconv.ParseInt(v, 10, 64) + value, err := strconv.Atoi(v) if err != nil { errors = append(errors, getError(k, v)) } else { - c.RelayLogMaxItems = int(value) + c.RelayLogMaxItems = value } case "vreplication_replica_lag_tolerance": value, err := time.ParseDuration(v) @@ -198,11 +198,11 @@ func NewVReplicationConfig(overrides map[string]string) (*VReplicationConfig, er c.ReplicaLagTolerance = value } case "vreplication_heartbeat_update_interval": - value, err := strconv.ParseInt(v, 10, 64) + value, err := strconv.Atoi(v) if err != nil { errors = append(errors, getError(k, v)) } else { - c.HeartbeatUpdateInterval = int(value) + c.HeartbeatUpdateInterval = value } case "vreplication_store_compressed_gtid": value, err := strconv.ParseBool(v) @@ -212,19 +212,19 @@ func NewVReplicationConfig(overrides map[string]string) (*VReplicationConfig, er c.StoreCompressedGTID = value } case "vreplication-parallel-insert-workers": - value, err := strconv.ParseInt(v, 10, 64) + value, err := strconv.Atoi(v) if err != nil { errors = append(errors, getError(k, v)) } else { - c.ParallelInsertWorkers = int(value) + c.ParallelInsertWorkers = value } case "vstream_packet_size": - value, err := strconv.ParseInt(v, 10, 64) + value, err := strconv.Atoi(v) if err != nil { errors = append(errors, getError(k, v)) } else { c.VStreamPacketSizeOverride = true - c.VStreamPacketSize = int(value) + c.VStreamPacketSize = value } case "vstream_dynamic_packet_size": value, err := strconv.ParseBool(v) diff --git a/go/vt/vttablet/endtoend/vstreamer_test.go b/go/vt/vttablet/endtoend/vstreamer_test.go index 997ab222255..92980ff9e44 100644 --- a/go/vt/vttablet/endtoend/vstreamer_test.go +++ b/go/vt/vttablet/endtoend/vstreamer_test.go @@ -17,7 +17,6 @@ limitations under the License. package endtoend import ( - "bytes" "context" "errors" "fmt" @@ -472,9 +471,7 @@ func expectLogs(ctx context.Context, t *testing.T, query string, eventCh chan [] } func encodeString(in string) string { - buf := bytes.NewBuffer(nil) - sqltypes.NewVarChar(in).EncodeSQL(buf) - return buf.String() + return sqltypes.EncodeStringSQL(in) } func validateSchemaInserted(client *framework.QueryClient, ddl string) bool { diff --git a/go/vt/vttablet/faketmclient/fake_client.go b/go/vt/vttablet/faketmclient/fake_client.go index 78c87d142a9..5a5cd33535f 100644 --- a/go/vt/vttablet/faketmclient/fake_client.go +++ b/go/vt/vttablet/faketmclient/fake_client.go @@ -358,7 +358,7 @@ func (client *FakeTabletManagerClient) PopulateReparentJournal(ctx context.Conte } // ReadReparentJournalInfo is part of the tmclient.TabletManagerClient interface. -func (client *FakeTabletManagerClient) ReadReparentJournalInfo(ctx context.Context, tablet *topodatapb.Tablet) (int, error) { +func (client *FakeTabletManagerClient) ReadReparentJournalInfo(ctx context.Context, tablet *topodatapb.Tablet) (int32, error) { return 10, nil } diff --git a/go/vt/vttablet/grpctmclient/client.go b/go/vt/vttablet/grpctmclient/client.go index 01d51e2993a..f6d154570eb 100644 --- a/go/vt/vttablet/grpctmclient/client.go +++ b/go/vt/vttablet/grpctmclient/client.go @@ -1124,7 +1124,7 @@ func (client *Client) PopulateReparentJournal(ctx context.Context, tablet *topod } // ReadReparentJournalInfo is part of the tmclient.TabletManagerClient interface. -func (client *Client) ReadReparentJournalInfo(ctx context.Context, tablet *topodatapb.Tablet) (int, error) { +func (client *Client) ReadReparentJournalInfo(ctx context.Context, tablet *topodatapb.Tablet) (int32, error) { c, closer, err := client.dialer.dial(ctx, tablet) if err != nil { return 0, err @@ -1134,7 +1134,7 @@ func (client *Client) ReadReparentJournalInfo(ctx context.Context, tablet *topod if err != nil { return 0, err } - return int(resp.Length), nil + return resp.Length, nil } // InitReplica is part of the tmclient.TabletManagerClient interface. diff --git a/go/vt/vttablet/grpctmserver/server.go b/go/vt/vttablet/grpctmserver/server.go index 6f0fd2aa4dc..be1b8ae9372 100644 --- a/go/vt/vttablet/grpctmserver/server.go +++ b/go/vt/vttablet/grpctmserver/server.go @@ -570,7 +570,7 @@ func (s *server) ReadReparentJournalInfo(ctx context.Context, request *tabletman response = &tabletmanagerdatapb.ReadReparentJournalInfoResponse{} length, err := s.tm.ReadReparentJournalInfo(ctx) if err == nil { - response.Length = int32(length) + response.Length = length } return response, err } diff --git a/go/vt/vttablet/onlineddl/executor.go b/go/vt/vttablet/onlineddl/executor.go index 59bd2bf1333..fc6601bb4a0 100644 --- a/go/vt/vttablet/onlineddl/executor.go +++ b/go/vt/vttablet/onlineddl/executor.go @@ -1423,8 +1423,8 @@ func (e *Executor) ExecuteWithVReplication(ctx context.Context, onlineDDL *schem { // temporary hack. todo: this should be done when inserting any _vt.vreplication record across all workflow types - query := fmt.Sprintf("update _vt.vreplication set workflow_type = %d where workflow = '%s'", - binlogdatapb.VReplicationWorkflowType_OnlineDDL, v.workflow) + query := fmt.Sprintf("update _vt.vreplication set workflow_type = %d where workflow = %s", + binlogdatapb.VReplicationWorkflowType_OnlineDDL, sqltypes.EncodeStringSQL(v.workflow)) if _, err := e.vreplicationExec(ctx, tablet.Tablet, query); err != nil { return vterrors.Wrapf(err, "VReplicationExec(%v, %s)", tablet.Tablet, query) } diff --git a/go/vt/vttablet/tabletmanager/rpc_agent.go b/go/vt/vttablet/tabletmanager/rpc_agent.go index 445d74cb930..e779cfa8ff5 100644 --- a/go/vt/vttablet/tabletmanager/rpc_agent.go +++ b/go/vt/vttablet/tabletmanager/rpc_agent.go @@ -140,7 +140,7 @@ type RPCTM interface { PopulateReparentJournal(ctx context.Context, timeCreatedNS int64, actionName string, tabletAlias *topodatapb.TabletAlias, pos string) error - ReadReparentJournalInfo(ctx context.Context) (int, error) + ReadReparentJournalInfo(ctx context.Context) (int32, error) InitReplica(ctx context.Context, parent *topodatapb.TabletAlias, replicationPosition string, timeCreatedNS int64, semiSync bool) error diff --git a/go/vt/vttablet/tabletmanager/rpc_replication.go b/go/vt/vttablet/tabletmanager/rpc_replication.go index b27b25d87c6..7ac37515b67 100644 --- a/go/vt/vttablet/tabletmanager/rpc_replication.go +++ b/go/vt/vttablet/tabletmanager/rpc_replication.go @@ -18,7 +18,6 @@ package tabletmanager import ( "context" - "errors" "fmt" "runtime" "strings" @@ -62,10 +61,13 @@ func (tm *TabletManager) FullStatus(ctx context.Context) (*replicationdatapb.Ful return nil, err } - // Return error if the disk is stalled or rejecting writes. - // Noop by default, must be enabled with the flag "disk-write-dir". - if tm.dhMonitor.IsDiskStalled() { - return nil, errors.New("stalled disk") + // Return if the disk is stalled or rejecting writes. + // If the disk is stalled, we can't be sure if reads will go through + // or not, so we should not run any reads either. + if tm.QueryServiceControl.IsDiskStalled() { + return &replicationdatapb.FullStatus{ + DiskStalled: true, + }, nil } // Server ID - "select @@global.server_id" @@ -426,7 +428,7 @@ func (tm *TabletManager) PopulateReparentJournal(ctx context.Context, timeCreate } // ReadReparentJournalInfo reads the information from reparent journal. -func (tm *TabletManager) ReadReparentJournalInfo(ctx context.Context) (int, error) { +func (tm *TabletManager) ReadReparentJournalInfo(ctx context.Context) (int32, error) { log.Infof("ReadReparentJournalInfo") if err := tm.waitForGrantsToHaveApplied(ctx); err != nil { return 0, err @@ -440,7 +442,7 @@ func (tm *TabletManager) ReadReparentJournalInfo(ctx context.Context) (int, erro if len(res.Rows) != 1 { return 0, vterrors.Errorf(vtrpc.Code_INTERNAL, "unexpected rows when reading reparent journal, got %v", len(res.Rows)) } - return res.Rows[0][0].ToInt() + return res.Rows[0][0].ToInt32() } // InitReplica sets replication primary and position, and waits for the diff --git a/go/vt/vttablet/tabletmanager/rpc_vreplication_test.go b/go/vt/vttablet/tabletmanager/rpc_vreplication_test.go index b463eeb0303..8f4b230104f 100644 --- a/go/vt/vttablet/tabletmanager/rpc_vreplication_test.go +++ b/go/vt/vttablet/tabletmanager/rpc_vreplication_test.go @@ -27,8 +27,6 @@ import ( "testing" "time" - "vitess.io/vitess/go/vt/vttablet/tabletmanager/vreplication" - "github.com/stretchr/testify/require" "vitess.io/vitess/go/constants/sidecar" @@ -47,6 +45,7 @@ import ( "vitess.io/vitess/go/vt/vtenv" "vitess.io/vitess/go/vt/vtgate/vindexes" vttablet "vitess.io/vitess/go/vt/vttablet/common" + "vitess.io/vitess/go/vt/vttablet/tabletmanager/vreplication" binlogdatapb "vitess.io/vitess/go/vt/proto/binlogdata" querypb "vitess.io/vitess/go/vt/proto/query" @@ -336,31 +335,37 @@ func TestMoveTablesUnsharded(t *testing.T) { globalTablet := tenv.addTablet(t, 500, globalKs, globalShard) defer tenv.deleteTablet(globalTablet.tablet) - err := tenv.ts.SaveVSchema(ctx, globalKs, &vschemapb.Keyspace{ - Sharded: false, - Tables: map[string]*vschemapb.Table{ - "t1_seq": { - Type: vindexes.TypeSequence, + err := tenv.ts.SaveVSchema(ctx, &topo.KeyspaceVSchemaInfo{ + Name: globalKs, + Keyspace: &vschemapb.Keyspace{ + Sharded: false, + Tables: map[string]*vschemapb.Table{ + "t1_seq": { + Type: vindexes.TypeSequence, + }, }, }, }) require.NoError(t, err) - err = tenv.ts.SaveVSchema(ctx, targetKs, &vschemapb.Keyspace{ - Sharded: true, - Vindexes: map[string]*vschemapb.Vindex{ - "hash": { - Type: "hash", + err = tenv.ts.SaveVSchema(ctx, &topo.KeyspaceVSchemaInfo{ + Name: targetKs, + Keyspace: &vschemapb.Keyspace{ + Sharded: true, + Vindexes: map[string]*vschemapb.Vindex{ + "hash": { + Type: "hash", + }, }, - }, - Tables: map[string]*vschemapb.Table{ - "t1": { - ColumnVindexes: []*vschemapb.ColumnVindex{{ - Column: "id", - Name: "hash", - }}, - AutoIncrement: &vschemapb.AutoIncrement{ - Column: "id", - Sequence: "t1_seq", + Tables: map[string]*vschemapb.Table{ + "t1": { + ColumnVindexes: []*vschemapb.ColumnVindex{{ + Column: "id", + Name: "hash", + }}, + AutoIncrement: &vschemapb.AutoIncrement{ + Column: "id", + Sequence: "t1_seq", + }, }, }, }, @@ -599,31 +604,37 @@ func TestMoveTablesSharded(t *testing.T) { globalTablet := tenv.addTablet(t, 500, globalKs, globalShard) defer tenv.deleteTablet(globalTablet.tablet) - err := tenv.ts.SaveVSchema(ctx, globalKs, &vschemapb.Keyspace{ - Sharded: false, - Tables: map[string]*vschemapb.Table{ - "t1_seq": { - Type: vindexes.TypeSequence, + err := tenv.ts.SaveVSchema(ctx, &topo.KeyspaceVSchemaInfo{ + Name: globalKs, + Keyspace: &vschemapb.Keyspace{ + Sharded: false, + Tables: map[string]*vschemapb.Table{ + "t1_seq": { + Type: vindexes.TypeSequence, + }, }, }, }) require.NoError(t, err) - err = tenv.ts.SaveVSchema(ctx, targetKs, &vschemapb.Keyspace{ - Sharded: true, - Vindexes: map[string]*vschemapb.Vindex{ - "hash": { - Type: "hash", + err = tenv.ts.SaveVSchema(ctx, &topo.KeyspaceVSchemaInfo{ + Name: targetKs, + Keyspace: &vschemapb.Keyspace{ + Sharded: true, + Vindexes: map[string]*vschemapb.Vindex{ + "hash": { + Type: "hash", + }, }, - }, - Tables: map[string]*vschemapb.Table{ - "t1": { - ColumnVindexes: []*vschemapb.ColumnVindex{{ - Column: "id", - Name: "hash", - }}, - AutoIncrement: &vschemapb.AutoIncrement{ - Column: "id", - Sequence: "t1_seq", + Tables: map[string]*vschemapb.Table{ + "t1": { + ColumnVindexes: []*vschemapb.ColumnVindex{{ + Column: "id", + Name: "hash", + }}, + AutoIncrement: &vschemapb.AutoIncrement{ + Column: "id", + Sequence: "t1_seq", + }, }, }, }, @@ -1245,36 +1256,42 @@ func TestSourceShardSelection(t *testing.T) { ws := workflow.NewServer(vtenv.NewTestEnv(), tenv.ts, tenv.tmc) - err := tenv.ts.SaveVSchema(ctx, sourceKs, &vschemapb.Keyspace{ - Sharded: true, - Vindexes: map[string]*vschemapb.Vindex{ - "hash": { - Type: "hash", + err := tenv.ts.SaveVSchema(ctx, &topo.KeyspaceVSchemaInfo{ + Name: sourceKs, + Keyspace: &vschemapb.Keyspace{ + Sharded: true, + Vindexes: map[string]*vschemapb.Vindex{ + "hash": { + Type: "hash", + }, }, - }, - Tables: map[string]*vschemapb.Table{ - "t1": { - ColumnVindexes: []*vschemapb.ColumnVindex{{ - Column: "id", - Name: "hash", - }}, + Tables: map[string]*vschemapb.Table{ + "t1": { + ColumnVindexes: []*vschemapb.ColumnVindex{{ + Column: "id", + Name: "hash", + }}, + }, }, }, }) require.NoError(t, err) - err = tenv.ts.SaveVSchema(ctx, targetKs, &vschemapb.Keyspace{ - Sharded: true, - Vindexes: map[string]*vschemapb.Vindex{ - "hash": { - Type: "hash", + err = tenv.ts.SaveVSchema(ctx, &topo.KeyspaceVSchemaInfo{ + Name: targetKs, + Keyspace: &vschemapb.Keyspace{ + Sharded: true, + Vindexes: map[string]*vschemapb.Vindex{ + "hash": { + Type: "hash", + }, }, - }, - Tables: map[string]*vschemapb.Table{ - "t1": { - ColumnVindexes: []*vschemapb.ColumnVindex{{ - Column: "id", - Name: "hash", - }}, + Tables: map[string]*vschemapb.Table{ + "t1": { + ColumnVindexes: []*vschemapb.ColumnVindex{{ + Column: "id", + Name: "hash", + }}, + }, }, }, }) @@ -1376,7 +1393,11 @@ func TestSourceShardSelection(t *testing.T) { tenv.tmc.SetSchema(tt.schema) if tt.vschema != nil { - err = tenv.ts.SaveVSchema(ctx, targetKs, tt.vschema) + ksvs := &topo.KeyspaceVSchemaInfo{ + Name: targetKs, + Keyspace: tt.vschema, + } + err = tenv.ts.SaveVSchema(ctx, ksvs) require.NoError(t, err) } @@ -1564,7 +1585,7 @@ func TestFailedMoveTablesCreateCleanup(t *testing.T) { // Check that our vschema changes were also rolled back. vs2, err := tenv.ts.GetVSchema(ctx, targetKs) require.NoError(t, err, "failed to get target vschema") - require.Equal(t, vs, vs2, "expected vschema to be unchanged") + require.Equal(t, vs.Keyspace, vs2.Keyspace, "expected vschema to be unchanged; expected: %+v, got: %+v", vs.Keyspace, vs2.Keyspace) } // TestHasVReplicationWorkflows tests the simple RPC to be sure @@ -2101,7 +2122,11 @@ func TestExternalizeLookupVindex(t *testing.T) { for _, tcase := range testcases { t.Run(tcase.request.Name, func(t *testing.T) { // Resave the source schema for every iteration. - err := tenv.ts.SaveVSchema(ctx, tcase.request.Keyspace, sourceVschema) + ksvs := &topo.KeyspaceVSchemaInfo{ + Name: tcase.request.Keyspace, + Keyspace: sourceVschema, + } + err := tenv.ts.SaveVSchema(ctx, ksvs) require.NoError(t, err) err = tenv.ts.RebuildSrvVSchema(ctx, []string{tenv.cells[0]}) require.NoError(t, err) @@ -2394,7 +2419,11 @@ func TestInternalizeLookupVindex(t *testing.T) { for _, tcase := range testcases { t.Run(tcase.request.Name, func(t *testing.T) { // Resave the source schema for every iteration. - err := tenv.ts.SaveVSchema(ctx, tcase.request.Keyspace, sourceVschema) + sourceKsVS := &topo.KeyspaceVSchemaInfo{ + Name: tcase.request.Keyspace, + Keyspace: sourceVschema, + } + err := tenv.ts.SaveVSchema(ctx, sourceKsVS) require.NoError(t, err) err = tenv.ts.RebuildSrvVSchema(ctx, []string{tenv.cells[0]}) require.NoError(t, err) @@ -2645,7 +2674,11 @@ func TestCompleteLookupVindex(t *testing.T) { for _, tcase := range testcases { t.Run(tcase.request.Name, func(t *testing.T) { // Resave the source schema for every iteration. - err := tenv.ts.SaveVSchema(ctx, tcase.request.Keyspace, sourceVschema) + sourceKsVS := &topo.KeyspaceVSchemaInfo{ + Name: tcase.request.Keyspace, + Keyspace: sourceVschema, + } + err := tenv.ts.SaveVSchema(ctx, sourceKsVS) require.NoError(t, err) err = tenv.ts.RebuildSrvVSchema(ctx, []string{tenv.cells[0]}) require.NoError(t, err) @@ -2888,19 +2921,22 @@ func TestMaterializerOneToMany(t *testing.T) { }), } - err := tenv.ts.SaveVSchema(ctx, targetKs, &vschemapb.Keyspace{ - Sharded: true, - Vindexes: map[string]*vschemapb.Vindex{ - "xxhash": { - Type: "xxhash", + err := tenv.ts.SaveVSchema(ctx, &topo.KeyspaceVSchemaInfo{ + Name: targetKs, + Keyspace: &vschemapb.Keyspace{ + Sharded: true, + Vindexes: map[string]*vschemapb.Vindex{ + "xxhash": { + Type: "xxhash", + }, }, - }, - Tables: map[string]*vschemapb.Table{ - "t1": { - ColumnVindexes: []*vschemapb.ColumnVindex{{ - Column: "c1", - Name: "xxhash", - }}, + Tables: map[string]*vschemapb.Table{ + "t1": { + ColumnVindexes: []*vschemapb.ColumnVindex{{ + Column: "c1", + Name: "xxhash", + }}, + }, }, }, }) @@ -2997,19 +3033,22 @@ func TestMaterializerManyToMany(t *testing.T) { }), } - err := tenv.ts.SaveVSchema(ctx, targetKs, &vschemapb.Keyspace{ - Sharded: true, - Vindexes: map[string]*vschemapb.Vindex{ - "xxhash": { - Type: "xxhash", + err := tenv.ts.SaveVSchema(ctx, &topo.KeyspaceVSchemaInfo{ + Name: targetKs, + Keyspace: &vschemapb.Keyspace{ + Sharded: true, + Vindexes: map[string]*vschemapb.Vindex{ + "xxhash": { + Type: "xxhash", + }, }, - }, - Tables: map[string]*vschemapb.Table{ - "t1": { - ColumnVindexes: []*vschemapb.ColumnVindex{{ - Column: "c1", - Name: "xxhash", - }}, + Tables: map[string]*vschemapb.Table{ + "t1": { + ColumnVindexes: []*vschemapb.ColumnVindex{{ + Column: "c1", + Name: "xxhash", + }}, + }, }, }, }) @@ -3107,22 +3146,25 @@ func TestMaterializerMulticolumnVindex(t *testing.T) { }), } - err := tenv.ts.SaveVSchema(ctx, targetKs, &vschemapb.Keyspace{ - Sharded: true, - Vindexes: map[string]*vschemapb.Vindex{ - "region": { - Type: "region_experimental", - Params: map[string]string{ - "region_bytes": "1", + err := tenv.ts.SaveVSchema(ctx, &topo.KeyspaceVSchemaInfo{ + Name: targetKs, + Keyspace: &vschemapb.Keyspace{ + Sharded: true, + Vindexes: map[string]*vschemapb.Vindex{ + "region": { + Type: "region_experimental", + Params: map[string]string{ + "region_bytes": "1", + }, }, }, - }, - Tables: map[string]*vschemapb.Table{ - "t1": { - ColumnVindexes: []*vschemapb.ColumnVindex{{ - Columns: []string{"c1", "c2"}, - Name: "region", - }}, + Tables: map[string]*vschemapb.Table{ + "t1": { + ColumnVindexes: []*vschemapb.ColumnVindex{{ + Columns: []string{"c1", "c2"}, + Name: "region", + }}, + }, }, }, }) @@ -3361,22 +3403,25 @@ func TestMaterializerExplicitColumns(t *testing.T) { }), } - err := tenv.ts.SaveVSchema(ctx, targetKs, &vschemapb.Keyspace{ - Sharded: true, - Vindexes: map[string]*vschemapb.Vindex{ - "region": { - Type: "region_experimental", - Params: map[string]string{ - "region_bytes": "1", + err := tenv.ts.SaveVSchema(ctx, &topo.KeyspaceVSchemaInfo{ + Name: targetKs, + Keyspace: &vschemapb.Keyspace{ + Sharded: true, + Vindexes: map[string]*vschemapb.Vindex{ + "region": { + Type: "region_experimental", + Params: map[string]string{ + "region_bytes": "1", + }, }, }, - }, - Tables: map[string]*vschemapb.Table{ - "t1": { - ColumnVindexes: []*vschemapb.ColumnVindex{{ - Columns: []string{"c1", "c2"}, - Name: "region", - }}, + Tables: map[string]*vschemapb.Table{ + "t1": { + ColumnVindexes: []*vschemapb.ColumnVindex{{ + Columns: []string{"c1", "c2"}, + Name: "region", + }}, + }, }, }, }) @@ -3471,22 +3516,25 @@ func TestMaterializerRenamedColumns(t *testing.T) { }), } - err := tenv.ts.SaveVSchema(ctx, targetKs, &vschemapb.Keyspace{ - Sharded: true, - Vindexes: map[string]*vschemapb.Vindex{ - "region": { - Type: "region_experimental", - Params: map[string]string{ - "region_bytes": "1", + err := tenv.ts.SaveVSchema(ctx, &topo.KeyspaceVSchemaInfo{ + Name: targetKs, + Keyspace: &vschemapb.Keyspace{ + Sharded: true, + Vindexes: map[string]*vschemapb.Vindex{ + "region": { + Type: "region_experimental", + Params: map[string]string{ + "region_bytes": "1", + }, }, }, - }, - Tables: map[string]*vschemapb.Table{ - "t1": { - ColumnVindexes: []*vschemapb.ColumnVindex{{ - Columns: []string{"c1", "c2"}, - Name: "region", - }}, + Tables: map[string]*vschemapb.Table{ + "t1": { + ColumnVindexes: []*vschemapb.ColumnVindex{{ + Columns: []string{"c1", "c2"}, + Name: "region", + }}, + }, }, }, }) @@ -3637,8 +3685,11 @@ func TestMaterializerNoTargetVSchema(t *testing.T) { }), } - err := tenv.ts.SaveVSchema(ctx, targetKs, &vschemapb.Keyspace{ - Sharded: true, + err := tenv.ts.SaveVSchema(ctx, &topo.KeyspaceVSchemaInfo{ + Name: targetKs, + Keyspace: &vschemapb.Keyspace{ + Sharded: true, + }, }) require.NoError(t, err) @@ -4038,24 +4089,27 @@ func TestMaterializerNoGoodVindex(t *testing.T) { }), } - err := tenv.ts.SaveVSchema(ctx, targetKs, &vschemapb.Keyspace{ - Sharded: true, - Vindexes: map[string]*vschemapb.Vindex{ - "lookup_unique": { - Type: "lookup_unique", - Params: map[string]string{ - "table": "t1", - "from": "c1", - "to": "c2", + err := tenv.ts.SaveVSchema(ctx, &topo.KeyspaceVSchemaInfo{ + Name: targetKs, + Keyspace: &vschemapb.Keyspace{ + Sharded: true, + Vindexes: map[string]*vschemapb.Vindex{ + "lookup_unique": { + Type: "lookup_unique", + Params: map[string]string{ + "table": "t1", + "from": "c1", + "to": "c2", + }, }, }, - }, - Tables: map[string]*vschemapb.Table{ - "t1": { - ColumnVindexes: []*vschemapb.ColumnVindex{{ - Column: "c1", - Name: "lookup_unique", - }}, + Tables: map[string]*vschemapb.Table{ + "t1": { + ColumnVindexes: []*vschemapb.ColumnVindex{{ + Column: "c1", + Name: "lookup_unique", + }}, + }, }, }, }) @@ -4121,19 +4175,22 @@ func TestMaterializerComplexVindexExpression(t *testing.T) { }), } - err := tenv.ts.SaveVSchema(ctx, targetKs, &vschemapb.Keyspace{ - Sharded: true, - Vindexes: map[string]*vschemapb.Vindex{ - "xxhash": { - Type: "xxhash", + err := tenv.ts.SaveVSchema(ctx, &topo.KeyspaceVSchemaInfo{ + Name: targetKs, + Keyspace: &vschemapb.Keyspace{ + Sharded: true, + Vindexes: map[string]*vschemapb.Vindex{ + "xxhash": { + Type: "xxhash", + }, }, - }, - Tables: map[string]*vschemapb.Table{ - "t1": { - ColumnVindexes: []*vschemapb.ColumnVindex{{ - Column: "c1", - Name: "xxhash", - }}, + Tables: map[string]*vschemapb.Table{ + "t1": { + ColumnVindexes: []*vschemapb.ColumnVindex{{ + Column: "c1", + Name: "xxhash", + }}, + }, }, }, }) @@ -4199,19 +4256,22 @@ func TestMaterializerNoVindexInExpression(t *testing.T) { }), } - err := tenv.ts.SaveVSchema(ctx, targetKs, &vschemapb.Keyspace{ - Sharded: true, - Vindexes: map[string]*vschemapb.Vindex{ - "xxhash": { - Type: "xxhash", + err := tenv.ts.SaveVSchema(ctx, &topo.KeyspaceVSchemaInfo{ + Name: targetKs, + Keyspace: &vschemapb.Keyspace{ + Sharded: true, + Vindexes: map[string]*vschemapb.Vindex{ + "xxhash": { + Type: "xxhash", + }, }, - }, - Tables: map[string]*vschemapb.Table{ - "t1": { - ColumnVindexes: []*vschemapb.ColumnVindex{{ - Column: "c1", - Name: "xxhash", - }}, + Tables: map[string]*vschemapb.Table{ + "t1": { + ColumnVindexes: []*vschemapb.ColumnVindex{{ + Column: "c1", + Name: "xxhash", + }}, + }, }, }, }) diff --git a/go/vt/vttablet/tabletmanager/shard_sync.go b/go/vt/vttablet/tabletmanager/shard_sync.go index ab995ec14b1..4afbaa1a639 100644 --- a/go/vt/vttablet/tabletmanager/shard_sync.go +++ b/go/vt/vttablet/tabletmanager/shard_sync.go @@ -85,10 +85,15 @@ func (tm *TabletManager) shardSyncLoop(ctx context.Context, notifyChan <-chan st // We don't use the watch event except to know that we should // re-read the shard record, and to know if the watch dies. log.Info("Change in shard record") - if event.Err != nil { - // The watch failed. Stop it so we start a new one if needed. - log.Errorf("Shard watch failed: %v", event.Err) - shardWatch.stop() + + if event != nil { + if event.Err != nil { + // The watch failed. Stop it so we start a new one if needed. + log.Errorf("Shard watch failed: %v", event.Err) + shardWatch.stop() + } + } else { + log.Infof("Got a nil event from the shard watcher for %s. This should not happen.", tm.tabletAlias) } case <-ctx.Done(): // Our context was cancelled. Terminate the loop. diff --git a/go/vt/vttablet/tabletmanager/tm_init.go b/go/vt/vttablet/tabletmanager/tm_init.go index c22ea0a6e51..fbef04de357 100644 --- a/go/vt/vttablet/tabletmanager/tm_init.go +++ b/go/vt/vttablet/tabletmanager/tm_init.go @@ -95,11 +95,8 @@ var ( skipBuildInfoTags = "/.*/" initTags flagutil.StringMapValue - initTimeout = 1 * time.Minute - mysqlShutdownTimeout = mysqlctl.DefaultShutdownTimeout - stalledDiskWriteDir = "" - stalledDiskWriteTimeout = 30 * time.Second - stalledDiskWriteInterval = 5 * time.Second + initTimeout = 1 * time.Minute + mysqlShutdownTimeout = mysqlctl.DefaultShutdownTimeout ) func registerInitFlags(fs *pflag.FlagSet) { @@ -112,9 +109,6 @@ func registerInitFlags(fs *pflag.FlagSet) { fs.Var(&initTags, "init_tags", "(init parameter) comma separated list of key:value pairs used to tag the tablet") fs.DurationVar(&initTimeout, "init_timeout", initTimeout, "(init parameter) timeout to use for the init phase.") fs.DurationVar(&mysqlShutdownTimeout, "mysql-shutdown-timeout", mysqlShutdownTimeout, "timeout to use when MySQL is being shut down.") - fs.StringVar(&stalledDiskWriteDir, "disk-write-dir", stalledDiskWriteDir, "if provided, tablet will attempt to write a file to this directory to check if the disk is stalled") - fs.DurationVar(&stalledDiskWriteTimeout, "disk-write-timeout", stalledDiskWriteTimeout, "if writes exceed this duration, the disk is considered stalled") - fs.DurationVar(&stalledDiskWriteInterval, "disk-write-interval", stalledDiskWriteInterval, "how often to write to the disk to check whether it is stalled") } var ( @@ -170,7 +164,6 @@ type TabletManager struct { VREngine *vreplication.Engine VDiffEngine *vdiff.Engine Env *vtenv.Environment - dhMonitor DiskHealthMonitor // tmc is used to run an RPC against other vttablets. tmc tmclient.TabletManagerClient @@ -379,7 +372,6 @@ func (tm *TabletManager) Start(tablet *topodatapb.Tablet, config *tabletenv.Tabl tm.tmc = tmclient.NewTabletManagerClient() tm.tmState = newTMState(tm, tablet) tm.actionSema = semaphore.NewWeighted(1) - tm.dhMonitor = newDiskHealthMonitor(tm.BatchCtx) tm._waitForGrantsComplete = make(chan struct{}) tm.baseTabletType = tablet.Type diff --git a/go/vt/vttablet/tabletmanager/vdiff/controller.go b/go/vt/vttablet/tabletmanager/vdiff/controller.go index 20c1501989e..7b5e1311066 100644 --- a/go/vt/vttablet/tabletmanager/vdiff/controller.go +++ b/go/vt/vttablet/tabletmanager/vdiff/controller.go @@ -83,7 +83,7 @@ type controller struct { TableDiffPhaseTimings *stats.Timings } -func newController(ctx context.Context, row sqltypes.RowNamedValues, dbClientFactory func() binlogplayer.DBClient, +func newController(row sqltypes.RowNamedValues, dbClientFactory func() binlogplayer.DBClient, ts *topo.Server, vde *Engine, options *tabletmanagerdata.VDiffOptions) (*controller, error) { log.Infof("VDiff controller initializing for %+v", row) @@ -104,9 +104,6 @@ func newController(ctx context.Context, row sqltypes.RowNamedValues, dbClientFac TableDiffRowCounts: stats.NewCountersWithSingleLabel("", "", "Rows"), TableDiffPhaseTimings: stats.NewTimings("", "", "", "TablePhase"), } - ctx, ct.cancel = context.WithCancel(ctx) - go ct.run(ctx) - return ct, nil } diff --git a/go/vt/vttablet/tabletmanager/vdiff/engine.go b/go/vt/vttablet/tabletmanager/vdiff/engine.go index b2285a070fa..cd3771accfd 100644 --- a/go/vt/vttablet/tabletmanager/vdiff/engine.go +++ b/go/vt/vttablet/tabletmanager/vdiff/engine.go @@ -146,6 +146,8 @@ func (vde *Engine) openLocked(ctx context.Context) error { vde.resetControllers() } + globalStats.initControllerStats() + // At this point the tablet has no controllers running. So // we want to start any VDiffs that have not been explicitly // stopped or otherwise finished. @@ -153,12 +155,12 @@ func (vde *Engine) openLocked(ctx context.Context) error { if err != nil { return err } + vde.ctx, vde.cancel = context.WithCancel(ctx) vde.isOpen = true // now we are open and have things to close if err := vde.initControllers(rows); err != nil { return err } - vde.updateStats() // At this point we've fully and successfully opened so begin // retrying error'd VDiffs until the engine is closed. @@ -212,7 +214,7 @@ func (vde *Engine) retry(ctx context.Context, err error) { // addController creates a new controller using the given vdiff record and adds it to the engine. // You must already have the main engine mutex (mu) locked before calling this. func (vde *Engine) addController(row sqltypes.RowNamedValues, options *tabletmanagerdata.VDiffOptions) error { - ct, err := newController(vde.ctx, row, vde.dbClientFactoryDba, vde.ts, vde, options) + ct, err := newController(row, vde.dbClientFactoryDba, vde.ts, vde, options) if err != nil { return fmt.Errorf("controller could not be initialized for stream %+v on tablet %v", row, vde.thisTablet.Alias) @@ -221,6 +223,10 @@ func (vde *Engine) addController(row sqltypes.RowNamedValues, options *tabletman globalStats.mu.Lock() defer globalStats.mu.Unlock() globalStats.controllers[ct.id] = ct + + controllerCtx, cancel := context.WithCancel(vde.ctx) + ct.cancel = cancel + go ct.run(controllerCtx) return nil } @@ -395,16 +401,4 @@ func (vde *Engine) resetControllers() { ct.Stop() } vde.controllers = make(map[int64]*controller) - vde.updateStats() -} - -// updateStats must only be called while holding the engine lock. -func (vre *Engine) updateStats() { - globalStats.mu.Lock() - defer globalStats.mu.Unlock() - - globalStats.controllers = make(map[int64]*controller, len(vre.controllers)) - for id, ct := range vre.controllers { - globalStats.controllers[id] = ct - } } diff --git a/go/vt/vttablet/tabletmanager/vdiff/framework_test.go b/go/vt/vttablet/tabletmanager/vdiff/framework_test.go index 563741fcd23..4c1c7e8f3b8 100644 --- a/go/vt/vttablet/tabletmanager/vdiff/framework_test.go +++ b/go/vt/vttablet/tabletmanager/vdiff/framework_test.go @@ -676,8 +676,7 @@ func (tvde *testVDiffEnv) createController(t *testing.T, id int) *controller { fmt.Sprintf("%d|%s|%s|%s|%s|%s|%s|%s|", id, uuid.New(), tvde.workflow, tstenv.KeyspaceName, tstenv.ShardName, vdiffDBName, PendingState, optionsJS), ) tvde.dbClient.ExpectRequest(fmt.Sprintf("select * from _vt.vdiff where id = %d", id), noResults, nil) - ct, err := newController(context.Background(), controllerQR.Named().Row(), tvde.dbClientFactory, tstenv.TopoServ, tvde.vde, tvde.opts) - require.NoError(t, err) + ct := tvde.newController(t, controllerQR) ct.sources = map[string]*migrationSource{ tstenv.ShardName: { vrID: 1, @@ -688,5 +687,16 @@ func (tvde *testVDiffEnv) createController(t *testing.T, id int) *controller { }, } ct.sourceKeyspace = tstenv.KeyspaceName + + return ct +} + +func (tvde *testVDiffEnv) newController(t *testing.T, controllerQR *sqltypes.Result) *controller { + ctx := context.Background() + ct, err := newController(controllerQR.Named().Row(), tvde.dbClientFactory, tstenv.TopoServ, tvde.vde, tvde.opts) + require.NoError(t, err) + ctx2, cancel := context.WithCancel(ctx) + ct.cancel = cancel + go ct.run(ctx2) return ct } diff --git a/go/vt/vttablet/tabletmanager/vdiff/stats.go b/go/vt/vttablet/tabletmanager/vdiff/stats.go index 04cda6ac0c1..ae59884e6c2 100644 --- a/go/vt/vttablet/tabletmanager/vdiff/stats.go +++ b/go/vt/vttablet/tabletmanager/vdiff/stats.go @@ -44,11 +44,18 @@ type vdiffStats struct { RowsDiffedCount *stats.Counter } +func (vds *vdiffStats) initControllerStats() { + vds.mu.Lock() + defer vds.mu.Unlock() + vds.controllers = make(map[int64]*controller) +} + func (vds *vdiffStats) register() { globalStats.Count = stats.NewGauge("", "") globalStats.ErrorCount = stats.NewCounter("", "") globalStats.RestartedTableDiffs = stats.NewCountersWithSingleLabel("", "", "Table") globalStats.RowsDiffedCount = stats.NewCounter("", "") + globalStats.initControllerStats() stats.NewGaugeFunc("VDiffCount", "Number of current vdiffs", vds.numControllers) diff --git a/go/vt/vttablet/tabletmanager/vdiff/utils.go b/go/vt/vttablet/tabletmanager/vdiff/utils.go index 68e8a6acb57..e56df52c5cc 100644 --- a/go/vt/vttablet/tabletmanager/vdiff/utils.go +++ b/go/vt/vttablet/tabletmanager/vdiff/utils.go @@ -19,7 +19,6 @@ package vdiff import ( "context" "fmt" - "strings" "vitess.io/vitess/go/vt/sqlparser" "vitess.io/vitess/go/vt/vtgate/evalengine" @@ -59,9 +58,7 @@ func newMergeSorter(participants map[string]*shardStreamer, comparePKs []compare // Utility functions func encodeString(in string) string { - var buf strings.Builder - sqltypes.NewVarChar(in).EncodeSQL(&buf) - return buf.String() + return sqltypes.EncodeStringSQL(in) } func pkColsToGroupByParams(pkCols []int, collationEnv *collations.Environment) []*engine.GroupByParams { diff --git a/go/vt/vttablet/tabletmanager/vdiff/workflow_differ_test.go b/go/vt/vttablet/tabletmanager/vdiff/workflow_differ_test.go index 5ac0fabd726..9d6f4050a64 100644 --- a/go/vt/vttablet/tabletmanager/vdiff/workflow_differ_test.go +++ b/go/vt/vttablet/tabletmanager/vdiff/workflow_differ_test.go @@ -17,7 +17,6 @@ limitations under the License. package vdiff import ( - "context" "fmt" "strings" "testing" @@ -49,8 +48,7 @@ func TestBuildPlanSuccess(t *testing.T) { ) vdiffenv.dbClient.ExpectRequest("select * from _vt.vdiff where id = 1", noResults, nil) - ct, err := newController(context.Background(), controllerQR.Named().Row(), vdiffenv.dbClientFactory, tstenv.TopoServ, vdiffenv.vde, vdiffenv.opts) - require.NoError(t, err) + ct := vdenv.newController(t, controllerQR) ct.sources = map[string]*migrationSource{ tstenv.ShardName: { vrID: 1, @@ -698,9 +696,7 @@ func TestBuildPlanFailure(t *testing.T) { fmt.Sprintf("1|%s|%s|%s|%s|%s|%s|%s|", UUID, vdiffenv.workflow, tstenv.KeyspaceName, tstenv.ShardName, vdiffDBName, PendingState, optionsJS), ) vdiffenv.dbClient.ExpectRequest("select * from _vt.vdiff where id = 1", noResults, nil) - ct, err := newController(context.Background(), controllerQR.Named().Row(), vdiffenv.dbClientFactory, tstenv.TopoServ, vdiffenv.vde, vdiffenv.opts) - require.NoError(t, err) - + ct := vdenv.newController(t, controllerQR) testcases := []struct { input *binlogdatapb.Rule err string diff --git a/go/vt/vttablet/tabletmanager/vreplication/insert_generator.go b/go/vt/vttablet/tabletmanager/vreplication/insert_generator.go index a43278d783c..86753456af1 100644 --- a/go/vt/vttablet/tabletmanager/vreplication/insert_generator.go +++ b/go/vt/vttablet/tabletmanager/vreplication/insert_generator.go @@ -53,10 +53,10 @@ func NewInsertGenerator(state binlogdatapb.VReplicationWorkflowState, dbname str func (ig *InsertGenerator) AddRow(workflow string, bls *binlogdatapb.BinlogSource, pos, cell, tabletTypes string, workflowType binlogdatapb.VReplicationWorkflowType, workflowSubType binlogdatapb.VReplicationWorkflowSubType, deferSecondaryKeys bool, options string) { if options == "" { - options = "'{}'" + options = "{}" } protoutil.SortBinlogSourceTables(bls) - fmt.Fprintf(ig.buf, "%s(%v, %v, %v, %v, %v, %v, %v, %v, 0, '%v', %v, %d, %d, %v, %v)", + fmt.Fprintf(ig.buf, "%s(%v, %v, %v, %v, %v, %v, %v, %v, 0, %v, %v, %d, %d, %v, %v)", ig.prefix, encodeString(workflow), encodeString(bls.String()), @@ -66,12 +66,12 @@ func (ig *InsertGenerator) AddRow(workflow string, bls *binlogdatapb.BinlogSourc encodeString(cell), encodeString(tabletTypes), ig.now, - ig.state, + encodeString(ig.state), encodeString(ig.dbname), workflowType, workflowSubType, deferSecondaryKeys, - options, + encodeString(options), ) ig.prefix = ", " } diff --git a/go/vt/vttablet/tabletmanager/vreplication/vreplicator.go b/go/vt/vttablet/tabletmanager/vreplication/vreplicator.go index 4cf6c7e03c6..ccc37064870 100644 --- a/go/vt/vttablet/tabletmanager/vreplication/vreplicator.go +++ b/go/vt/vttablet/tabletmanager/vreplication/vreplicator.go @@ -508,7 +508,7 @@ func (vr *vreplicator) setState(state binlogdatapb.VReplicationWorkflowState, me }) } vr.stats.State.Store(state.String()) - query := fmt.Sprintf("update _vt.vreplication set state='%v', message=%v where id=%v", state, encodeString(binlogplayer.MessageTruncate(message)), vr.id) + query := fmt.Sprintf("update _vt.vreplication set state=%v, message=%v where id=%v", encodeString(state.String()), encodeString(binlogplayer.MessageTruncate(message)), vr.id) // If we're batching a transaction, then include the state update // in the current transaction batch. if vr.dbClient.InTransaction && vr.dbClient.maxBatchSize > 0 { @@ -528,9 +528,7 @@ func (vr *vreplicator) setState(state binlogdatapb.VReplicationWorkflowState, me } func encodeString(in string) string { - var buf strings.Builder - sqltypes.NewVarChar(in).EncodeSQL(&buf) - return buf.String() + return sqltypes.EncodeStringSQL(in) } func (vr *vreplicator) getSettingFKCheck() error { diff --git a/go/vt/vttablet/tabletserver/controller.go b/go/vt/vttablet/tabletserver/controller.go index c4a4bef99fc..ab2875ae27b 100644 --- a/go/vt/vttablet/tabletserver/controller.go +++ b/go/vt/vttablet/tabletserver/controller.go @@ -122,6 +122,9 @@ type Controller interface { // SetDemotePrimaryStalled marks that demote primary is stalled in the state manager. SetDemotePrimaryStalled() + + // IsDiskStalled returns if the disk is stalled. + IsDiskStalled() bool } // Ensure TabletServer satisfies Controller interface. diff --git a/go/vt/vttablet/tabletmanager/disk_health_monitor.go b/go/vt/vttablet/tabletserver/disk_health_monitor.go similarity index 67% rename from go/vt/vttablet/tabletmanager/disk_health_monitor.go rename to go/vt/vttablet/tabletserver/disk_health_monitor.go index e35bc662a12..f477f7fd30c 100644 --- a/go/vt/vttablet/tabletmanager/disk_health_monitor.go +++ b/go/vt/vttablet/tabletserver/disk_health_monitor.go @@ -1,4 +1,20 @@ -package tabletmanager +/* +Copyright 2024 The Vitess Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package tabletserver import ( "context" @@ -7,8 +23,29 @@ import ( "strconv" "sync" "time" + + "github.com/spf13/pflag" + + "vitess.io/vitess/go/vt/servenv" ) +var ( + stalledDiskWriteDir = "" + stalledDiskWriteTimeout = 30 * time.Second + stalledDiskWriteInterval = 5 * time.Second +) + +func init() { + servenv.OnParseFor("vtcombo", registerInitFlags) + servenv.OnParseFor("vttablet", registerInitFlags) +} + +func registerInitFlags(fs *pflag.FlagSet) { + fs.StringVar(&stalledDiskWriteDir, "disk-write-dir", stalledDiskWriteDir, "if provided, tablet will attempt to write a file to this directory to check if the disk is stalled") + fs.DurationVar(&stalledDiskWriteTimeout, "disk-write-timeout", stalledDiskWriteTimeout, "if writes exceed this duration, the disk is considered stalled") + fs.DurationVar(&stalledDiskWriteInterval, "disk-write-interval", stalledDiskWriteInterval, "how often to write to the disk to check whether it is stalled") +} + type DiskHealthMonitor interface { // IsDiskStalled returns true if the disk is stalled or rejecting writes. IsDiskStalled() bool diff --git a/go/vt/vttablet/tabletmanager/disk_health_monitor_test.go b/go/vt/vttablet/tabletserver/disk_health_monitor_test.go similarity index 85% rename from go/vt/vttablet/tabletmanager/disk_health_monitor_test.go rename to go/vt/vttablet/tabletserver/disk_health_monitor_test.go index 68930f3061d..8b47e40ee79 100644 --- a/go/vt/vttablet/tabletmanager/disk_health_monitor_test.go +++ b/go/vt/vttablet/tabletserver/disk_health_monitor_test.go @@ -1,4 +1,20 @@ -package tabletmanager +/* +Copyright 2024 The Vitess Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package tabletserver import ( "context" diff --git a/go/vt/vttablet/tabletserver/query_executor.go b/go/vt/vttablet/tabletserver/query_executor.go index e4a165960fd..755394723f3 100644 --- a/go/vt/vttablet/tabletserver/query_executor.go +++ b/go/vt/vttablet/tabletserver/query_executor.go @@ -718,10 +718,14 @@ func (qre *QueryExecutor) execSelect() (*sqltypes.Result, error) { q.SetErr(err) } } else { - qre.logStats.QuerySources |= tabletenv.QuerySourceConsolidator - startTime := time.Now() - q.Wait() - qre.tsv.stats.WaitTimings.Record("Consolidations", startTime) + waiterCap := qre.tsv.config.ConsolidatorQueryWaiterCap + if waiterCap == 0 || *q.AddWaiterCounter(0) <= waiterCap { + qre.logStats.QuerySources |= tabletenv.QuerySourceConsolidator + startTime := time.Now() + q.Wait() + qre.tsv.stats.WaitTimings.Record("Consolidations", startTime) + } + q.AddWaiterCounter(-1) } if q.Err() != nil { return nil, q.Err() diff --git a/go/vt/vttablet/tabletserver/rules/cached_size.go b/go/vt/vttablet/tabletserver/rules/cached_size.go index 1375ef2cb7b..d06a31ab8cb 100644 --- a/go/vt/vttablet/tabletserver/rules/cached_size.go +++ b/go/vt/vttablet/tabletserver/rules/cached_size.go @@ -108,6 +108,7 @@ func (cached *bvcre) CachedSize(alloc bool) int64 { } // field re *regexp.Regexp if cached.re != nil { + // WARNING: size of external type regexp.Regexp cannot be fully calculated size += hack.RuntimeAllocSize(int64(160)) } return size @@ -124,6 +125,7 @@ func (cached *namedRegexp) CachedSize(alloc bool) int64 { size += hack.RuntimeAllocSize(int64(len(cached.name))) // field Regexp *regexp.Regexp if cached.Regexp != nil { + // WARNING: size of external type regexp.Regexp cannot be fully calculated size += hack.RuntimeAllocSize(int64(160)) } return size diff --git a/go/vt/vttablet/tabletserver/schema/tracker.go b/go/vt/vttablet/tabletserver/schema/tracker.go index 252a81f3493..84f8346ae0b 100644 --- a/go/vt/vttablet/tabletserver/schema/tracker.go +++ b/go/vt/vttablet/tabletserver/schema/tracker.go @@ -17,12 +17,12 @@ limitations under the License. package schema import ( - "bytes" "context" "fmt" "sync" "time" + "vitess.io/vitess/go/bytes2" "vitess.io/vitess/go/constants/sidecar" "vitess.io/vitess/go/mysql/replication" "vitess.io/vitess/go/sqltypes" @@ -231,10 +231,15 @@ func (tr *Tracker) saveCurrentSchemaToDb(ctx context.Context, gtid, ddl string, } defer conn.Recycle() + // We serialize a blob here, encodeString is for strings only + // and should not be used for binary data. + blobVal := sqltypes.MakeTrusted(sqltypes.VarBinary, blob) + buf := bytes2.Buffer{} + blobVal.EncodeSQLBytes2(&buf) query := sqlparser.BuildParsedQuery("insert into %s.schema_version "+ "(pos, ddl, schemax, time_updated) "+ "values (%s, %s, %s, %d)", sidecar.GetIdentifier(), encodeString(gtid), - encodeString(ddl), encodeString(string(blob)), timestamp).Query + encodeString(ddl), buf.String(), timestamp).Query _, err = conn.Conn.Exec(ctx, query, 1, false) if err != nil { return err @@ -243,9 +248,7 @@ func (tr *Tracker) saveCurrentSchemaToDb(ctx context.Context, gtid, ddl string, } func encodeString(in string) string { - buf := bytes.NewBuffer(nil) - sqltypes.NewVarChar(in).EncodeSQL(buf) - return buf.String() + return sqltypes.EncodeStringSQL(in) } // MustReloadSchemaOnDDL returns true if the ddl is for the db which is part of the workflow and is not an online ddl artifact diff --git a/go/vt/vttablet/tabletserver/state_manager.go b/go/vt/vttablet/tabletserver/state_manager.go index 4512b26f177..0ccd0e42735 100644 --- a/go/vt/vttablet/tabletserver/state_manager.go +++ b/go/vt/vttablet/tabletserver/state_manager.go @@ -97,6 +97,7 @@ type stateManager struct { replHealthy bool demotePrimaryStalled bool lameduck bool + diskHealthMonitor DiskHealthMonitor alsoAllow []topodatapb.TabletType reason string transitionErr error @@ -777,7 +778,7 @@ func (sm *stateManager) IsServing() bool { } func (sm *stateManager) isServingLocked() bool { - return sm.state == StateServing && sm.wantState == StateServing && sm.replHealthy && !sm.demotePrimaryStalled && !sm.lameduck + return sm.state == StateServing && sm.wantState == StateServing && sm.replHealthy && !sm.demotePrimaryStalled && !sm.lameduck && !sm.diskHealthMonitor.IsDiskStalled() } func (sm *stateManager) AppendDetails(details []*kv) []*kv { diff --git a/go/vt/vttablet/tabletserver/state_manager_test.go b/go/vt/vttablet/tabletserver/state_manager_test.go index f8059d6edea..99a3e7e681d 100644 --- a/go/vt/vttablet/tabletserver/state_manager_test.go +++ b/go/vt/vttablet/tabletserver/state_manager_test.go @@ -41,7 +41,9 @@ import ( var testNow = time.Now() func TestStateManagerStateByName(t *testing.T) { - sm := &stateManager{} + sm := &stateManager{ + diskHealthMonitor: newNoopDiskHealthMonitor(), + } sm.replHealthy = true sm.wantState = StateServing @@ -147,6 +149,29 @@ func TestStateManagerUnservePrimary(t *testing.T) { assert.Equal(t, StateNotServing, sm.state) } +type testDiskMonitor struct { + isDiskStalled bool +} + +func (t *testDiskMonitor) IsDiskStalled() bool { + return t.isDiskStalled +} + +// TestIsServingLocked tests isServingLocked() functionality. +func TestIsServingLocked(t *testing.T) { + sm := newTestStateManager() + defer sm.StopService() + tdm := &testDiskMonitor{isDiskStalled: false} + sm.diskHealthMonitor = tdm + + err := sm.SetServingType(topodatapb.TabletType_REPLICA, testNow, StateServing, "") + require.NoError(t, err) + require.True(t, sm.isServingLocked()) + + tdm.isDiskStalled = true + require.False(t, sm.isServingLocked()) +} + func TestStateManagerUnserveNonPrimary(t *testing.T) { sm := newTestStateManager() defer sm.StopService() @@ -778,23 +803,24 @@ func newTestStateManager() *stateManager { parser := sqlparser.NewTestParser() env := tabletenv.NewEnv(vtenv.NewTestEnv(), cfg, "StateManagerTest") sm := &stateManager{ - statelessql: NewQueryList("stateless", parser), - statefulql: NewQueryList("stateful", parser), - olapql: NewQueryList("olap", parser), - hs: newHealthStreamer(env, &topodatapb.TabletAlias{}, schema.NewEngine(env)), - se: &testSchemaEngine{}, - rt: &testReplTracker{lag: 1 * time.Second}, - vstreamer: &testSubcomponent{}, - tracker: &testSubcomponent{}, - watcher: &testSubcomponent{}, - qe: &testQueryEngine{}, - txThrottler: &testTxThrottler{}, - te: &testTxEngine{}, - messager: &testSubcomponent{}, - ddle: &testOnlineDDLExecutor{}, - throttler: &testLagThrottler{}, - tableGC: &testTableGC{}, - rw: newRequestsWaiter(), + statelessql: NewQueryList("stateless", parser), + statefulql: NewQueryList("stateful", parser), + olapql: NewQueryList("olap", parser), + hs: newHealthStreamer(env, &topodatapb.TabletAlias{}, schema.NewEngine(env)), + se: &testSchemaEngine{}, + rt: &testReplTracker{lag: 1 * time.Second}, + vstreamer: &testSubcomponent{}, + tracker: &testSubcomponent{}, + watcher: &testSubcomponent{}, + qe: &testQueryEngine{}, + txThrottler: &testTxThrottler{}, + te: &testTxEngine{}, + messager: &testSubcomponent{}, + ddle: &testOnlineDDLExecutor{}, + diskHealthMonitor: newNoopDiskHealthMonitor(), + throttler: &testLagThrottler{}, + tableGC: &testTableGC{}, + rw: newRequestsWaiter(), } sm.Init(env, &querypb.Target{}) sm.hs.InitDBConfig(&querypb.Target{}) diff --git a/go/vt/vttablet/tabletserver/tabletenv/config.go b/go/vt/vttablet/tabletserver/tabletenv/config.go index 08bf0b1d7c8..ddab935d393 100644 --- a/go/vt/vttablet/tabletserver/tabletenv/config.go +++ b/go/vt/vttablet/tabletserver/tabletenv/config.go @@ -198,6 +198,7 @@ func registerTabletEnvFlags(fs *pflag.FlagSet) { fs.Int64Var(¤tConfig.ConsolidatorStreamQuerySize, "consolidator-stream-query-size", defaultConfig.ConsolidatorStreamQuerySize, "Configure the stream consolidator query size in bytes. Setting to 0 disables the stream consolidator.") fs.Int64Var(¤tConfig.ConsolidatorStreamTotalSize, "consolidator-stream-total-size", defaultConfig.ConsolidatorStreamTotalSize, "Configure the stream consolidator total size in bytes. Setting to 0 disables the stream consolidator.") + fs.Int64Var(¤tConfig.ConsolidatorQueryWaiterCap, "consolidator-query-waiter-cap", 0, "Configure the maximum number of clients allowed to wait on the consolidator.") fs.DurationVar(&healthCheckInterval, "health_check_interval", defaultConfig.Healthcheck.Interval, "Interval between health checks") fs.DurationVar(°radedThreshold, "degraded_threshold", defaultConfig.Healthcheck.DegradedThreshold, "replication lag after which a replica is considered degraded") fs.DurationVar(&unhealthyThreshold, "unhealthy_threshold", defaultConfig.Healthcheck.UnhealthyThreshold, "replication lag after which a replica is considered unhealthy") @@ -324,6 +325,7 @@ type TabletConfig struct { StreamBufferSize int `json:"streamBufferSize,omitempty"` ConsolidatorStreamTotalSize int64 `json:"consolidatorStreamTotalSize,omitempty"` ConsolidatorStreamQuerySize int64 `json:"consolidatorStreamQuerySize,omitempty"` + ConsolidatorQueryWaiterCap int64 `json:"consolidatorMaxQueryWait,omitempty"` QueryCacheMemory int64 `json:"queryCacheMemory,omitempty"` QueryCacheDoorkeeper bool `json:"queryCacheDoorkeeper,omitempty"` SchemaReloadInterval time.Duration `json:"schemaReloadIntervalSeconds,omitempty"` diff --git a/go/vt/vttablet/tabletserver/tabletserver.go b/go/vt/vttablet/tabletserver/tabletserver.go index 4be9fb59600..d962bb5c3fd 100644 --- a/go/vt/vttablet/tabletserver/tabletserver.go +++ b/go/vt/vttablet/tabletserver/tabletserver.go @@ -190,23 +190,24 @@ func NewTabletServer(ctx context.Context, env *vtenv.Environment, name string, c tsv.onlineDDLExecutor = onlineddl.NewExecutor(tsv, alias, topoServer, tsv.lagThrottler, tabletTypeFunc, tsv.onlineDDLExecutorToggleTableBuffer, tsv.tableGC.RequestChecks, tsv.te.preparedPool.IsEmptyForTable) tsv.sm = &stateManager{ - statelessql: tsv.statelessql, - statefulql: tsv.statefulql, - olapql: tsv.olapql, - hs: tsv.hs, - se: tsv.se, - rt: tsv.rt, - vstreamer: tsv.vstreamer, - tracker: tsv.tracker, - watcher: tsv.watcher, - qe: tsv.qe, - txThrottler: tsv.txThrottler, - te: tsv.te, - messager: tsv.messager, - ddle: tsv.onlineDDLExecutor, - throttler: tsv.lagThrottler, - tableGC: tsv.tableGC, - rw: newRequestsWaiter(), + statelessql: tsv.statelessql, + statefulql: tsv.statefulql, + olapql: tsv.olapql, + hs: tsv.hs, + se: tsv.se, + rt: tsv.rt, + vstreamer: tsv.vstreamer, + tracker: tsv.tracker, + watcher: tsv.watcher, + qe: tsv.qe, + txThrottler: tsv.txThrottler, + te: tsv.te, + messager: tsv.messager, + ddle: tsv.onlineDDLExecutor, + throttler: tsv.lagThrottler, + tableGC: tsv.tableGC, + rw: newRequestsWaiter(), + diskHealthMonitor: newDiskHealthMonitor(ctx), } tsv.exporter.NewGaugeFunc("TabletState", "Tablet server state", func() int64 { return int64(tsv.sm.State()) }) @@ -766,6 +767,11 @@ func (tsv *TabletServer) SetDemotePrimaryStalled() { tsv.BroadcastHealth() } +// IsDiskStalled returns if the disk is stalled or not. +func (tsv *TabletServer) IsDiskStalled() bool { + return tsv.sm.diskHealthMonitor.IsDiskStalled() +} + // CreateTransaction creates the metadata for a 2PC transaction. func (tsv *TabletServer) CreateTransaction(ctx context.Context, target *querypb.Target, dtid string, participants []*querypb.Target) (err error) { return tsv.execRequest( diff --git a/go/vt/vttablet/tabletserver/twopc.go b/go/vt/vttablet/tabletserver/twopc.go index e1212ebe627..67cf3f894cf 100644 --- a/go/vt/vttablet/tabletserver/twopc.go +++ b/go/vt/vttablet/tabletserver/twopc.go @@ -569,7 +569,7 @@ func (tpc *TwoPC) UnresolvedTransactions(ctx context.Context, abandonTime time.T appendCurrentTx() // Extract the transaction state and initialize a new TransactionMetadata - stateID, _ := row[1].ToInt() + stateID, _ := row[1].ToInt32() timeCreated, _ := row[2].ToCastInt64() currentTx = &querypb.TransactionMetadata{ Dtid: dtid, diff --git a/go/vt/vttablet/tabletserver/vstreamer/testenv/testenv.go b/go/vt/vttablet/tabletserver/vstreamer/testenv/testenv.go index 632579551c0..552a713b145 100644 --- a/go/vt/vttablet/tabletserver/vstreamer/testenv/testenv.go +++ b/go/vt/vttablet/tabletserver/vstreamer/testenv/testenv.go @@ -205,7 +205,11 @@ func (te *Env) SetVSchema(vs string) error { if err := json2.UnmarshalPB([]byte(vs), &kspb); err != nil { return err } - if err := te.TopoServ.SaveVSchema(ctx, te.KeyspaceName, &kspb); err != nil { + ksvs := &topo.KeyspaceVSchemaInfo{ + Name: te.KeyspaceName, + Keyspace: &kspb, + } + if err := te.TopoServ.SaveVSchema(ctx, ksvs); err != nil { return err } te.SchemaEngine.Reload(ctx) diff --git a/go/vt/vttablet/tabletserver/vstreamer/vstreamer.go b/go/vt/vttablet/tabletserver/vstreamer/vstreamer.go index 980d9935258..7384865d7eb 100644 --- a/go/vt/vttablet/tabletserver/vstreamer/vstreamer.go +++ b/go/vt/vttablet/tabletserver/vstreamer/vstreamer.go @@ -960,9 +960,7 @@ type extColInfo struct { } func encodeString(in string) string { - buf := bytes.NewBuffer(nil) - sqltypes.NewVarChar(in).EncodeSQL(buf) - return buf.String() + return sqltypes.EncodeStringSQL(in) } func (vs *vstreamer) processJournalEvent(vevents []*binlogdatapb.VEvent, plan *streamerPlan, rows mysql.Rows) ([]*binlogdatapb.VEvent, error) { diff --git a/go/vt/vttablet/tabletserver/vstreamer/vstreamer_test.go b/go/vt/vttablet/tabletserver/vstreamer/vstreamer_test.go index 5282b5f372d..7281be1d60c 100644 --- a/go/vt/vttablet/tabletserver/vstreamer/vstreamer_test.go +++ b/go/vt/vttablet/tabletserver/vstreamer/vstreamer_test.go @@ -32,6 +32,7 @@ import ( "github.com/stretchr/testify/require" "google.golang.org/protobuf/proto" + "vitess.io/vitess/go/bytes2" "vitess.io/vitess/go/mysql" "vitess.io/vitess/go/mysql/collations" "vitess.io/vitess/go/sqltypes" @@ -371,9 +372,15 @@ func TestVersion(t *testing.T) { } blob, _ := dbSchema.MarshalVT() gtid := "MariaDB/0-41983-20" + // We serialize a blob here, encodeString is for strings only + // and should not be used for binary data. + blobVal := sqltypes.MakeTrusted(sqltypes.VarBinary, blob) + buf := bytes2.Buffer{} + blobVal.EncodeSQLBytes2(&buf) + testcases := []testcase{{ input: []string{ - fmt.Sprintf("insert into _vt.schema_version values(1, '%s', 123, 'create table t1', %v)", gtid, encodeString(string(blob))), + fmt.Sprintf("insert into _vt.schema_version values(1, '%s', 123, 'create table t1', %v)", gtid, buf.String()), }, // External table events don't get sent. output: [][]string{{ diff --git a/go/vt/vttablet/tabletservermock/controller.go b/go/vt/vttablet/tabletservermock/controller.go index a5242751454..21b38755302 100644 --- a/go/vt/vttablet/tabletservermock/controller.go +++ b/go/vt/vttablet/tabletservermock/controller.go @@ -279,6 +279,12 @@ func (tqsc *Controller) SetDemotePrimaryStalled() { tqsc.MethodCalled["SetDemotePrimaryStalled"] = true } +// IsDiskStalled is part of the tabletserver.Controller interface +func (tqsc *Controller) IsDiskStalled() bool { + tqsc.MethodCalled["IsDiskStalled"] = true + return false +} + // EnterLameduck implements tabletserver.Controller. func (tqsc *Controller) EnterLameduck() { tqsc.mu.Lock() diff --git a/go/vt/vttablet/tmclient/rpc_client_api.go b/go/vt/vttablet/tmclient/rpc_client_api.go index 2b5cc967e9f..7ce4c7f0bf4 100644 --- a/go/vt/vttablet/tmclient/rpc_client_api.go +++ b/go/vt/vttablet/tmclient/rpc_client_api.go @@ -239,7 +239,7 @@ type TabletManagerClient interface { PopulateReparentJournal(ctx context.Context, tablet *topodatapb.Tablet, timeCreatedNS int64, actionName string, tabletAlias *topodatapb.TabletAlias, pos string) error // ReadReparentJournalInfo reads the information from reparent journal - ReadReparentJournalInfo(ctx context.Context, tablet *topodatapb.Tablet) (int, error) + ReadReparentJournalInfo(ctx context.Context, tablet *topodatapb.Tablet) (int32, error) // InitReplica tells a tablet to start replicating from the // passed in primary tablet alias, and wait for the row in the diff --git a/go/vt/vttablet/tmrpctest/test_tm_rpc.go b/go/vt/vttablet/tmrpctest/test_tm_rpc.go index a106b43bf2c..0ec380882cc 100644 --- a/go/vt/vttablet/tmrpctest/test_tm_rpc.go +++ b/go/vt/vttablet/tmrpctest/test_tm_rpc.go @@ -1179,9 +1179,9 @@ func (fra *fakeRPCTM) PopulateReparentJournal(ctx context.Context, timeCreatedNS return nil } -var testReparentJournalLen = 10 +var testReparentJournalLen int32 = 10 -func (fra *fakeRPCTM) ReadReparentJournalInfo(context.Context) (int, error) { +func (fra *fakeRPCTM) ReadReparentJournalInfo(context.Context) (int32, error) { if fra.panics { panic(fmt.Errorf("test-triggered panic")) } diff --git a/go/vt/wrangler/keyspace.go b/go/vt/wrangler/keyspace.go index 98551a084c9..6fce73b1f0f 100644 --- a/go/vt/wrangler/keyspace.go +++ b/go/vt/wrangler/keyspace.go @@ -17,7 +17,6 @@ limitations under the License. package wrangler import ( - "bytes" "context" "errors" "fmt" @@ -125,7 +124,5 @@ func (wr *Wrangler) updateShardRecords(ctx context.Context, keyspace string, sha } func encodeString(in string) string { - buf := bytes.NewBuffer(nil) - sqltypes.NewVarChar(in).EncodeSQL(buf) - return buf.String() + return sqltypes.EncodeStringSQL(in) } diff --git a/go/vt/wrangler/materializer.go b/go/vt/wrangler/materializer.go index bd7ae553130..27aaa6935be 100644 --- a/go/vt/wrangler/materializer.go +++ b/go/vt/wrangler/materializer.go @@ -148,8 +148,10 @@ func (wr *Wrangler) MoveTables(ctx context.Context, workflow, sourceKeyspace, ta log.Infof("Successfully opened external topo: %+v", externalTopo) } - var vschema *vschemapb.Keyspace - var origVSchema *vschemapb.Keyspace // If we need to rollback a failed create + var ( + vschema *topo.KeyspaceVSchemaInfo + origVSchema *topo.KeyspaceVSchemaInfo // If we need to rollback a failed create + ) vschema, err = wr.ts.GetVSchema(ctx, targetKeyspace) if err != nil { return err @@ -215,7 +217,7 @@ func (wr *Wrangler) MoveTables(ctx context.Context, workflow, sourceKeyspace, ta // Save the original in case we need to restore it for a late failure // in the defer(). origVSchema = vschema.CloneVT() - if err := wr.addTablesToVSchema(ctx, sourceKeyspace, vschema, tables, externalTopo == nil); err != nil { + if err := wr.addTablesToVSchema(ctx, sourceKeyspace, vschema.Keyspace, tables, externalTopo == nil); err != nil { return err } } @@ -280,7 +282,7 @@ func (wr *Wrangler) MoveTables(ctx context.Context, workflow, sourceKeyspace, ta if origVSchema == nil { // There's no previous version to restore return } - if cerr := wr.ts.SaveVSchema(ctx, targetKeyspace, origVSchema); cerr != nil { + if cerr := wr.ts.SaveVSchema(ctx, origVSchema); cerr != nil { err = vterrors.Wrapf(err, "failed to restore original target vschema: %v", cerr) } } @@ -321,7 +323,7 @@ func (wr *Wrangler) MoveTables(ctx context.Context, workflow, sourceKeyspace, ta } // We added to the vschema. - if err := wr.ts.SaveVSchema(ctx, targetKeyspace, vschema); err != nil { + if err := wr.ts.SaveVSchema(ctx, vschema); err != nil { return err } } @@ -477,7 +479,7 @@ func (wr *Wrangler) CreateLookupVindex(ctx context.Context, keyspace string, spe if err != nil { return err } - if err := wr.ts.SaveVSchema(ctx, ms.TargetKeyspace, targetVSchema); err != nil { + if err := wr.ts.SaveVSchema(ctx, targetVSchema); err != nil { return err } ms.Cell = cell @@ -495,7 +497,7 @@ func (wr *Wrangler) CreateLookupVindex(ctx context.Context, keyspace string, spe if err := wr.Materialize(ctx, ms); err != nil { return err } - if err := wr.ts.SaveVSchema(ctx, keyspace, sourceVSchema); err != nil { + if err := wr.ts.SaveVSchema(ctx, sourceVSchema); err != nil { return err } @@ -503,7 +505,7 @@ func (wr *Wrangler) CreateLookupVindex(ctx context.Context, keyspace string, spe } // prepareCreateLookup performs the preparatory steps for creating a lookup vindex. -func (wr *Wrangler) prepareCreateLookup(ctx context.Context, keyspace string, specs *vschemapb.Keyspace, continueAfterCopyWithOwner bool) (ms *vtctldatapb.MaterializeSettings, sourceVSchema, targetVSchema *vschemapb.Keyspace, err error) { +func (wr *Wrangler) prepareCreateLookup(ctx context.Context, keyspace string, specs *vschemapb.Keyspace, continueAfterCopyWithOwner bool) (ms *vtctldatapb.MaterializeSettings, sourceVSchema, targetVSchema *topo.KeyspaceVSchemaInfo, err error) { // Important variables are pulled out here. var ( // lookup vindex info @@ -928,7 +930,7 @@ func (wr *Wrangler) ExternalizeVindex(ctx context.Context, qualifiedVindexName s // Remove the write_only param and save the source vschema. delete(sourceVindex.Params, "write_only") - if err := wr.ts.SaveVSchema(ctx, sourceKeyspace, sourceVSchema); err != nil { + if err := wr.ts.SaveVSchema(ctx, sourceVSchema); err != nil { return err } return wr.ts.RebuildSrvVSchema(ctx, nil) @@ -1062,7 +1064,7 @@ func (wr *Wrangler) buildMaterializer(ctx context.Context, ms *vtctldatapb.Mater if err != nil { return nil, err } - targetVSchema, err := vindexes.BuildKeyspaceSchema(vschema, ms.TargetKeyspace, wr.env.Parser()) + targetVSchema, err := vindexes.BuildKeyspaceSchema(vschema.Keyspace, ms.TargetKeyspace, wr.env.Parser()) if err != nil { return nil, err } @@ -1129,7 +1131,7 @@ func (wr *Wrangler) buildMaterializer(ctx context.Context, ms *vtctldatapb.Mater if err != nil { return nil, fmt.Errorf("failed to get source keyspace vschema: %v", err) } - differentPVs = primaryVindexesDiffer(ms, sourceVSchema, vschema) + differentPVs = primaryVindexesDiffer(ms, sourceVSchema.Keyspace, vschema.Keyspace) return &materializer{ wr: wr, diff --git a/go/vt/wrangler/materializer_test.go b/go/vt/wrangler/materializer_test.go index 1871d778c6b..a406516446f 100644 --- a/go/vt/wrangler/materializer_test.go +++ b/go/vt/wrangler/materializer_test.go @@ -34,6 +34,7 @@ import ( "vitess.io/vitess/go/test/utils" "vitess.io/vitess/go/vt/logutil" "vitess.io/vitess/go/vt/sqlparser" + "vitess.io/vitess/go/vt/topo" "vitess.io/vitess/go/vt/topo/memorytopo" "vitess.io/vitess/go/vt/topo/topoproto" "vitess.io/vitess/go/vt/vtenv" @@ -329,10 +330,16 @@ func TestCreateLookupVindexFull(t *testing.T) { Schema: sourceSchema, }}, } - if err := env.topoServ.SaveVSchema(context.Background(), ms.TargetKeyspace, &vschemapb.Keyspace{}); err != nil { + if err := env.topoServ.SaveVSchema(context.Background(), &topo.KeyspaceVSchemaInfo{ + Name: ms.TargetKeyspace, + Keyspace: &vschemapb.Keyspace{}, + }); err != nil { t.Fatal(err) } - if err := env.topoServ.SaveVSchema(context.Background(), ms.SourceKeyspace, sourceVSchema); err != nil { + if err := env.topoServ.SaveVSchema(context.Background(), &topo.KeyspaceVSchemaInfo{ + Name: ms.SourceKeyspace, + Keyspace: sourceVSchema, + }); err != nil { t.Fatal(err) } @@ -376,7 +383,7 @@ func TestCreateLookupVindexFull(t *testing.T) { } vschema, err := env.topoServ.GetVSchema(ctx, ms.SourceKeyspace) require.NoError(t, err) - utils.MustMatch(t, wantvschema, vschema) + utils.MustMatch(t, wantvschema, vschema.Keyspace) wantvschema = &vschemapb.Keyspace{ Tables: map[string]*vschemapb.Table{ @@ -385,7 +392,7 @@ func TestCreateLookupVindexFull(t *testing.T) { } vschema, err = env.topoServ.GetVSchema(ctx, ms.TargetKeyspace) require.NoError(t, err) - utils.MustMatch(t, wantvschema, vschema) + utils.MustMatch(t, wantvschema, vschema.Keyspace) } func TestCreateLookupVindexCreateDDL(t *testing.T) { @@ -412,7 +419,10 @@ func TestCreateLookupVindexCreateDDL(t *testing.T) { }, }, } - if err := env.topoServ.SaveVSchema(context.Background(), ms.SourceKeyspace, vs); err != nil { + if err := env.topoServ.SaveVSchema(context.Background(), &topo.KeyspaceVSchemaInfo{ + Name: ms.SourceKeyspace, + Keyspace: vs, + }); err != nil { t.Fatal(err) } @@ -827,10 +837,16 @@ func TestCreateLookupVindexSourceVSchema(t *testing.T) { Schema: sourceSchema, }}, } - if err := env.topoServ.SaveVSchema(context.Background(), ms.TargetKeyspace, &vschemapb.Keyspace{}); err != nil { + if err := env.topoServ.SaveVSchema(context.Background(), &topo.KeyspaceVSchemaInfo{ + Name: ms.TargetKeyspace, + Keyspace: &vschemapb.Keyspace{}, + }); err != nil { t.Fatal(err) } - if err := env.topoServ.SaveVSchema(context.Background(), ms.SourceKeyspace, tcase.sourceVSchema); err != nil { + if err := env.topoServ.SaveVSchema(context.Background(), &topo.KeyspaceVSchemaInfo{ + Name: ms.SourceKeyspace, + Keyspace: tcase.sourceVSchema, + }); err != nil { t.Fatal(err) } @@ -866,7 +882,10 @@ func TestCreateLookupVindexTargetVSchema(t *testing.T) { }, }, } - if err := env.topoServ.SaveVSchema(context.Background(), ms.SourceKeyspace, sourcevs); err != nil { + if err := env.topoServ.SaveVSchema(context.Background(), &topo.KeyspaceVSchemaInfo{ + Name: ms.SourceKeyspace, + Keyspace: sourcevs, + }); err != nil { t.Fatal(err) } @@ -1063,7 +1082,10 @@ func TestCreateLookupVindexTargetVSchema(t *testing.T) { }}, } specs.Vindexes["v"].Params["table"] = fmt.Sprintf("%s.%s", ms.TargetKeyspace, tcase.targetTable) - if err := env.topoServ.SaveVSchema(context.Background(), ms.TargetKeyspace, tcase.targetVSchema); err != nil { + if err := env.topoServ.SaveVSchema(context.Background(), &topo.KeyspaceVSchemaInfo{ + Name: ms.TargetKeyspace, + Keyspace: tcase.targetVSchema, + }); err != nil { t.Fatal(err) } @@ -1075,7 +1097,7 @@ func TestCreateLookupVindexTargetVSchema(t *testing.T) { continue } require.NoError(t, err) - utils.MustMatch(t, tcase.out, got, tcase.description) + utils.MustMatch(t, tcase.out, got.Keyspace, tcase.description) } } @@ -1178,7 +1200,10 @@ func TestCreateLookupVindexSameKeyspace(t *testing.T) { Schema: sourceSchema, }}, } - if err := env.topoServ.SaveVSchema(context.Background(), ms.SourceKeyspace, vschema); err != nil { + if err := env.topoServ.SaveVSchema(context.Background(), &topo.KeyspaceVSchemaInfo{ + Name: ms.SourceKeyspace, + Keyspace: vschema, + }); err != nil { t.Fatal(err) } @@ -1287,7 +1312,10 @@ func TestCreateCustomizedVindex(t *testing.T) { Schema: sourceSchema, }}, } - if err := env.topoServ.SaveVSchema(context.Background(), ms.SourceKeyspace, vschema); err != nil { + if err := env.topoServ.SaveVSchema(context.Background(), &topo.KeyspaceVSchemaInfo{ + Name: ms.SourceKeyspace, + Keyspace: vschema, + }); err != nil { t.Fatal(err) } @@ -1402,7 +1430,10 @@ func TestCreateLookupVindexIgnoreNulls(t *testing.T) { Schema: sourceSchema, }}, } - if err := env.topoServ.SaveVSchema(context.Background(), ms.SourceKeyspace, vschema); err != nil { + if err := env.topoServ.SaveVSchema(context.Background(), &topo.KeyspaceVSchemaInfo{ + Name: ms.SourceKeyspace, + Keyspace: vschema, + }); err != nil { t.Fatal(err) } @@ -1480,7 +1511,10 @@ func TestStopAfterCopyFlag(t *testing.T) { Schema: sourceSchema, }}, } - if err := env.topoServ.SaveVSchema(context.Background(), ms.SourceKeyspace, vschema); err != nil { + if err := env.topoServ.SaveVSchema(context.Background(), &topo.KeyspaceVSchemaInfo{ + Name: ms.SourceKeyspace, + Keyspace: vschema, + }); err != nil { t.Fatal(err) } @@ -1536,10 +1570,16 @@ func TestCreateLookupVindexFailures(t *testing.T) { }, }, } - if err := topoServ.SaveVSchema(context.Background(), "sourceks", vs); err != nil { + if err := topoServ.SaveVSchema(context.Background(), &topo.KeyspaceVSchemaInfo{ + Name: "sourceks", + Keyspace: vs, + }); err != nil { t.Fatal(err) } - if err := topoServ.SaveVSchema(context.Background(), "targetks", &vschemapb.Keyspace{}); err != nil { + if err := topoServ.SaveVSchema(context.Background(), &topo.KeyspaceVSchemaInfo{ + Name: "targetks", + Keyspace: &vschemapb.Keyspace{}, + }); err != nil { t.Fatal(err) } @@ -1861,7 +1901,10 @@ func TestExternalizeVindex(t *testing.T) { }} for _, tcase := range testcases { // Resave the source schema for every iteration. - if err := env.topoServ.SaveVSchema(context.Background(), ms.SourceKeyspace, sourceVSchema); err != nil { + if err := env.topoServ.SaveVSchema(context.Background(), &topo.KeyspaceVSchemaInfo{ + Name: ms.SourceKeyspace, + Keyspace: sourceVSchema, + }); err != nil { t.Fatal(err) } if tcase.vrResponse != nil { @@ -2012,7 +2055,10 @@ func TestMaterializerOneToMany(t *testing.T) { }, } - if err := env.topoServ.SaveVSchema(context.Background(), "targetks", vs); err != nil { + if err := env.topoServ.SaveVSchema(context.Background(), &topo.KeyspaceVSchemaInfo{ + Name: "targetks", + Keyspace: vs, + }); err != nil { t.Fatal(err) } @@ -2069,7 +2115,10 @@ func TestMaterializerManyToMany(t *testing.T) { }, } - if err := env.topoServ.SaveVSchema(context.Background(), "targetks", vs); err != nil { + if err := env.topoServ.SaveVSchema(context.Background(), &topo.KeyspaceVSchemaInfo{ + Name: "targetks", + Keyspace: vs, + }); err != nil { t.Fatal(err) } @@ -2130,7 +2179,10 @@ func TestMaterializerMulticolumnVindex(t *testing.T) { }, } - if err := env.topoServ.SaveVSchema(context.Background(), "targetks", vs); err != nil { + if err := env.topoServ.SaveVSchema(context.Background(), &topo.KeyspaceVSchemaInfo{ + Name: "targetks", + Keyspace: vs, + }); err != nil { t.Fatal(err) } @@ -2267,7 +2319,10 @@ func TestMaterializerExplicitColumns(t *testing.T) { }, } - if err := env.topoServ.SaveVSchema(context.Background(), "targetks", vs); err != nil { + if err := env.topoServ.SaveVSchema(context.Background(), &topo.KeyspaceVSchemaInfo{ + Name: "targetks", + Keyspace: vs, + }); err != nil { t.Fatal(err) } @@ -2327,7 +2382,10 @@ func TestMaterializerRenamedColumns(t *testing.T) { }, } - if err := env.topoServ.SaveVSchema(context.Background(), "targetks", vs); err != nil { + if err := env.topoServ.SaveVSchema(context.Background(), &topo.KeyspaceVSchemaInfo{ + Name: "targetks", + Keyspace: vs, + }); err != nil { t.Fatal(err) } @@ -2399,7 +2457,10 @@ func TestMaterializerNoTargetVSchema(t *testing.T) { Sharded: true, } - if err := env.topoServ.SaveVSchema(context.Background(), "targetks", vs); err != nil { + if err := env.topoServ.SaveVSchema(context.Background(), &topo.KeyspaceVSchemaInfo{ + Name: "targetks", + Keyspace: vs, + }); err != nil { t.Fatal(err) } env.tmc.expectVRQuery(200, mzSelectFrozenQuery, &sqltypes.Result{}) @@ -2619,7 +2680,10 @@ func TestMaterializerNoGoodVindex(t *testing.T) { }, } - if err := env.topoServ.SaveVSchema(context.Background(), "targetks", vs); err != nil { + if err := env.topoServ.SaveVSchema(context.Background(), &topo.KeyspaceVSchemaInfo{ + Name: "targetks", + Keyspace: vs, + }); err != nil { t.Fatal(err) } @@ -2660,7 +2724,10 @@ func TestMaterializerComplexVindexExpression(t *testing.T) { }, } - if err := env.topoServ.SaveVSchema(context.Background(), "targetks", vs); err != nil { + if err := env.topoServ.SaveVSchema(context.Background(), &topo.KeyspaceVSchemaInfo{ + Name: "targetks", + Keyspace: vs, + }); err != nil { t.Fatal(err) } @@ -2701,7 +2768,10 @@ func TestMaterializerNoVindexInExpression(t *testing.T) { }, } - if err := env.topoServ.SaveVSchema(context.Background(), "targetks", vs); err != nil { + if err := env.topoServ.SaveVSchema(context.Background(), &topo.KeyspaceVSchemaInfo{ + Name: "targetks", + Keyspace: vs, + }); err != nil { t.Fatal(err) } @@ -3138,11 +3208,17 @@ func TestMaterializerSourceShardSelection(t *testing.T) { for _, tcase := range testcases { t.Run(tcase.name, func(t *testing.T) { env, ctx := newTestMaterializerEnv(t, ms, tcase.sourceShards, tcase.targetShards) - if err := env.topoServ.SaveVSchema(ctx, "targetks", tcase.targetVSchema); err != nil { + if err := env.topoServ.SaveVSchema(ctx, &topo.KeyspaceVSchemaInfo{ + Name: "targetks", + Keyspace: tcase.targetVSchema, + }); err != nil { t.Fatal(err) } if tcase.sourceVSchema != nil { - if err := env.topoServ.SaveVSchema(context.Background(), "sourceks", tcase.sourceVSchema); err != nil { + if err := env.topoServ.SaveVSchema(context.Background(), &topo.KeyspaceVSchemaInfo{ + Name: "sourceks", + Keyspace: tcase.sourceVSchema, + }); err != nil { t.Fatal(err) } } @@ -3395,7 +3471,10 @@ func TestAddTablesToVSchema(t *testing.T) { } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - ts.SaveVSchema(ctx, srcks, tt.sourceVSchema) + ts.SaveVSchema(ctx, &topo.KeyspaceVSchemaInfo{ + Name: srcks, + Keyspace: tt.sourceVSchema, + }) err := wr.addTablesToVSchema(ctx, srcks, tt.inTargetVSchema, tt.tables, tt.copyVSchema) require.NoError(t, err) require.Equal(t, tt.wantTargetVSchema, tt.inTargetVSchema) @@ -3587,7 +3666,10 @@ func TestKeyRangesEqualOptimization(t *testing.T) { ctx, cancel := context.WithTimeout(ctx, 30*time.Second) defer cancel() // Target is always sharded. - err := env.wr.ts.SaveVSchema(ctx, targetKs, targetVSchema) + err := env.wr.ts.SaveVSchema(ctx, &topo.KeyspaceVSchemaInfo{ + Name: targetKs, + Keyspace: targetVSchema, + }) require.NoError(t, err, "SaveVSchema failed: %v", err) for _, tablet := range env.tablets { diff --git a/go/vt/wrangler/resharder.go b/go/vt/wrangler/resharder.go index b041ce32041..09004032dd3 100644 --- a/go/vt/wrangler/resharder.go +++ b/go/vt/wrangler/resharder.go @@ -39,7 +39,6 @@ import ( "vitess.io/vitess/go/vt/vttablet/tabletmanager/vreplication" binlogdatapb "vitess.io/vitess/go/vt/proto/binlogdata" - vschemapb "vitess.io/vitess/go/vt/proto/vschema" ) type resharder struct { @@ -50,7 +49,7 @@ type resharder struct { sourcePrimaries map[string]*topo.TabletInfo targetShards []*topo.ShardInfo targetPrimaries map[string]*topo.TabletInfo - vschema *vschemapb.Keyspace + vschema *topo.KeyspaceVSchemaInfo refStreams map[string]*refStream cell string //single cell or cellsAlias or comma-separated list of cells/cellsAliases tabletTypes string diff --git a/go/vt/wrangler/resharder_test.go b/go/vt/wrangler/resharder_test.go index 4c47b3ebf14..2caa49c4f68 100644 --- a/go/vt/wrangler/resharder_test.go +++ b/go/vt/wrangler/resharder_test.go @@ -26,6 +26,7 @@ import ( "github.com/stretchr/testify/require" "vitess.io/vitess/go/sqltypes" + "vitess.io/vitess/go/vt/topo" "vitess.io/vitess/go/vt/vtgate/vindexes" binlogdatapb "vitess.io/vitess/go/vt/proto/binlogdata" @@ -218,7 +219,10 @@ func TestResharderOneRefTable(t *testing.T) { }, }, } - if err := env.wr.ts.SaveVSchema(context.Background(), env.keyspace, vs); err != nil { + if err := env.wr.ts.SaveVSchema(context.Background(), &topo.KeyspaceVSchemaInfo{ + Name: env.keyspace, + Keyspace: vs, + }); err != nil { t.Fatal(err) } @@ -272,7 +276,10 @@ func TestReshardStopFlags(t *testing.T) { }, }, } - if err := env.wr.ts.SaveVSchema(context.Background(), env.keyspace, vs); err != nil { + if err := env.wr.ts.SaveVSchema(context.Background(), &topo.KeyspaceVSchemaInfo{ + Name: env.keyspace, + Keyspace: vs, + }); err != nil { t.Fatal(err) } @@ -325,7 +332,10 @@ func TestResharderOneRefStream(t *testing.T) { }, }, } - if err := env.wr.ts.SaveVSchema(context.Background(), env.keyspace, vs); err != nil { + if err := env.wr.ts.SaveVSchema(context.Background(), &topo.KeyspaceVSchemaInfo{ + Name: env.keyspace, + Keyspace: vs, + }); err != nil { t.Fatal(err) } @@ -404,7 +414,10 @@ func TestResharderNoRefStream(t *testing.T) { }, }, } - if err := env.wr.ts.SaveVSchema(context.Background(), env.keyspace, vs); err != nil { + if err := env.wr.ts.SaveVSchema(context.Background(), &topo.KeyspaceVSchemaInfo{ + Name: env.keyspace, + Keyspace: vs, + }); err != nil { t.Fatal(err) } @@ -627,7 +640,10 @@ func TestResharderUnnamedStream(t *testing.T) { }, }, } - if err := env.wr.ts.SaveVSchema(context.Background(), env.keyspace, vs); err != nil { + if err := env.wr.ts.SaveVSchema(context.Background(), &topo.KeyspaceVSchemaInfo{ + Name: env.keyspace, + Keyspace: vs, + }); err != nil { t.Fatal(err) } @@ -677,7 +693,10 @@ func TestResharderMismatchedRefStreams(t *testing.T) { }, }, } - if err := env.wr.ts.SaveVSchema(context.Background(), env.keyspace, vs); err != nil { + if err := env.wr.ts.SaveVSchema(context.Background(), &topo.KeyspaceVSchemaInfo{ + Name: env.keyspace, + Keyspace: vs, + }); err != nil { t.Fatal(err) } @@ -797,7 +816,10 @@ func TestResharderMixedTablesOrder1(t *testing.T) { }, }, } - if err := env.wr.ts.SaveVSchema(context.Background(), env.keyspace, vs); err != nil { + if err := env.wr.ts.SaveVSchema(context.Background(), &topo.KeyspaceVSchemaInfo{ + Name: env.keyspace, + Keyspace: vs, + }); err != nil { t.Fatal(err) } @@ -866,7 +888,10 @@ func TestResharderMixedTablesOrder2(t *testing.T) { }, }, } - if err := env.wr.ts.SaveVSchema(context.Background(), env.keyspace, vs); err != nil { + if err := env.wr.ts.SaveVSchema(context.Background(), &topo.KeyspaceVSchemaInfo{ + Name: env.keyspace, + Keyspace: vs, + }); err != nil { t.Fatal(err) } diff --git a/go/vt/wrangler/traffic_switcher.go b/go/vt/wrangler/traffic_switcher.go index d337c1ee515..9006e8b1555 100644 --- a/go/vt/wrangler/traffic_switcher.go +++ b/go/vt/wrangler/traffic_switcher.go @@ -995,7 +995,7 @@ func (wr *Wrangler) buildTrafficSwitcher(ctx context.Context, targetKeyspace, wo if err != nil { return nil, err } - ts.sourceKSSchema, err = vindexes.BuildKeyspaceSchema(vs, ts.sourceKeyspace, wr.env.Parser()) + ts.sourceKSSchema, err = vindexes.BuildKeyspaceSchema(vs.Keyspace, ts.sourceKeyspace, wr.env.Parser()) if err != nil { return nil, err } @@ -1833,7 +1833,7 @@ func (ts *trafficSwitcher) dropParticipatingTablesFromKeyspace(ctx context.Conte for _, tableName := range ts.Tables() { delete(vschema.Tables, tableName) } - return ts.TopoServer().SaveVSchema(ctx, keyspace, vschema) + return ts.TopoServer().SaveVSchema(ctx, vschema) } // FIXME: even after dropSourceShards there are still entries in the topo, need to research and fix @@ -1995,7 +1995,7 @@ func (ts *trafficSwitcher) addParticipatingTablesToKeyspace(ctx context.Context, vschema.Tables[table] = &vschemapb.Table{} } } - return ts.TopoServer().SaveVSchema(ctx, keyspace, vschema) + return ts.TopoServer().SaveVSchema(ctx, vschema) } func (ts *trafficSwitcher) isSequenceParticipating(ctx context.Context) (bool, error) { @@ -2034,7 +2034,7 @@ func (ts *trafficSwitcher) getTargetSequenceMetadata(ctx context.Context) (map[s return nil, nil } - sequencesByBackingTable, backingTablesFound, err := ts.findSequenceUsageInKeyspace(vschema) + sequencesByBackingTable, backingTablesFound, err := ts.findSequenceUsageInKeyspace(vschema.Keyspace) if err != nil { return nil, err } diff --git a/go/vt/wrangler/traffic_switcher_env_test.go b/go/vt/wrangler/traffic_switcher_env_test.go index a99e6ba2c43..0c7f705bb2d 100644 --- a/go/vt/wrangler/traffic_switcher_env_test.go +++ b/go/vt/wrangler/traffic_switcher_env_test.go @@ -206,12 +206,18 @@ func newTestTableMigraterCustom(ctx context.Context, t *testing.T, sourceShards, } tme.setPrimarySchemas(schema) if len(sourceShards) != 1 { - if err := tme.ts.SaveVSchema(ctx, "ks1", vs); err != nil { + if err := tme.ts.SaveVSchema(ctx, &topo.KeyspaceVSchemaInfo{ + Name: "ks1", + Keyspace: vs, + }); err != nil { t.Fatal(err) } } if len(targetShards) != 1 { - if err := tme.ts.SaveVSchema(ctx, "ks2", vs); err != nil { + if err := tme.ts.SaveVSchema(ctx, &topo.KeyspaceVSchemaInfo{ + Name: "ks2", + Keyspace: vs, + }); err != nil { t.Fatal(err) } } @@ -232,7 +238,10 @@ func newTestTableMigraterCustom(ctx context.Context, t *testing.T, sourceShards, tabletID += 10 gfdb := fakesqldb.New(t) tme.additionalPrimaries = append(tme.additionalPrimaries, newFakeTablet(t, tme.wr, "cell1", uint32(tabletID), topodatapb.TabletType_PRIMARY, gfdb, TabletKeyspaceShard(t, "global", "0"))) - if err := tme.ts.SaveVSchema(ctx, "global", uvs); err != nil { + if err := tme.ts.SaveVSchema(ctx, &topo.KeyspaceVSchemaInfo{ + Name: "global", + Keyspace: uvs, + }); err != nil { t.Fatal(err) } @@ -246,7 +255,10 @@ func newTestTableMigraterCustom(ctx context.Context, t *testing.T, sourceShards, Column: "id", Sequence: "t2_seq", } - if err := tme.ts.SaveVSchema(ctx, "ks2", tks); err != nil { + if err := tme.ts.SaveVSchema(ctx, &topo.KeyspaceVSchemaInfo{ + Name: "ks2", + Keyspace: tks, + }); err != nil { t.Fatal(err) } @@ -459,9 +471,15 @@ func newTestTablePartialMigrater(ctx context.Context, t *testing.T, shards, shar }, }, } - err := tme.ts.SaveVSchema(ctx, "ks1", vs) + err := tme.ts.SaveVSchema(ctx, &topo.KeyspaceVSchemaInfo{ + Name: "ks1", + Keyspace: vs, + }) require.NoError(t, err) - err = tme.ts.SaveVSchema(ctx, "ks2", vs) + err = tme.ts.SaveVSchema(ctx, &topo.KeyspaceVSchemaInfo{ + Name: "ks2", + Keyspace: vs, + }) require.NoError(t, err) err = tme.ts.RebuildSrvVSchema(ctx, nil) require.NoError(t, err) @@ -630,7 +648,10 @@ func newTestShardMigrater(ctx context.Context, t *testing.T, sourceShards, targe }, }, } - if err := tme.ts.SaveVSchema(ctx, "ks", vs); err != nil { + if err := tme.ts.SaveVSchema(ctx, &topo.KeyspaceVSchemaInfo{ + Name: "ks", + Keyspace: vs, + }); err != nil { t.Fatal(err) } if err := tme.ts.RebuildSrvVSchema(ctx, nil); err != nil { diff --git a/go/vt/wrangler/traffic_switcher_test.go b/go/vt/wrangler/traffic_switcher_test.go index 5bc336f634e..4ee965ef96b 100644 --- a/go/vt/wrangler/traffic_switcher_test.go +++ b/go/vt/wrangler/traffic_switcher_test.go @@ -2170,8 +2170,11 @@ func TestNoOrphanedRoutingRulesOnFailedCreate(t *testing.T) { // fail. Let's also be sure that the routing rules are empty. err := topotools.SaveRoutingRules(ctx, tme.wr.ts, nil) require.NoError(t, err, "failed to save routing rules") - err = tme.ts.SaveVSchema(ctx, "ks2", &vschemapb.Keyspace{ - Sharded: true, + err = tme.ts.SaveVSchema(ctx, &topo.KeyspaceVSchemaInfo{ + Name: "ks2", + Keyspace: &vschemapb.Keyspace{ + Sharded: true, + }, }) require.NoError(t, err, "failed to save vschema") err = tme.ts.RebuildSrvVSchema(ctx, nil) diff --git a/go/vt/wrangler/vdiff.go b/go/vt/wrangler/vdiff.go index 2e9fc5f508d..9991b5bd633 100644 --- a/go/vt/wrangler/vdiff.go +++ b/go/vt/wrangler/vdiff.go @@ -542,7 +542,7 @@ func findPKs(env *vtenv.Environment, table *tabletmanagerdatapb.TableDefinition, // column in the table definition leveraging MySQL's collation inheritance // rules. func getColumnCollations(venv *vtenv.Environment, table *tabletmanagerdatapb.TableDefinition) (map[string]collations.ID, map[string]*evalengine.EnumSetValues, error) { - createstmt, err := venv.Parser().Parse(table.Schema) + createstmt, err := venv.Parser().ParseStrictDDL(table.Schema) if err != nil { return nil, nil, err } diff --git a/go/vt/wrangler/vdiff_test.go b/go/vt/wrangler/vdiff_test.go index 3ac6edb373c..44c3a22a336 100644 --- a/go/vt/wrangler/vdiff_test.go +++ b/go/vt/wrangler/vdiff_test.go @@ -1311,6 +1311,13 @@ func TestGetColumnCollations(t *testing.T) { "size": {"'small'", "'medium'", "'large'"}, }, }, + { + name: "invalid schema", + table: &tabletmanagerdatapb.TableDefinition{ + Schema: "create table t1 (c1 varchar(10), size set('small', 'medium', 'large'), primary key(c1) with syntax error)", + }, + wantErr: true, + }, } env := vtenv.NewTestEnv() for _, tt := range tests { diff --git a/java/example/src/main/java/io/vitess/example/MysqlJDBCExample.java b/java/example/src/main/java/io/vitess/example/MysqlJDBCExample.java index 05513eaa2bd..85717fb20f0 100644 --- a/java/example/src/main/java/io/vitess/example/MysqlJDBCExample.java +++ b/java/example/src/main/java/io/vitess/example/MysqlJDBCExample.java @@ -109,7 +109,7 @@ private static void readData(Connection conn) throws SQLException { } private static void validateReplica(Connection conn) throws SQLException { - String sql = "show slave status"; + String sql = "show replica status"; try (Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery(sql)) { if (!rs.next()) { throw new RuntimeException("connected to wrong tablet"); diff --git a/proto/replicationdata.proto b/proto/replicationdata.proto index e788fc64bc3..eba4d323ee6 100644 --- a/proto/replicationdata.proto +++ b/proto/replicationdata.proto @@ -105,4 +105,5 @@ message FullStatus { uint32 semi_sync_wait_for_replica_count = 20; bool super_read_only = 21; replicationdata.Configuration replication_configuration = 22; + bool disk_stalled = 23; } diff --git a/proto/vtadmin.proto b/proto/vtadmin.proto index 963d1fa5779..1485cb485c2 100644 --- a/proto/vtadmin.proto +++ b/proto/vtadmin.proto @@ -225,6 +225,9 @@ service VTAdmin { // VTExplain provides information on how Vitess plans to execute a // particular query. rpc VTExplain(VTExplainRequest) returns (VTExplainResponse) {}; + // VExplain provides information on how Vitess plans to execute a + // particular query. + rpc VExplain(VExplainRequest) returns (VExplainResponse) {}; // WorkflowDelete deletes a vreplication workflow. rpc WorkflowDelete(WorkflowDeleteRequest) returns (vtctldata.WorkflowDeleteResponse) {}; // WorkflowSwitchTraffic switches traffic for a VReplication workflow. @@ -1097,3 +1100,13 @@ message VTExplainRequest { message VTExplainResponse { string response = 1; } + +message VExplainRequest { + string cluster_id = 1; + string keyspace = 2; + string sql = 3; +} + +message VExplainResponse { + string response = 1; +} diff --git a/test/templates/unit_test.tpl b/test/templates/unit_test.tpl index 10c3b8c0c6a..be71af987ed 100644 --- a/test/templates/unit_test.tpl +++ b/test/templates/unit_test.tpl @@ -143,8 +143,8 @@ jobs: sudo apparmor_parser -R /etc/apparmor.d/usr.sbin.mysqld || echo "could not remove mysqld profile" mkdir -p dist bin - curl -s -L https://github.com/coreos/etcd/releases/download/v3.3.10/etcd-v3.3.10-linux-amd64.tar.gz | tar -zxC dist - mv dist/etcd-v3.3.10-linux-amd64/{etcd,etcdctl} bin/ + curl -s -L https://github.com/coreos/etcd/releases/download/v3.5.17/etcd-v3.5.17-linux-amd64.tar.gz | tar -zxC dist + mv dist/etcd-v3.5.17-linux-amd64/{etcd,etcdctl} bin/ go mod download go install golang.org/x/tools/cmd/goimports@latest diff --git a/web/vtadmin/README.md b/web/vtadmin/README.md index d6bcd67d277..629fe116711 100644 --- a/web/vtadmin/README.md +++ b/web/vtadmin/README.md @@ -2,8 +2,8 @@ ## Prerequisites -- [node](https://nodejs.org) >= 20.12.0 LTS -- npm >= 10.5.0 (comes with node) +- [node](https://nodejs.org) >= 22.13.1 LTS +- npm >= 10.9.2 (comes with node) ## Available scripts diff --git a/web/vtadmin/build.sh b/web/vtadmin/build.sh index b8481ccdc0e..d253233492f 100755 --- a/web/vtadmin/build.sh +++ b/web/vtadmin/build.sh @@ -40,7 +40,7 @@ if [[ -z ${NVM_DIR} ]]; then fi if [[ -z ${NODE_VERSION} ]]; then - export NODE_VERSION="20.12.2" + export NODE_VERSION="22.13.1" fi output "\nInstalling nvm...\n" diff --git a/web/vtadmin/package-lock.json b/web/vtadmin/package-lock.json index 5439928837c..a6ef94d4da2 100644 --- a/web/vtadmin/package-lock.json +++ b/web/vtadmin/package-lock.json @@ -18,7 +18,6 @@ "d3": "^7.9.0", "dayjs": "^1.11.7", "downshift": "^7.2.0", - "highcharts-react-official": "^3.1.0", "history": "^5.3.0", "lodash-es": "^4.17.21", "path-to-regexp": "^8.1.0", @@ -38,7 +37,7 @@ "web-vitals": "^3.1.1" }, "devDependencies": { - "@rollup/plugin-commonjs": "^24.0.1", + "@rollup/plugin-commonjs": "^28.0.2", "@testing-library/jest-dom": "^5.11.9", "@testing-library/react": "^11.2.5", "@testing-library/react-hooks": "^5.0.3", @@ -54,37 +53,39 @@ "i": "^0.3.7", "jsdom": "^21.1.1", "msw": "^2.5.2", - "npm": "^10.8.0", + "npm": "^10.9.2", "postcss": "^8.4.31", "prettier": "^2.2.1", - "protobufjs-cli": "^1.1.1", + "protobufjs-cli": "^1.1.3", "serve": "^14.2.0", "stylelint": "^14.4.0", "stylelint-config-prettier": "^9.0.3", "stylelint-config-standard-scss": "^3.0.0", "tailwindcss": "^3.0.18", "typescript": "^5.0.2", - "vite": "^4.5.3", + "vite": "^4.5.6", "vite-plugin-eslint": "^1.8.1", "vite-plugin-svgr": "^2.4.0", "vitest": "^0.29.8" }, "engines": { - "node": ">=20.12.0", - "npm": ">=10.5.0" + "node": ">=22.13.0", + "npm": ">=10.9.2" } }, "node_modules/@adobe/css-tools": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.3.3.tgz", - "integrity": "sha512-rE0Pygv0sEZ4vBWHlAgJLGDU7Pm8xoO6p3wsEceb7GYAjScrOHpEo8KK/eVkAcnSM+slAEtXjA2JpdjLp4fJQQ==", - "dev": true + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.4.1.tgz", + "integrity": "sha512-12WGKBQzjUAI4ayyF4IAtfw2QR/IDoqk6jTddXDhtYTJF9ASmoE1zst7cVtP0aL/F1jUJL5r+JxKXKEgHNbEUQ==", + "dev": true, + "license": "MIT" }, "node_modules/@alloc/quick-lru": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, @@ -97,6 +98,7 @@ "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.24" @@ -106,11 +108,13 @@ } }, "node_modules/@babel/code-frame": { - "version": "7.24.2", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.2.tgz", - "integrity": "sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==", + "version": "7.26.2", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz", + "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==", + "license": "MIT", "dependencies": { - "@babel/highlight": "^7.24.2", + "@babel/helper-validator-identifier": "^7.25.9", + "js-tokens": "^4.0.0", "picocolors": "^1.0.0" }, "engines": { @@ -118,30 +122,32 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.24.4", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.24.4.tgz", - "integrity": "sha512-vg8Gih2MLK+kOkHJp4gBEIkyaIi00jgWot2D9QOmmfLC8jINSOzmCLta6Bvz/JSBCqnegV0L80jhxkol5GWNfQ==", + "version": "7.26.5", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.5.tgz", + "integrity": "sha512-XvcZi1KWf88RVbF9wn8MN6tYFloU5qX8KjuF3E1PVBmJ9eypXfs4GRiJwLuTZL0iSnJUKn1BFPa5BPZZJyFzPg==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.24.5", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.5.tgz", - "integrity": "sha512-tVQRucExLQ02Boi4vdPp49svNGcfL2GhdTCT9aldhXgCJVAI21EtRfBettiuLUwce/7r6bFdgs6JFkcdTiFttA==", + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.0.tgz", + "integrity": "sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg==", "dev": true, + "license": "MIT", "dependencies": { "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.24.2", - "@babel/generator": "^7.24.5", - "@babel/helper-compilation-targets": "^7.23.6", - "@babel/helper-module-transforms": "^7.24.5", - "@babel/helpers": "^7.24.5", - "@babel/parser": "^7.24.5", - "@babel/template": "^7.24.0", - "@babel/traverse": "^7.24.5", - "@babel/types": "^7.24.5", + "@babel/code-frame": "^7.26.0", + "@babel/generator": "^7.26.0", + "@babel/helper-compilation-targets": "^7.25.9", + "@babel/helper-module-transforms": "^7.26.0", + "@babel/helpers": "^7.26.0", + "@babel/parser": "^7.26.0", + "@babel/template": "^7.25.9", + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.26.0", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -157,10 +163,11 @@ } }, "node_modules/@babel/eslint-parser": { - "version": "7.24.5", - "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.24.5.tgz", - "integrity": "sha512-gsUcqS/fPlgAw1kOtpss7uhY6E9SFFANQ6EFX5GTvzUwaV0+sGaZWk6xq22MOdeT9wfxyokW3ceCUvOiRtZciQ==", + "version": "7.26.5", + "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.26.5.tgz", + "integrity": "sha512-Kkm8C8uxI842AwQADxl0GbcG1rupELYLShazYEZO/2DYjhyWXJIOUVOE3tBYm6JXzUCNJOZEzqc4rCW/jsEQYQ==", "dev": true, + "license": "MIT", "dependencies": { "@nicolo-ribaudo/eslint-scope-5-internals": "5.1.1-v1", "eslint-visitor-keys": "^2.1.0", @@ -179,58 +186,51 @@ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", "dev": true, + "license": "Apache-2.0", "engines": { "node": ">=10" } }, "node_modules/@babel/generator": { - "version": "7.24.5", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.5.tgz", - "integrity": "sha512-x32i4hEXvr+iI0NEoEfDKzlemF8AmtOP8CcrRaEcpzysWuoEb1KknpcvMsHKPONoKZiDuItklgWhB18xEhr9PA==", + "version": "7.26.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.5.tgz", + "integrity": "sha512-2caSP6fN9I7HOe6nqhtft7V4g7/V/gfDsC3Ag4W7kEzzvRGKqiv0pu0HogPiZ3KaVSoNDhUws6IJjDjpfmYIXw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/types": "^7.24.5", + "@babel/parser": "^7.26.5", + "@babel/types": "^7.26.5", "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.25", - "jsesc": "^2.5.1" + "jsesc": "^3.0.2" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-annotate-as-pure": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz", - "integrity": "sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==", - "dev": true, - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.15.tgz", - "integrity": "sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.25.9.tgz", + "integrity": "sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/types": "^7.22.15" + "@babel/types": "^7.25.9" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz", - "integrity": "sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==", + "version": "7.26.5", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.26.5.tgz", + "integrity": "sha512-IXuyn5EkouFJscIDuFF5EsiSolseme1s0CZB+QxVugqJLYmKdxI1VfIBOst0SUu4rnk2Z7kqTwmoO1lp3HIfnA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.23.5", - "@babel/helper-validator-option": "^7.23.5", - "browserslist": "^4.22.2", + "@babel/compat-data": "^7.26.5", + "@babel/helper-validator-option": "^7.25.9", + "browserslist": "^4.24.0", "lru-cache": "^5.1.1", "semver": "^6.3.1" }, @@ -239,19 +239,18 @@ } }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.24.5", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.24.5.tgz", - "integrity": "sha512-uRc4Cv8UQWnE4NXlYTIIdM7wfFkOqlFztcC/gVXDKohKoVB3OyonfelUBaJzSwpBntZ2KYGF/9S7asCHsXwW6g==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-member-expression-to-functions": "^7.24.5", - "@babel/helper-optimise-call-expression": "^7.22.5", - "@babel/helper-replace-supers": "^7.24.1", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.24.5", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.25.9.tgz", + "integrity": "sha512-UTZQMvt0d/rSz6KI+qdu7GQze5TIajwTS++GUozlw8VBJDEOAqSXwm1WvmYEZwqdqSGQshRocPDqrt4HBZB3fQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.25.9", + "@babel/helper-member-expression-to-functions": "^7.25.9", + "@babel/helper-optimise-call-expression": "^7.25.9", + "@babel/helper-replace-supers": "^7.25.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9", + "@babel/traverse": "^7.25.9", "semver": "^6.3.1" }, "engines": { @@ -262,13 +261,14 @@ } }, "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz", - "integrity": "sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==", + "version": "7.26.3", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.26.3.tgz", + "integrity": "sha512-G7ZRb40uUgdKOQqPLjfD12ZmGA54PzqDFUv2BKImnC9QIfGhIHKvVML0oN8IUiDq4iRqpq74ABpvOaerfWdong==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "regexpu-core": "^5.3.1", + "@babel/helper-annotate-as-pure": "^7.25.9", + "regexpu-core": "^6.2.0", "semver": "^6.3.1" }, "engines": { @@ -279,10 +279,11 @@ } }, "node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.2.tgz", - "integrity": "sha512-LV76g+C502biUK6AyZ3LK10vDpDyCzZnhZFXkH1L75zHPj68+qc8Zfpx2th+gzwA2MzyK+1g/3EPl62yFnVttQ==", + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.3.tgz", + "integrity": "sha512-HK7Bi+Hj6H+VTHA3ZvBis7V/6hu9QuTrnMXNybfUf2iiuU/N97I8VjB+KbhFF8Rld/Lx5MzoCwPCpPjfK+n8Cg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-compilation-targets": "^7.22.6", "@babel/helper-plugin-utils": "^7.22.5", @@ -294,75 +295,44 @@ "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, - "node_modules/@babel/helper-environment-visitor": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", - "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-function-name": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", - "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", - "dev": true, - "dependencies": { - "@babel/template": "^7.22.15", - "@babel/types": "^7.23.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-hoist-variables": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", - "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", - "dev": true, - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.24.5", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.24.5.tgz", - "integrity": "sha512-4owRteeihKWKamtqg4JmWSsEZU445xpFRXPEwp44HbgbxdWlUV1b4Agg4lkA806Lil5XM/e+FJyS0vj5T6vmcA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.25.9.tgz", + "integrity": "sha512-wbfdZ9w5vk0C0oyHqAJbc62+vet5prjj01jjJ8sKn3j9h3MQQlflEdXYvuqRWjHnM12coDEqiC1IRCi0U/EKwQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/types": "^7.24.5" + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-imports": { - "version": "7.24.3", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.3.tgz", - "integrity": "sha512-viKb0F9f2s0BCS22QSF308z/+1YWKV/76mwt61NBzS5izMzDPwdq1pTrzf+Li3npBWX9KdQbkeCt1jSAM7lZqg==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz", + "integrity": "sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/types": "^7.24.0" + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.24.5", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.24.5.tgz", - "integrity": "sha512-9GxeY8c2d2mdQUP1Dye0ks3VDyIMS98kt/llQ2nUId8IsWqTF0l1LkSX0/uP7l7MCDrzXS009Hyhe2gzTiGW8A==", + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz", + "integrity": "sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-module-imports": "^7.24.3", - "@babel/helper-simple-access": "^7.24.5", - "@babel/helper-split-export-declaration": "^7.24.5", - "@babel/helper-validator-identifier": "^7.24.5" + "@babel/helper-module-imports": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9", + "@babel/traverse": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -372,35 +342,38 @@ } }, "node_modules/@babel/helper-optimise-call-expression": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz", - "integrity": "sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.25.9.tgz", + "integrity": "sha512-FIpuNaz5ow8VyrYcnXQTDRGvV6tTjkNtCK/RYNDXGSLlUD6cBuQTSw43CShGxjvfBTfcUA/r6UhUCbtYqkhcuQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/types": "^7.22.5" + "@babel/types": "^7.25.9" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.24.5", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.5.tgz", - "integrity": "sha512-xjNLDopRzW2o6ba0gKbkZq5YWEBaK3PCyTOY1K2P/O07LGMhMqlMXPxwN4S5/RhWuCobT8z0jrlKGlYmeR1OhQ==", + "version": "7.26.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.26.5.tgz", + "integrity": "sha512-RS+jZcRdZdRFzMyr+wcsaqOmld1/EqTghfaBGQQd/WnRdzdlvSZ//kF7U8VQTxf1ynZ4cjUcYgjVGx13ewNPMg==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-remap-async-to-generator": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz", - "integrity": "sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.25.9.tgz", + "integrity": "sha512-IZtukuUeBbhgOcaW2s06OXTzVNJR0ybm4W5xC1opWFFJMZbwRj5LCk+ByYH7WdZPZTt8KnFwA8pvjN2yqcPlgw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-wrap-function": "^7.22.20" + "@babel/helper-annotate-as-pure": "^7.25.9", + "@babel/helper-wrap-function": "^7.25.9", + "@babel/traverse": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -410,14 +383,15 @@ } }, "node_modules/@babel/helper-replace-supers": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.24.1.tgz", - "integrity": "sha512-QCR1UqC9BzG5vZl8BMicmZ28RuUBnHhAMddD8yHFHDRH9lLTZ9uUPehX8ctVPT8l0TKblJidqcgUUKGVrePleQ==", + "version": "7.26.5", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.26.5.tgz", + "integrity": "sha512-bJ6iIVdYX1YooY2X7w1q6VITt+LnUILtNk7zT78ykuwStx8BauCzxvFqFaHjOpW1bVnSUM1PN1f0p5P21wHxvg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-member-expression-to-functions": "^7.23.0", - "@babel/helper-optimise-call-expression": "^7.22.5" + "@babel/helper-member-expression-to-functions": "^7.25.9", + "@babel/helper-optimise-call-expression": "^7.25.9", + "@babel/traverse": "^7.26.5" }, "engines": { "node": ">=6.9.0" @@ -426,194 +400,119 @@ "@babel/core": "^7.0.0" } }, - "node_modules/@babel/helper-simple-access": { - "version": "7.24.5", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.5.tgz", - "integrity": "sha512-uH3Hmf5q5n7n8mz7arjUlDOCbttY/DW4DYhE6FUsjKJ/oYC1kQQUvwEQWxRwUpX9qQKRXeqLwWxrqilMrf32sQ==", - "dev": true, - "dependencies": { - "@babel/types": "^7.24.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz", - "integrity": "sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==", - "dev": true, - "dependencies": { - "@babel/types": "^7.22.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-split-export-declaration": { - "version": "7.24.5", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.5.tgz", - "integrity": "sha512-5CHncttXohrHk8GWOFCcCl4oRD9fKosWlIRgWm4ql9VYioKm52Mk2xsmoohvm7f3JoiLSM5ZgJuRaf5QZZYd3Q==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.25.9.tgz", + "integrity": "sha512-K4Du3BFa3gvyhzgPcntrkDgZzQaq6uozzcpGbOO1OEJaI+EJdqWIMTLgFgQf6lrfiDFo5FU+BxKepI9RmZqahA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/types": "^7.24.5" + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-string-parser": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.1.tgz", - "integrity": "sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz", + "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.24.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.5.tgz", - "integrity": "sha512-3q93SSKX2TWCG30M2G2kwaKeTYgEUp5Snjuj8qm729SObL6nbtUldAi37qbxkD5gg3xnBio+f9nqpSepGZMvxA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", + "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-option": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz", - "integrity": "sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz", + "integrity": "sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-wrap-function": { - "version": "7.24.5", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.24.5.tgz", - "integrity": "sha512-/xxzuNvgRl4/HLNKvnFwdhdgN3cpLxgLROeLDl83Yx0AJ1SGvq1ak0OszTOjDfiB8Vx03eJbeDWh9r+jCCWttw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.25.9.tgz", + "integrity": "sha512-ETzz9UTjQSTmw39GboatdymDq4XIQbR8ySgVrylRhPOFpsd+JrKHIuF0de7GCWmem+T4uC5z7EZguod7Wj4A4g==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-function-name": "^7.23.0", - "@babel/template": "^7.24.0", - "@babel/types": "^7.24.5" + "@babel/template": "^7.25.9", + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { - "version": "7.24.5", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.5.tgz", - "integrity": "sha512-CiQmBMMpMQHwM5m01YnrM6imUG1ebgYJ+fAIW4FZe6m4qHTPaRHti+R8cggAwkdz4oXhtO4/K9JWlh+8hIfR2Q==", + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.26.0.tgz", + "integrity": "sha512-tbhNuIxNcVb21pInl3ZSjksLCvgdZy9KwJ8brv993QtIVKJBBkYXz4q4ZbAv31GdnC+R90np23L5FbEBlthAEw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/template": "^7.24.0", - "@babel/traverse": "^7.24.5", - "@babel/types": "^7.24.5" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight": { - "version": "7.24.5", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.5.tgz", - "integrity": "sha512-8lLmua6AVh/8SLJRRVD6V8p73Hir9w5mJrhE+IPpILG31KKlI9iz5zmBYKcWPS59qSfgP9RaSBQSHHE81WKuEw==", - "dependencies": { - "@babel/helper-validator-identifier": "^7.24.5", - "chalk": "^2.4.2", - "js-tokens": "^4.0.0", - "picocolors": "^1.0.0" + "@babel/template": "^7.25.9", + "@babel/types": "^7.26.0" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/highlight/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "node_modules/@babel/parser": { + "version": "7.26.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.5.tgz", + "integrity": "sha512-SRJ4jYmXRqV1/Xc+TIVG84WjHBXKlxO9sHQnA2Pf12QQEAp1LOh6kDzNHXcUnbH1QI0FDoPPVOt+vyUDucxpaw==", + "dev": true, + "license": "MIT", "dependencies": { - "color-convert": "^1.9.0" + "@babel/types": "^7.26.5" }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "bin": { + "parser": "bin/babel-parser.js" }, "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/@babel/highlight/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" - }, - "node_modules/@babel/highlight/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/@babel/highlight/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "engines": { - "node": ">=4" + "node": ">=6.0.0" } }, - "node_modules/@babel/highlight/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.25.9.tgz", + "integrity": "sha512-ZkRyVkThtxQ/J6nv3JFYv1RYY+JT5BvU0y3k5bWrmuG4woXypRa4PXmm9RhOwodRkYFWqC0C0cqcJ4OqR7kW+g==", + "dev": true, + "license": "MIT", "dependencies": { - "has-flag": "^3.0.0" + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/traverse": "^7.25.9" }, "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/parser": { - "version": "7.24.5", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.5.tgz", - "integrity": "sha512-EOv5IK8arwh3LI47dz1b0tKUb/1uhHAnHJOrjgtQMIpu1uXd9mlFrJg9IUgGUgZ41Ch0K8REPTYpO7B76b4vJg==", - "dev": true, - "bin": { - "parser": "bin/babel-parser.js" + "node": ">=6.9.0" }, - "engines": { - "node": ">=6.0.0" + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": { - "version": "7.24.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.24.5.tgz", - "integrity": "sha512-LdXRi1wEMTrHVR4Zc9F8OewC3vdm5h4QB6L71zy6StmYeqGi1b3ttIO8UC+BfZKcH9jdr4aI249rBkm+3+YvHw==", + "node_modules/@babel/plugin-bugfix-safari-class-field-initializer-scope": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.25.9.tgz", + "integrity": "sha512-MrGRLZxLD/Zjj0gdU15dfs+HH/OXvnw/U4jJD8vpcP2CJQapPEv1IWwjc/qMg7ItBlPwSv1hRBbb7LeuANdcnw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-plugin-utils": "^7.24.5" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -623,12 +522,13 @@ } }, "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.24.1.tgz", - "integrity": "sha512-y4HqEnkelJIOQGd+3g1bTeKsA5c6qM7eOn7VggGVbBc0y8MLSKHacwcIE2PplNlQSj0PqS9rrXL/nkPVK+kUNg==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.25.9.tgz", + "integrity": "sha512-2qUwwfAFpJLZqxd02YW9btUCZHl+RFvdDkNfZwaIJrvB8Tesjsk8pEQkTvGwZXLqXUx/2oyY3ySRhm6HOXuCug==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -638,14 +538,15 @@ } }, "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.24.1.tgz", - "integrity": "sha512-Hj791Ii4ci8HqnaKHAlLNs+zaLXb0EzSDhiAWp5VNlyvCNymYfacs64pxTxbH1znW/NcArSmwpmG9IKE/TUVVQ==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.25.9.tgz", + "integrity": "sha512-6xWgLZTJXwilVjlnV7ospI3xi+sl8lN8rXXbBD6vYn3UYDlGsag8wrZkKcSI8G6KgqKP7vNFaDgeDnfAABq61g==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", - "@babel/plugin-transform-optional-chaining": "^7.24.1" + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9", + "@babel/plugin-transform-optional-chaining": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -655,13 +556,14 @@ } }, "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.24.1.tgz", - "integrity": "sha512-m9m/fXsXLiHfwdgydIFnpk+7jlVbnvlK5B2EKiPdLUb6WX654ZaaEWJUjk8TftRbZpK0XibovlLWX4KIZhV6jw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.25.9.tgz", + "integrity": "sha512-aLnMXYPnzwwqhYSCyXfKkIkYgJ8zv9RK+roo9DkTXz38ynIhd9XCbN08s3MGvqL2MYGVUGdRQLL/JqBIeJhJBg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/traverse": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -676,6 +578,7 @@ "integrity": "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==", "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-class-properties instead.", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-create-class-features-plugin": "^7.18.6", "@babel/helper-plugin-utils": "^7.18.6" @@ -688,14 +591,15 @@ } }, "node_modules/@babel/plugin-proposal-decorators": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.24.1.tgz", - "integrity": "sha512-zPEvzFijn+hRvJuX2Vu3KbEBN39LN3f7tW3MQO2LsIs57B26KU+kUc82BdAktS1VCM6libzh45eKGI65lg0cpA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.25.9.tgz", + "integrity": "sha512-smkNLL/O1ezy9Nhy4CNosc4Va+1wo5w4gzSZeLe6y6dM4mmHfYOCPolXQPHQxonZCF+ZyebxN9vqOolkYrSn5g==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.24.1", - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/plugin-syntax-decorators": "^7.24.1" + "@babel/helper-create-class-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/plugin-syntax-decorators": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -710,6 +614,7 @@ "integrity": "sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==", "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-nullish-coalescing-operator instead.", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.18.6", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" @@ -727,6 +632,7 @@ "integrity": "sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==", "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-numeric-separator instead.", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.18.6", "@babel/plugin-syntax-numeric-separator": "^7.10.4" @@ -744,6 +650,7 @@ "integrity": "sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==", "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-optional-chaining instead.", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.20.2", "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0", @@ -762,6 +669,7 @@ "integrity": "sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==", "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-private-methods instead.", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-create-class-features-plugin": "^7.18.6", "@babel/helper-plugin-utils": "^7.18.6" @@ -778,45 +686,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", "dev": true, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-async-generators": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", - "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-class-static-block": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", - "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, + "license": "MIT", "engines": { "node": ">=6.9.0" }, @@ -825,12 +695,13 @@ } }, "node_modules/@babel/plugin-syntax-decorators": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.24.1.tgz", - "integrity": "sha512-05RJdO/cCrtVWuAaSn1tS3bH8jbsJa/Y1uD186u6J4C/1mnHFxseeuWpsqr9anvo7TUulev7tm7GDwRV+VuhDw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.25.9.tgz", + "integrity": "sha512-ryzI0McXUPJnRCvMo4lumIKZUzhYUO/ScI+Mz4YVaTLt04DHNSjEUjKVvbzQjZFLuod/cYEc07mJWhzl6v4DPg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -839,37 +710,14 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-dynamic-import": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", - "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-export-namespace-from": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", - "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.3" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, "node_modules/@babel/plugin-syntax-flow": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.24.1.tgz", - "integrity": "sha512-sxi2kLTI5DeW5vDtMUsk4mTPwvlUDbjOnoWayhynCwrw4QXRld4QEYwqzY8JmQXaJUtgUuCIurtSRH5sn4c7mA==", + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.26.0.tgz", + "integrity": "sha512-B+O2DnPc0iG+YXFqOxv2WNuNU97ToWjOomUQ78DouOENWUaM5sVrmet9mcomUGQFwpJd//gvUagXBSdzO1fRKg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -879,12 +727,13 @@ } }, "node_modules/@babel/plugin-syntax-import-assertions": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.24.1.tgz", - "integrity": "sha512-IuwnI5XnuF189t91XbxmXeCDz3qs6iDRO7GJ++wcfgeXNs/8FmIlKcpDSXNVyuLQxlwvskmI3Ct73wUODkJBlQ==", + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.26.0.tgz", + "integrity": "sha512-QCWT5Hh830hK5EQa7XzuqIkQU9tT/whqbDz7kuaZMHFl1inRRg7JnuAEOQ0Ur0QUl0NufCk1msK2BeY79Aj/eg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -894,12 +743,13 @@ } }, "node_modules/@babel/plugin-syntax-import-attributes": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.24.1.tgz", - "integrity": "sha512-zhQTMH0X2nVLnb04tz+s7AMuasX8U0FnpE+nHTOhSOINjWMnopoZTxtIKsd45n4GQ/HIZLyfIpoul8e2m0DnRA==", + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.26.0.tgz", + "integrity": "sha512-e2dttdsJ1ZTpi3B9UYGLw41hifAubg19AtCu/2I/F1QNVclOBr1dYpTdmdyZ84Xiz43BS/tCUkMAZNLv12Pi+A==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -908,37 +758,14 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-import-meta": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", - "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, "node_modules/@babel/plugin-syntax-jsx": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.1.tgz", - "integrity": "sha512-2eCtxZXf+kbkMIsXS4poTvT4Yu5rXiRa+9xGVT56raghjmBTKMpFNc9R4IDiB4emao9eO22Ox7CxuJG7BgExqA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.25.9.tgz", + "integrity": "sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -947,23 +774,12 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -976,6 +792,7 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, @@ -983,11 +800,12 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-object-rest-spread": { + "node_modules/@babel/plugin-syntax-optional-chaining": { "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -995,37 +813,47 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "node_modules/@babel/plugin-syntax-typescript": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.25.9.tgz", + "integrity": "sha512-hjMgRy5hb8uJJjUcdWunWVcoi9bGpJp8p5Ol1229PoN6aytsLwNMgmdftO23wnCLMfVmTwZDWMPNq/D1SY60JQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "node_modules/@babel/plugin-syntax-unicode-sets-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", + "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^7.0.0" } }, - "node_modules/@babel/plugin-syntax-private-property-in-object": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", - "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "node_modules/@babel/plugin-transform-arrow-functions": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.25.9.tgz", + "integrity": "sha512-6jmooXYIwn9ca5/RylZADJ+EnSxVUS5sjeJ9UPk6RWRzXCmOJCy6dqItPJFpw2cuCangPK4OYr5uhGKcmrm5Qg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1034,13 +862,16 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-top-level-await": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", - "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "node_modules/@babel/plugin-transform-async-generator-functions": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.25.9.tgz", + "integrity": "sha512-RXV6QAzTBbhDMO9fWwOmwwTuYaiPbggWQ9INdZqAYeSHyG7FzQ+nOZaUUjNwKv9pV3aE4WFqFm1Hnbci5tBCAw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-remap-async-to-generator": "^7.25.9", + "@babel/traverse": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1049,13 +880,16 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.24.1.tgz", - "integrity": "sha512-Yhnmvy5HZEnHUty6i++gcfH1/l68AHnItFHnaCv6hn9dNh0hQvvQJsxpi4BMBFN5DLeHBuucT/0DgzXif/OyRw==", + "node_modules/@babel/plugin-transform-async-to-generator": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.25.9.tgz", + "integrity": "sha512-NT7Ejn7Z/LjUH0Gv5KsBCxh7BH3fbLTV0ptHvpeMvrt3cPThHfJfst9Wrb7S8EvJ7vRTFI7z+VAvFVEQn/m5zQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-module-imports": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-remap-async-to-generator": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1064,47 +898,14 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-syntax-unicode-sets-regex": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", - "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", + "node_modules/@babel/plugin-transform-block-scoped-functions": { + "version": "7.26.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.26.5.tgz", + "integrity": "sha512-chuTSY+hq09+/f5lMj8ZSYgCFpppV2CbYrhNFJ1BFoXpiWPnnAb7R0MqrafCpN8E1+YRrtM1MXZHJdIx8B6rMQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/plugin-transform-arrow-functions": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.24.1.tgz", - "integrity": "sha512-ngT/3NkRhsaep9ck9uj2Xhv9+xB1zShY3tM3g6om4xxCELwCDN4g4Aq5dRn48+0hasAql7s2hdBOysCfNpr4fw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-async-generator-functions": { - "version": "7.24.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.24.3.tgz", - "integrity": "sha512-Qe26CMYVjpQxJ8zxM1340JFNjZaF+ISWpr1Kt/jGo+ZTUzKkfw/pphEWbRCb+lmSM6k/TOgfYLvmbHkUQ0asIg==", - "dev": true, - "dependencies": { - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/helper-remap-async-to-generator": "^7.22.20", - "@babel/plugin-syntax-async-generators": "^7.8.4" + "@babel/helper-plugin-utils": "^7.26.5" }, "engines": { "node": ">=6.9.0" @@ -1113,15 +914,14 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-async-to-generator": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.24.1.tgz", - "integrity": "sha512-AawPptitRXp1y0n4ilKcGbRYWfbbzFWz2NqNu7dacYDtFtz0CMjG64b3LQsb3KIgnf4/obcUL78hfaOS7iCUfw==", + "node_modules/@babel/plugin-transform-block-scoping": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.25.9.tgz", + "integrity": "sha512-1F05O7AYjymAtqbsFETboN1NvBdcnzMerO+zlMyJBEz6WkMdejvGWw9p05iTSjC85RLlBseHHQpYaM4gzJkBGg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-module-imports": "^7.24.1", - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/helper-remap-async-to-generator": "^7.22.20" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1130,13 +930,15 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-block-scoped-functions": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.24.1.tgz", - "integrity": "sha512-TWWC18OShZutrv9C6mye1xwtam+uNi2bnTOCBUd5sZxyHOiWbU6ztSROofIMrK84uweEZC219POICK/sTYwfgg==", + "node_modules/@babel/plugin-transform-class-properties": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.25.9.tgz", + "integrity": "sha512-bbMAII8GRSkcd0h0b4X+36GksxuheLFjP65ul9w6C3KgAamI3JqErNgSrosX6ZPj+Mpim5VvEbawXxJCyEUV3Q==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-create-class-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1145,29 +947,36 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.24.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.24.5.tgz", - "integrity": "sha512-sMfBc3OxghjC95BkYrYocHL3NaOplrcaunblzwXhGmlPwpmfsxr4vK+mBBt49r+S240vahmv+kUxkeKgs+haCw==", + "node_modules/@babel/plugin-transform-class-static-block": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.26.0.tgz", + "integrity": "sha512-6J2APTs7BDDm+UMqP1useWqhcRAXo0WIoVj26N7kPFB6S73Lgvyka4KTZYIxtgYXiN5HTyRObA72N2iu628iTQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.5" + "@babel/helper-create-class-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^7.12.0" } }, - "node_modules/@babel/plugin-transform-class-properties": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.24.1.tgz", - "integrity": "sha512-OMLCXi0NqvJfORTaPQBwqLXHhb93wkBKZ4aNwMl6WtehO7ar+cmp+89iPEQPqxAnxsOKTaMcs3POz3rKayJ72g==", + "node_modules/@babel/plugin-transform-classes": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.25.9.tgz", + "integrity": "sha512-mD8APIXmseE7oZvZgGABDyM34GUmK45Um2TXiBUt7PnuAxrgoSVf123qUzPxEr/+/BHrRn5NMZCdE2m/1F8DGg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.24.1", - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-annotate-as-pure": "^7.25.9", + "@babel/helper-compilation-targets": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-replace-supers": "^7.25.9", + "@babel/traverse": "^7.25.9", + "globals": "^11.1.0" }, "engines": { "node": ">=6.9.0" @@ -1176,37 +985,15 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-class-static-block": { - "version": "7.24.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.24.4.tgz", - "integrity": "sha512-B8q7Pz870Hz/q9UgP8InNpY01CSLDSCyqX7zcRuv3FcPl87A2G17lASroHWaCtbdIcbYzOZ7kWmXFKbijMSmFg==", + "node_modules/@babel/plugin-transform-computed-properties": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.25.9.tgz", + "integrity": "sha512-HnBegGqXZR12xbcTHlJ9HGxw1OniltT26J5YpfruGqtUHlz/xKf/G2ak9e+t0rVqrjXa9WOhvYPz1ERfMj23AA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.24.4", - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/plugin-syntax-class-static-block": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.12.0" - } - }, - "node_modules/@babel/plugin-transform-classes": { - "version": "7.24.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.24.5.tgz", - "integrity": "sha512-gWkLP25DFj2dwe9Ck8uwMOpko4YsqyfZJrOmqqcegeDYEbp7rmn4U6UQZNj08UF6MaX39XenSpKRCvpDRBtZ7Q==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-compilation-targets": "^7.23.6", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-plugin-utils": "^7.24.5", - "@babel/helper-replace-supers": "^7.24.1", - "@babel/helper-split-export-declaration": "^7.24.5", - "globals": "^11.1.0" + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/template": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1215,14 +1002,14 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-computed-properties": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.24.1.tgz", - "integrity": "sha512-5pJGVIUfJpOS+pAqBQd+QMaTD2vCL/HcePooON6pDpHgRp4gNRmzyHTPIkXntwKsq3ayUFVfJaIKPw2pOkOcTw==", + "node_modules/@babel/plugin-transform-destructuring": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.25.9.tgz", + "integrity": "sha512-WkCGb/3ZxXepmMiX101nnGiU+1CAdut8oHyEOHxkKuS1qKpU2SMXE2uSvfz8PBuLd49V6LEsbtyPhWC7fnkgvQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/template": "^7.24.0" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1231,13 +1018,15 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.24.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.5.tgz", - "integrity": "sha512-SZuuLyfxvsm+Ah57I/i1HVjveBENYK9ue8MJ7qkc7ndoNjqquJiElzA7f5yaAXjyW2hKojosOTAQQRX50bPSVg==", + "node_modules/@babel/plugin-transform-dotall-regex": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.25.9.tgz", + "integrity": "sha512-t7ZQ7g5trIgSRYhI9pIJtRl64KHotutUJsh4Eze5l7olJv+mRSg4/MmbZ0tv1eeqRbdvo/+trvJD/Oc5DmW2cA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.5" + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1246,14 +1035,14 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-dotall-regex": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.24.1.tgz", - "integrity": "sha512-p7uUxgSoZwZ2lPNMzUkqCts3xlp8n+o05ikjy7gbtFJSt9gdU88jAmtfmOxHM14noQXBxfgzf2yRWECiNVhTCw==", + "node_modules/@babel/plugin-transform-duplicate-keys": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.25.9.tgz", + "integrity": "sha512-LZxhJ6dvBb/f3x8xwWIuyiAHy56nrRG3PeYTpBkkzkYRRQ6tJLu68lEF5VIqMUZiAV7a8+Tb78nEoMCMcqjXBw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1262,29 +1051,31 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-transform-duplicate-keys": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.24.1.tgz", - "integrity": "sha512-msyzuUnvsjsaSaocV6L7ErfNsa5nDWL1XKNnDePLgmz+WdU4w/J8+AxBMrWfi9m4IxfL5sZQKUPQKDQeeAT6lA==", + "node_modules/@babel/plugin-transform-duplicate-named-capturing-groups-regex": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.25.9.tgz", + "integrity": "sha512-0UfuJS0EsXbRvKnwcLjFtJy/Sxc5J5jhLHnFhy7u4zih97Hz6tJkLU+O+FMMrNZrosUPxDi6sYxJ/EA8jDiAog==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/core": "^7.0.0" } }, "node_modules/@babel/plugin-transform-dynamic-import": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.24.1.tgz", - "integrity": "sha512-av2gdSTyXcJVdI+8aFZsCAtR29xJt0S5tas+Ef8NvBNmD1a+N/3ecMLeMBgfcK+xzsjdLDT6oHt+DFPyeqUbDA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.25.9.tgz", + "integrity": "sha512-GCggjexbmSLaFhqsojeugBpeaRIgWNTcgKVq/0qIteFEqY2A+b9QidYadrWlnbWQUrW5fn+mCvf3tr7OeBFTyg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/plugin-syntax-dynamic-import": "^7.8.3" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1294,13 +1085,13 @@ } }, "node_modules/@babel/plugin-transform-exponentiation-operator": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.24.1.tgz", - "integrity": "sha512-U1yX13dVBSwS23DEAqU+Z/PkwE9/m7QQy8Y9/+Tdb8UWYaGNDYwTLi19wqIAiROr8sXVum9A/rtiH5H0boUcTw==", + "version": "7.26.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.26.3.tgz", + "integrity": "sha512-7CAHcQ58z2chuXPWblnn1K6rLDnDWieghSOEmqQsrBenH0P9InCUtOJYD89pvngljmZlJcz3fcmgYsXFNGa1ZQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.22.15", - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1310,13 +1101,13 @@ } }, "node_modules/@babel/plugin-transform-export-namespace-from": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.24.1.tgz", - "integrity": "sha512-Ft38m/KFOyzKw2UaJFkWG9QnHPG/Q/2SkOrRk4pNBPg5IPZ+dOxcmkK5IyuBcxiNPyyYowPGUReyBvrvZs7IlQ==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.25.9.tgz", + "integrity": "sha512-2NsEz+CxzJIVOPx2o9UsW1rXLqtChtLoVnwYHHiB04wS5sgn7mrV45fWMBX0Kk+ub9uXytVYfNP2HjbVbCB3Ww==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1326,13 +1117,14 @@ } }, "node_modules/@babel/plugin-transform-flow-strip-types": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.24.1.tgz", - "integrity": "sha512-iIYPIWt3dUmUKKE10s3W+jsQ3icFkw0JyRVyY1B7G4yK/nngAOHLVx8xlhA6b/Jzl/Y0nis8gjqhqKtRDQqHWQ==", + "version": "7.26.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.26.5.tgz", + "integrity": "sha512-eGK26RsbIkYUns3Y8qKl362juDDYK+wEdPGHGrhzUl6CewZFo55VZ7hg+CyMFU4dd5QQakBN86nBMpRsFpRvbQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/plugin-syntax-flow": "^7.24.1" + "@babel/helper-plugin-utils": "^7.26.5", + "@babel/plugin-syntax-flow": "^7.26.0" }, "engines": { "node": ">=6.9.0" @@ -1342,13 +1134,14 @@ } }, "node_modules/@babel/plugin-transform-for-of": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.24.1.tgz", - "integrity": "sha512-OxBdcnF04bpdQdR3i4giHZNZQn7cm8RQKcSwA17wAAqEELo1ZOwp5FFgeptWUQXFyT9kwHo10aqqauYkRZPCAg==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.25.9.tgz", + "integrity": "sha512-LqHxduHoaGELJl2uhImHwRQudhCM50pT46rIBNvtT/Oql3nqiS3wOwP+5ten7NpYSXrrVLgtZU3DZmPtWZo16A==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1358,14 +1151,15 @@ } }, "node_modules/@babel/plugin-transform-function-name": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.24.1.tgz", - "integrity": "sha512-BXmDZpPlh7jwicKArQASrj8n22/w6iymRnvHYYd2zO30DbE277JO20/7yXJT3QxDPtiQiOxQBbZH4TpivNXIxA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.25.9.tgz", + "integrity": "sha512-8lP+Yxjv14Vc5MuWBpJsoUCd3hD6V9DgBon2FVYL4jJgbnVQ9fTgYmonchzZJOVNgzEgbxp4OwAf6xz6M/14XA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-compilation-targets": "^7.23.6", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-compilation-targets": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/traverse": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1375,13 +1169,13 @@ } }, "node_modules/@babel/plugin-transform-json-strings": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.24.1.tgz", - "integrity": "sha512-U7RMFmRvoasscrIFy5xA4gIp8iWnWubnKkKuUGJjsuOH7GfbMkB+XZzeslx2kLdEGdOJDamEmCqOks6e8nv8DQ==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.25.9.tgz", + "integrity": "sha512-xoTMk0WXceiiIvsaquQQUaLLXSW1KJ159KP87VilruQm0LNNGxWzahxSS6T6i4Zg3ezp4vA4zuwiNUR53qmQAw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/plugin-syntax-json-strings": "^7.8.3" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1391,12 +1185,13 @@ } }, "node_modules/@babel/plugin-transform-literals": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.24.1.tgz", - "integrity": "sha512-zn9pwz8U7nCqOYIiBaOxoQOtYmMODXTJnkxG4AtX8fPmnCRYWBOHD0qcpwS9e2VDSp1zNJYpdnFMIKb8jmwu6g==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.25.9.tgz", + "integrity": "sha512-9N7+2lFziW8W9pBl2TzaNht3+pgMIRP74zizeCSrtnSKVdUl8mAjjOP2OOVQAfZ881P2cNjDj1uAMEdeD50nuQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1406,13 +1201,13 @@ } }, "node_modules/@babel/plugin-transform-logical-assignment-operators": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.24.1.tgz", - "integrity": "sha512-OhN6J4Bpz+hIBqItTeWJujDOfNP+unqv/NJgyhlpSqgBTPm37KkMmZV6SYcOj+pnDbdcl1qRGV/ZiIjX9Iy34w==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.25.9.tgz", + "integrity": "sha512-wI4wRAzGko551Y8eVf6iOY9EouIDTtPb0ByZx+ktDGHwv6bHFimrgJM/2T021txPZ2s4c7bqvHbd+vXG6K948Q==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1422,12 +1217,13 @@ } }, "node_modules/@babel/plugin-transform-member-expression-literals": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.24.1.tgz", - "integrity": "sha512-4ojai0KysTWXzHseJKa1XPNXKRbuUrhkOPY4rEGeR+7ChlJVKxFa3H3Bz+7tWaGKgJAXUWKOGmltN+u9B3+CVg==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.25.9.tgz", + "integrity": "sha512-PYazBVfofCQkkMzh2P6IdIUaCEWni3iYEerAsRWuVd8+jlM1S9S9cz1dF9hIzyoZ8IA3+OwVYIp9v9e+GbgZhA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1437,13 +1233,14 @@ } }, "node_modules/@babel/plugin-transform-modules-amd": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.24.1.tgz", - "integrity": "sha512-lAxNHi4HVtjnHd5Rxg3D5t99Xm6H7b04hUS7EHIXcUl2EV4yl1gWdqZrNzXnSrHveL9qMdbODlLF55mvgjAfaQ==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.25.9.tgz", + "integrity": "sha512-g5T11tnI36jVClQlMlt4qKDLlWnG5pP9CSM4GhdRciTNMRgkfpo5cR6b4rGIOYPgRRuFAvwjPQ/Yk+ql4dyhbw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-module-transforms": "^7.23.3", - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-module-transforms": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1453,14 +1250,14 @@ } }, "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.24.1.tgz", - "integrity": "sha512-szog8fFTUxBfw0b98gEWPaEqF42ZUD/T3bkynW/wtgx2p/XCP55WEsb+VosKceRSd6njipdZvNogqdtI4Q0chw==", + "version": "7.26.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.26.3.tgz", + "integrity": "sha512-MgR55l4q9KddUDITEzEFYn5ZsGDXMSsU9E+kh7fjRXTIC3RHqfCo8RPRbyReYJh44HQ/yomFkqbOFohXvDCiIQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-module-transforms": "^7.23.3", - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/helper-simple-access": "^7.22.5" + "@babel/helper-module-transforms": "^7.26.0", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1470,15 +1267,16 @@ } }, "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.24.1.tgz", - "integrity": "sha512-mqQ3Zh9vFO1Tpmlt8QPnbwGHzNz3lpNEMxQb1kAemn/erstyqw1r9KeOlOfo3y6xAnFEcOv2tSyrXfmMk+/YZA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.25.9.tgz", + "integrity": "sha512-hyss7iIlH/zLHaehT+xwiymtPOpsiwIIRlCAOwBB04ta5Tt+lNItADdlXw3jAWZ96VJ2jlhl/c+PNIQPKNfvcA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-module-transforms": "^7.23.3", - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/helper-validator-identifier": "^7.22.20" + "@babel/helper-module-transforms": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9", + "@babel/traverse": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1488,13 +1286,14 @@ } }, "node_modules/@babel/plugin-transform-modules-umd": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.24.1.tgz", - "integrity": "sha512-tuA3lpPj+5ITfcCluy6nWonSL7RvaG0AOTeAuvXqEKS34lnLzXpDb0dcP6K8jD0zWZFNDVly90AGFJPnm4fOYg==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.25.9.tgz", + "integrity": "sha512-bS9MVObUgE7ww36HEfwe6g9WakQ0KF07mQF74uuXdkoziUPfKyu/nIm663kz//e5O1nPInPFx36z7WJmJ4yNEw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-module-transforms": "^7.23.3", - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-module-transforms": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1504,13 +1303,14 @@ } }, "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz", - "integrity": "sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.25.9.tgz", + "integrity": "sha512-oqB6WHdKTGl3q/ItQhpLSnWWOpjUJLsOCLVyeFgeTktkBSCiurvPOsyt93gibI9CmuKvTUEtWmG5VhZD+5T/KA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1520,12 +1320,13 @@ } }, "node_modules/@babel/plugin-transform-new-target": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.24.1.tgz", - "integrity": "sha512-/rurytBM34hYy0HKZQyA0nHbQgQNFm4Q/BOc9Hflxi2X3twRof7NaE5W46j4kQitm7SvACVRXsa6N/tSZxvPug==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.25.9.tgz", + "integrity": "sha512-U/3p8X1yCSoKyUj2eOBIx3FOn6pElFOKvAAGf8HTtItuPyB+ZeOqfn+mvTtg9ZlOAjsPdK3ayQEjqHjU/yLeVQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1535,13 +1336,13 @@ } }, "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.24.1.tgz", - "integrity": "sha512-iQ+caew8wRrhCikO5DrUYx0mrmdhkaELgFa+7baMcVuhxIkN7oxt06CZ51D65ugIb1UWRQ8oQe+HXAVM6qHFjw==", + "version": "7.26.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.26.6.tgz", + "integrity": "sha512-CKW8Vu+uUZneQCPtXmSBUC6NCAUdya26hWCElAWh5mVSlSRsmiCPUUDKb3Z0szng1hiAJa098Hkhg9o4SE35Qw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + "@babel/helper-plugin-utils": "^7.26.5" }, "engines": { "node": ">=6.9.0" @@ -1551,13 +1352,13 @@ } }, "node_modules/@babel/plugin-transform-numeric-separator": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.24.1.tgz", - "integrity": "sha512-7GAsGlK4cNL2OExJH1DzmDeKnRv/LXq0eLUSvudrehVA5Rgg4bIrqEUW29FbKMBRT0ztSqisv7kjP+XIC4ZMNw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.25.9.tgz", + "integrity": "sha512-TlprrJ1GBZ3r6s96Yq8gEQv82s8/5HnCVHtEJScUj90thHQbwe+E5MLhi2bbNHBEJuzrvltXSru+BUxHDoog7Q==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/plugin-syntax-numeric-separator": "^7.10.4" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1567,15 +1368,15 @@ } }, "node_modules/@babel/plugin-transform-object-rest-spread": { - "version": "7.24.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.24.5.tgz", - "integrity": "sha512-7EauQHszLGM3ay7a161tTQH7fj+3vVM/gThlz5HpFtnygTxjrlvoeq7MPVA1Vy9Q555OB8SnAOsMkLShNkkrHA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.25.9.tgz", + "integrity": "sha512-fSaXafEE9CVHPweLYw4J0emp1t8zYTXyzN3UuG+lylqkvYd7RMrsOQ8TYx5RF231be0vqtFC6jnx3UmpJmKBYg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-compilation-targets": "^7.23.6", - "@babel/helper-plugin-utils": "^7.24.5", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.24.5" + "@babel/helper-compilation-targets": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/plugin-transform-parameters": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1585,13 +1386,14 @@ } }, "node_modules/@babel/plugin-transform-object-super": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.24.1.tgz", - "integrity": "sha512-oKJqR3TeI5hSLRxudMjFQ9re9fBVUU0GICqM3J1mi8MqlhVr6hC/ZN4ttAyMuQR6EZZIY6h/exe5swqGNNIkWQ==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.25.9.tgz", + "integrity": "sha512-Kj/Gh+Rw2RNLbCK1VAWj2U48yxxqL2x0k10nPtSdRa0O2xnHXalD0s+o1A6a0W43gJ00ANo38jxkQreckOzv5A==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/helper-replace-supers": "^7.24.1" + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-replace-supers": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1601,13 +1403,13 @@ } }, "node_modules/@babel/plugin-transform-optional-catch-binding": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.24.1.tgz", - "integrity": "sha512-oBTH7oURV4Y+3EUrf6cWn1OHio3qG/PVwO5J03iSJmBg6m2EhKjkAu/xuaXaYwWW9miYtvbWv4LNf0AmR43LUA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.25.9.tgz", + "integrity": "sha512-qM/6m6hQZzDcZF3onzIhZeDHDO43bkNNlOX0i8n3lR6zLbu0GN2d8qfM/IERJZYauhAHSLHy39NF0Ctdvcid7g==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1617,14 +1419,14 @@ } }, "node_modules/@babel/plugin-transform-optional-chaining": { - "version": "7.24.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.24.5.tgz", - "integrity": "sha512-xWCkmwKT+ihmA6l7SSTpk8e4qQl/274iNbSKRRS8mpqFR32ksy36+a+LWY8OXCCEefF8WFlnOHVsaDI2231wBg==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.25.9.tgz", + "integrity": "sha512-6AvV0FsLULbpnXeBjrY4dmWF8F7gf8QnvTEoO/wX/5xm/xE1Xo8oPuD3MPS+KS9f9XBEAWN7X1aWr4z9HdOr7A==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", - "@babel/plugin-syntax-optional-chaining": "^7.8.3" + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1634,12 +1436,13 @@ } }, "node_modules/@babel/plugin-transform-parameters": { - "version": "7.24.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.24.5.tgz", - "integrity": "sha512-9Co00MqZ2aoky+4j2jhofErthm6QVLKbpQrvz20c3CH9KQCLHyNB+t2ya4/UrRpQGR+Wrwjg9foopoeSdnHOkA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.25.9.tgz", + "integrity": "sha512-wzz6MKwpnshBAiRmn4jR8LYz/g8Ksg0o80XmwZDlordjwEk9SxBzTWC7F5ef1jhbrbOW2DJ5J6ayRukrJmnr0g==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.5" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1649,13 +1452,14 @@ } }, "node_modules/@babel/plugin-transform-private-methods": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.24.1.tgz", - "integrity": "sha512-tGvisebwBO5em4PaYNqt4fkw56K2VALsAbAakY0FjTYqJp7gfdrgr7YX76Or8/cpik0W6+tj3rZ0uHU9Oil4tw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.25.9.tgz", + "integrity": "sha512-D/JUozNpQLAPUVusvqMxyvjzllRaF8/nSrP1s2YGQT/W4LHK4xxsMcHjhOGTS01mp9Hda8nswb+FblLdJornQw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.24.1", - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-create-class-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1665,15 +1469,15 @@ } }, "node_modules/@babel/plugin-transform-private-property-in-object": { - "version": "7.24.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.24.5.tgz", - "integrity": "sha512-JM4MHZqnWR04jPMujQDTBVRnqxpLLpx2tkn7iPn+Hmsc0Gnb79yvRWOkvqFOx3Z7P7VxiRIR22c4eGSNj87OBQ==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.25.9.tgz", + "integrity": "sha512-Evf3kcMqzXA3xfYJmZ9Pg1OvKdtqsDMSWBDzZOPLvHiTt36E75jLDQo5w1gtRU95Q4E5PDttrTf25Fw8d/uWLw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-create-class-features-plugin": "^7.24.5", - "@babel/helper-plugin-utils": "^7.24.5", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + "@babel/helper-annotate-as-pure": "^7.25.9", + "@babel/helper-create-class-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1683,12 +1487,13 @@ } }, "node_modules/@babel/plugin-transform-property-literals": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.24.1.tgz", - "integrity": "sha512-LetvD7CrHmEx0G442gOomRr66d7q8HzzGGr4PMHGr+5YIm6++Yke+jxj246rpvsbyhJwCLxcTn6zW1P1BSenqA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.25.9.tgz", + "integrity": "sha512-IvIUeV5KrS/VPavfSM/Iu+RE6llrHrYIKY1yfCzyO/lMXHQ+p7uGhonmGVisv6tSBSVgWzMBohTcvkC9vQcQFA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1698,12 +1503,13 @@ } }, "node_modules/@babel/plugin-transform-react-display-name": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.24.1.tgz", - "integrity": "sha512-mvoQg2f9p2qlpDQRBC7M3c3XTr0k7cp/0+kFKKO/7Gtu0LSw16eKB+Fabe2bDT/UpsyasTBBkAnbdsLrkD5XMw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.25.9.tgz", + "integrity": "sha512-KJfMlYIUxQB1CJfO3e0+h0ZHWOTLCPP115Awhaz8U0Zpq36Gl/cXlpoyMRnUWlhNUBAzldnCiAZNvCDj7CrKxQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1713,16 +1519,17 @@ } }, "node_modules/@babel/plugin-transform-react-jsx": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.23.4.tgz", - "integrity": "sha512-5xOpoPguCZCRbo/JeHlloSkTA8Bld1J/E1/kLfD1nsuiW1m8tduTA1ERCgIZokDflX/IBzKcqR3l7VlRgiIfHA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.25.9.tgz", + "integrity": "sha512-s5XwpQYCqGerXl+Pu6VDL3x0j2d82eiV77UJ8a2mDHAW7j9SWRqQ2y1fNo1Z74CdcYipl5Z41zvjj4Nfzq36rw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-module-imports": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/plugin-syntax-jsx": "^7.23.3", - "@babel/types": "^7.23.4" + "@babel/helper-annotate-as-pure": "^7.25.9", + "@babel/helper-module-imports": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/plugin-syntax-jsx": "^7.25.9", + "@babel/types": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1732,12 +1539,13 @@ } }, "node_modules/@babel/plugin-transform-react-jsx-development": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.22.5.tgz", - "integrity": "sha512-bDhuzwWMuInwCYeDeMzyi7TaBgRQei6DqxhbyniL7/VG4RSS7HtSL2QbY4eESy1KJqlWt8g3xeEBGPuo+XqC8A==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.25.9.tgz", + "integrity": "sha512-9mj6rm7XVYs4mdLIpbZnHOYdpW42uoiBCTVowg7sP1thUOiANgMb4UtpRivR0pp5iL+ocvUv7X4mZgFRpJEzGw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/plugin-transform-react-jsx": "^7.22.5" + "@babel/plugin-transform-react-jsx": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1747,12 +1555,13 @@ } }, "node_modules/@babel/plugin-transform-react-jsx-self": { - "version": "7.24.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.24.5.tgz", - "integrity": "sha512-RtCJoUO2oYrYwFPtR1/jkoBEcFuI1ae9a9IMxeyAVa3a1Ap4AnxmyIKG2b2FaJKqkidw/0cxRbWN+HOs6ZWd1w==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.25.9.tgz", + "integrity": "sha512-y8quW6p0WHkEhmErnfe58r7x0A70uKphQm8Sp8cV7tjNQwK56sNVK0M73LK3WuYmsuyrftut4xAkjjgU0twaMg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.5" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1762,12 +1571,13 @@ } }, "node_modules/@babel/plugin-transform-react-jsx-source": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.24.1.tgz", - "integrity": "sha512-1v202n7aUq4uXAieRTKcwPzNyphlCuqHHDcdSNc+vdhoTEZcFMh+L5yZuCmGaIO7bs1nJUNfHB89TZyoL48xNA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.25.9.tgz", + "integrity": "sha512-+iqjT8xmXhhYv4/uiYd8FNQsraMFZIfxVSqxxVSZP0WbbSAWvBXAul0m/zu+7Vv4O/3WtApy9pmaTMiumEZgfg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1777,13 +1587,14 @@ } }, "node_modules/@babel/plugin-transform-react-pure-annotations": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.24.1.tgz", - "integrity": "sha512-+pWEAaDJvSm9aFvJNpLiM2+ktl2Sn2U5DdyiWdZBxmLc6+xGt88dvFqsHiAiDS+8WqUwbDfkKz9jRxK3M0k+kA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.25.9.tgz", + "integrity": "sha512-KQ/Takk3T8Qzj5TppkS1be588lkbTp5uj7w6a0LeQaTMSckU/wK0oJ/pih+T690tkgI5jfmg2TqDJvd41Sj1Cg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-annotate-as-pure": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1793,12 +1604,13 @@ } }, "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.24.1.tgz", - "integrity": "sha512-sJwZBCzIBE4t+5Q4IGLaaun5ExVMRY0lYwos/jNecjMrVCygCdph3IKv0tkP5Fc87e/1+bebAmEAGBfnRD+cnw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.25.9.tgz", + "integrity": "sha512-vwDcDNsgMPDGP0nMqzahDWE5/MLcX8sv96+wfX7as7LoF/kr97Bo/7fI00lXY4wUXYfVmwIIyG80fGZ1uvt2qg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-plugin-utils": "^7.25.9", "regenerator-transform": "^0.15.2" }, "engines": { @@ -1808,13 +1620,31 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/plugin-transform-regexp-modifiers": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.26.0.tgz", + "integrity": "sha512-vN6saax7lrA2yA/Pak3sCxuD6F5InBjn9IcrIKQPjpsLvuHYLVroTxjdlVRHjjBWxKOqIwpTXDkOssYT4BFdRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, "node_modules/@babel/plugin-transform-reserved-words": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.24.1.tgz", - "integrity": "sha512-JAclqStUfIwKN15HrsQADFgeZt+wexNQ0uLhuqvqAUFoqPMjEcFCYZBhq0LUdz6dZK/mD+rErhW71fbx8RYElg==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.25.9.tgz", + "integrity": "sha512-7DL7DKYjn5Su++4RXu8puKZm2XBPHyjWLUidaPEkCUBbE7IPcsrkRHggAOOKydH1dASWdcUBxrkOGNxUv5P3Jg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1824,15 +1654,16 @@ } }, "node_modules/@babel/plugin-transform-runtime": { - "version": "7.24.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.24.3.tgz", - "integrity": "sha512-J0BuRPNlNqlMTRJ72eVptpt9VcInbxO6iP3jaxr+1NPhC0UkKL+6oeX6VXMEYdADnuqmMmsBspt4d5w8Y/TCbQ==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.25.9.tgz", + "integrity": "sha512-nZp7GlEl+yULJrClz0SwHPqir3lc0zsPrDHQUcxGspSL7AKrexNSEfTbfqnDNJUO13bgKyfuOLMF8Xqtu8j3YQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-module-imports": "^7.24.3", - "@babel/helper-plugin-utils": "^7.24.0", + "@babel/helper-module-imports": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", "babel-plugin-polyfill-corejs2": "^0.4.10", - "babel-plugin-polyfill-corejs3": "^0.10.1", + "babel-plugin-polyfill-corejs3": "^0.10.6", "babel-plugin-polyfill-regenerator": "^0.6.1", "semver": "^6.3.1" }, @@ -1844,12 +1675,13 @@ } }, "node_modules/@babel/plugin-transform-shorthand-properties": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.24.1.tgz", - "integrity": "sha512-LyjVB1nsJ6gTTUKRjRWx9C1s9hE7dLfP/knKdrfeH9UPtAGjYGgxIbFfx7xyLIEWs7Xe1Gnf8EWiUqfjLhInZA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.25.9.tgz", + "integrity": "sha512-MUv6t0FhO5qHnS/W8XCbHmiRWOphNufpE1IVxhK5kuN3Td9FT1x4rx4K42s3RYdMXCXpfWkGSbCSd0Z64xA7Ng==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1859,13 +1691,14 @@ } }, "node_modules/@babel/plugin-transform-spread": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.24.1.tgz", - "integrity": "sha512-KjmcIM+fxgY+KxPVbjelJC6hrH1CgtPmTvdXAfn3/a9CnWGSTY7nH4zm5+cjmWJybdcPSsD0++QssDsjcpe47g==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.25.9.tgz", + "integrity": "sha512-oNknIB0TbURU5pqJFVbOOFspVlrpVwo2H1+HUIsVDvp5VauGGDP1ZEvO8Nn5xyMEs3dakajOxlmkNW7kNgSm6A==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1875,12 +1708,13 @@ } }, "node_modules/@babel/plugin-transform-sticky-regex": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.24.1.tgz", - "integrity": "sha512-9v0f1bRXgPVcPrngOQvLXeGNNVLc8UjMVfebo9ka0WF3/7+aVUHmaJVT3sa0XCzEFioPfPHZiOcYG9qOsH63cw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.25.9.tgz", + "integrity": "sha512-WqBUSgeVwucYDP9U/xNRQam7xV8W5Zf+6Eo7T2SRVUFlhRiMNFdFz58u0KZmCVVqs2i7SHgpRnAhzRNmKfi2uA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1890,12 +1724,13 @@ } }, "node_modules/@babel/plugin-transform-template-literals": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.24.1.tgz", - "integrity": "sha512-WRkhROsNzriarqECASCNu/nojeXCDTE/F2HmRgOzi7NGvyfYGq1NEjKBK3ckLfRgGc6/lPAqP0vDOSw3YtG34g==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.25.9.tgz", + "integrity": "sha512-o97AE4syN71M/lxrCtQByzphAdlYluKPDBzDVzMmfCobUjjhAryZV0AIpRPrxN0eAkxXO6ZLEScmt+PNhj2OTw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1905,12 +1740,13 @@ } }, "node_modules/@babel/plugin-transform-typeof-symbol": { - "version": "7.24.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.24.5.tgz", - "integrity": "sha512-UTGnhYVZtTAjdwOTzT+sCyXmTn8AhaxOS/MjG9REclZ6ULHWF9KoCZur0HSGU7hk8PdBFKKbYe6+gqdXWz84Jg==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.25.9.tgz", + "integrity": "sha512-v61XqUMiueJROUv66BVIOi0Fv/CUuZuZMl5NkRoCVxLAnMexZ0A3kMe7vvZ0nulxMuMp0Mk6S5hNh48yki08ZA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.5" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1920,15 +1756,17 @@ } }, "node_modules/@babel/plugin-transform-typescript": { - "version": "7.24.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.24.5.tgz", - "integrity": "sha512-E0VWu/hk83BIFUWnsKZ4D81KXjN5L3MobvevOHErASk9IPwKHOkTgvqzvNo1yP/ePJWqqK2SpUR5z+KQbl6NVw==", + "version": "7.26.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.26.5.tgz", + "integrity": "sha512-GJhPO0y8SD5EYVCy2Zr+9dSZcEgaSmq5BLR0Oc25TOEhC+ba49vUAGZFjy8v79z9E1mdldq4x9d1xgh4L1d5dQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-create-class-features-plugin": "^7.24.5", - "@babel/helper-plugin-utils": "^7.24.5", - "@babel/plugin-syntax-typescript": "^7.24.1" + "@babel/helper-annotate-as-pure": "^7.25.9", + "@babel/helper-create-class-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.26.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9", + "@babel/plugin-syntax-typescript": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1938,12 +1776,13 @@ } }, "node_modules/@babel/plugin-transform-unicode-escapes": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.24.1.tgz", - "integrity": "sha512-RlkVIcWT4TLI96zM660S877E7beKlQw7Ig+wqkKBiWfj0zH5Q4h50q6er4wzZKRNSYpfo6ILJ+hrJAGSX2qcNw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.25.9.tgz", + "integrity": "sha512-s5EDrE6bW97LtxOcGj1Khcx5AaXwiMmi4toFWRDP9/y0Woo6pXC+iyPu/KuhKtfSrNFd7jJB+/fkOtZy6aIC6Q==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1953,13 +1792,14 @@ } }, "node_modules/@babel/plugin-transform-unicode-property-regex": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.24.1.tgz", - "integrity": "sha512-Ss4VvlfYV5huWApFsF8/Sq0oXnGO+jB+rijFEFugTd3cwSObUSnUi88djgR5528Csl0uKlrI331kRqe56Ov2Ng==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.25.9.tgz", + "integrity": "sha512-Jt2d8Ga+QwRluxRQ307Vlxa6dMrYEMZCgGxoPR8V52rxPyldHu3hdlHspxaqYmE7oID5+kB+UKUB/eWS+DkkWg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1969,13 +1809,14 @@ } }, "node_modules/@babel/plugin-transform-unicode-regex": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.24.1.tgz", - "integrity": "sha512-2A/94wgZgxfTsiLaQ2E36XAOdcZmGAaEEgVmxQWwZXWkGhvoHbaqXcKnU8zny4ycpu3vNqg0L/PcCiYtHtA13g==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.25.9.tgz", + "integrity": "sha512-yoxstj7Rg9dlNn9UQxzk4fcNivwv4nUYz7fYXBaKxvw/lnmPuOm/ikoELygbYq68Bls3D/D+NBPHiLwZdZZ4HA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1985,13 +1826,14 @@ } }, "node_modules/@babel/plugin-transform-unicode-sets-regex": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.24.1.tgz", - "integrity": "sha512-fqj4WuzzS+ukpgerpAoOnMfQXwUHFxXUZUE84oL2Kao2N8uSlvcpnAidKASgsNgzZHBsHWvcm8s9FPWUhAb8fA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.25.9.tgz", + "integrity": "sha512-8BYqO3GeVNHtx69fdPshN3fnzUNLrWdHhk/icSwigksJGczKSizZ+Z6SBCxTs723Fr5VSNorTIK7a+R2tISvwQ==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.24.0" + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -2001,91 +1843,80 @@ } }, "node_modules/@babel/preset-env": { - "version": "7.24.5", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.24.5.tgz", - "integrity": "sha512-UGK2ifKtcC8i5AI4cH+sbLLuLc2ktYSFJgBAXorKAsHUZmrQ1q6aQ6i3BvU24wWs2AAKqQB6kq3N9V9Gw1HiMQ==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.24.4", - "@babel/helper-compilation-targets": "^7.23.6", - "@babel/helper-plugin-utils": "^7.24.5", - "@babel/helper-validator-option": "^7.23.5", - "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.24.5", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.24.1", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.24.1", - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.24.1", + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.26.0.tgz", + "integrity": "sha512-H84Fxq0CQJNdPFT2DrfnylZ3cf5K43rGfWK4LJGPpjKHiZlk0/RzwEus3PDDZZg+/Er7lCA03MVacueUuXdzfw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.26.0", + "@babel/helper-compilation-targets": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-validator-option": "^7.25.9", + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.25.9", + "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.25.9", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.25.9", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.25.9", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.25.9", "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-class-properties": "^7.12.13", - "@babel/plugin-syntax-class-static-block": "^7.14.5", - "@babel/plugin-syntax-dynamic-import": "^7.8.3", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3", - "@babel/plugin-syntax-import-assertions": "^7.24.1", - "@babel/plugin-syntax-import-attributes": "^7.24.1", - "@babel/plugin-syntax-import-meta": "^7.10.4", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5", - "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-syntax-import-assertions": "^7.26.0", + "@babel/plugin-syntax-import-attributes": "^7.26.0", "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", - "@babel/plugin-transform-arrow-functions": "^7.24.1", - "@babel/plugin-transform-async-generator-functions": "^7.24.3", - "@babel/plugin-transform-async-to-generator": "^7.24.1", - "@babel/plugin-transform-block-scoped-functions": "^7.24.1", - "@babel/plugin-transform-block-scoping": "^7.24.5", - "@babel/plugin-transform-class-properties": "^7.24.1", - "@babel/plugin-transform-class-static-block": "^7.24.4", - "@babel/plugin-transform-classes": "^7.24.5", - "@babel/plugin-transform-computed-properties": "^7.24.1", - "@babel/plugin-transform-destructuring": "^7.24.5", - "@babel/plugin-transform-dotall-regex": "^7.24.1", - "@babel/plugin-transform-duplicate-keys": "^7.24.1", - "@babel/plugin-transform-dynamic-import": "^7.24.1", - "@babel/plugin-transform-exponentiation-operator": "^7.24.1", - "@babel/plugin-transform-export-namespace-from": "^7.24.1", - "@babel/plugin-transform-for-of": "^7.24.1", - "@babel/plugin-transform-function-name": "^7.24.1", - "@babel/plugin-transform-json-strings": "^7.24.1", - "@babel/plugin-transform-literals": "^7.24.1", - "@babel/plugin-transform-logical-assignment-operators": "^7.24.1", - "@babel/plugin-transform-member-expression-literals": "^7.24.1", - "@babel/plugin-transform-modules-amd": "^7.24.1", - "@babel/plugin-transform-modules-commonjs": "^7.24.1", - "@babel/plugin-transform-modules-systemjs": "^7.24.1", - "@babel/plugin-transform-modules-umd": "^7.24.1", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.22.5", - "@babel/plugin-transform-new-target": "^7.24.1", - "@babel/plugin-transform-nullish-coalescing-operator": "^7.24.1", - "@babel/plugin-transform-numeric-separator": "^7.24.1", - "@babel/plugin-transform-object-rest-spread": "^7.24.5", - "@babel/plugin-transform-object-super": "^7.24.1", - "@babel/plugin-transform-optional-catch-binding": "^7.24.1", - "@babel/plugin-transform-optional-chaining": "^7.24.5", - "@babel/plugin-transform-parameters": "^7.24.5", - "@babel/plugin-transform-private-methods": "^7.24.1", - "@babel/plugin-transform-private-property-in-object": "^7.24.5", - "@babel/plugin-transform-property-literals": "^7.24.1", - "@babel/plugin-transform-regenerator": "^7.24.1", - "@babel/plugin-transform-reserved-words": "^7.24.1", - "@babel/plugin-transform-shorthand-properties": "^7.24.1", - "@babel/plugin-transform-spread": "^7.24.1", - "@babel/plugin-transform-sticky-regex": "^7.24.1", - "@babel/plugin-transform-template-literals": "^7.24.1", - "@babel/plugin-transform-typeof-symbol": "^7.24.5", - "@babel/plugin-transform-unicode-escapes": "^7.24.1", - "@babel/plugin-transform-unicode-property-regex": "^7.24.1", - "@babel/plugin-transform-unicode-regex": "^7.24.1", - "@babel/plugin-transform-unicode-sets-regex": "^7.24.1", + "@babel/plugin-transform-arrow-functions": "^7.25.9", + "@babel/plugin-transform-async-generator-functions": "^7.25.9", + "@babel/plugin-transform-async-to-generator": "^7.25.9", + "@babel/plugin-transform-block-scoped-functions": "^7.25.9", + "@babel/plugin-transform-block-scoping": "^7.25.9", + "@babel/plugin-transform-class-properties": "^7.25.9", + "@babel/plugin-transform-class-static-block": "^7.26.0", + "@babel/plugin-transform-classes": "^7.25.9", + "@babel/plugin-transform-computed-properties": "^7.25.9", + "@babel/plugin-transform-destructuring": "^7.25.9", + "@babel/plugin-transform-dotall-regex": "^7.25.9", + "@babel/plugin-transform-duplicate-keys": "^7.25.9", + "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.25.9", + "@babel/plugin-transform-dynamic-import": "^7.25.9", + "@babel/plugin-transform-exponentiation-operator": "^7.25.9", + "@babel/plugin-transform-export-namespace-from": "^7.25.9", + "@babel/plugin-transform-for-of": "^7.25.9", + "@babel/plugin-transform-function-name": "^7.25.9", + "@babel/plugin-transform-json-strings": "^7.25.9", + "@babel/plugin-transform-literals": "^7.25.9", + "@babel/plugin-transform-logical-assignment-operators": "^7.25.9", + "@babel/plugin-transform-member-expression-literals": "^7.25.9", + "@babel/plugin-transform-modules-amd": "^7.25.9", + "@babel/plugin-transform-modules-commonjs": "^7.25.9", + "@babel/plugin-transform-modules-systemjs": "^7.25.9", + "@babel/plugin-transform-modules-umd": "^7.25.9", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.25.9", + "@babel/plugin-transform-new-target": "^7.25.9", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.25.9", + "@babel/plugin-transform-numeric-separator": "^7.25.9", + "@babel/plugin-transform-object-rest-spread": "^7.25.9", + "@babel/plugin-transform-object-super": "^7.25.9", + "@babel/plugin-transform-optional-catch-binding": "^7.25.9", + "@babel/plugin-transform-optional-chaining": "^7.25.9", + "@babel/plugin-transform-parameters": "^7.25.9", + "@babel/plugin-transform-private-methods": "^7.25.9", + "@babel/plugin-transform-private-property-in-object": "^7.25.9", + "@babel/plugin-transform-property-literals": "^7.25.9", + "@babel/plugin-transform-regenerator": "^7.25.9", + "@babel/plugin-transform-regexp-modifiers": "^7.26.0", + "@babel/plugin-transform-reserved-words": "^7.25.9", + "@babel/plugin-transform-shorthand-properties": "^7.25.9", + "@babel/plugin-transform-spread": "^7.25.9", + "@babel/plugin-transform-sticky-regex": "^7.25.9", + "@babel/plugin-transform-template-literals": "^7.25.9", + "@babel/plugin-transform-typeof-symbol": "^7.25.9", + "@babel/plugin-transform-unicode-escapes": "^7.25.9", + "@babel/plugin-transform-unicode-property-regex": "^7.25.9", + "@babel/plugin-transform-unicode-regex": "^7.25.9", + "@babel/plugin-transform-unicode-sets-regex": "^7.25.9", "@babel/preset-modules": "0.1.6-no-external-plugins", "babel-plugin-polyfill-corejs2": "^0.4.10", - "babel-plugin-polyfill-corejs3": "^0.10.4", + "babel-plugin-polyfill-corejs3": "^0.10.6", "babel-plugin-polyfill-regenerator": "^0.6.1", - "core-js-compat": "^3.31.0", + "core-js-compat": "^3.38.1", "semver": "^6.3.1" }, "engines": { @@ -2100,6 +1931,7 @@ "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.0.0", "@babel/types": "^7.4.4", @@ -2110,17 +1942,18 @@ } }, "node_modules/@babel/preset-react": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.24.1.tgz", - "integrity": "sha512-eFa8up2/8cZXLIpkafhaADTXSnl7IsUFCYenRWrARBz0/qZwcT0RBXpys0LJU4+WfPoF2ZG6ew6s2V6izMCwRA==", + "version": "7.26.3", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.26.3.tgz", + "integrity": "sha512-Nl03d6T9ky516DGK2YMxrTqvnpUW63TnJMOMonj+Zae0JiPC5BC9xPMSL6L8fiSpA5vP88qfygavVQvnLp+6Cw==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/helper-validator-option": "^7.23.5", - "@babel/plugin-transform-react-display-name": "^7.24.1", - "@babel/plugin-transform-react-jsx": "^7.23.4", - "@babel/plugin-transform-react-jsx-development": "^7.22.5", - "@babel/plugin-transform-react-pure-annotations": "^7.24.1" + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-validator-option": "^7.25.9", + "@babel/plugin-transform-react-display-name": "^7.25.9", + "@babel/plugin-transform-react-jsx": "^7.25.9", + "@babel/plugin-transform-react-jsx-development": "^7.25.9", + "@babel/plugin-transform-react-pure-annotations": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -2130,16 +1963,17 @@ } }, "node_modules/@babel/preset-typescript": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.24.1.tgz", - "integrity": "sha512-1DBaMmRDpuYQBPWD8Pf/WEwCrtgRHxsZnP4mIy9G/X+hFfbI47Q2G4t1Paakld84+qsk2fSsUPMKg71jkoOOaQ==", + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.26.0.tgz", + "integrity": "sha512-NMk1IGZ5I/oHhoXEElcm+xUnL/szL6xflkFZmoEU9xj1qSJXpiS7rsspYo92B4DRCDvZn2erT5LdsCeXAKNCkg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.0", - "@babel/helper-validator-option": "^7.23.5", - "@babel/plugin-syntax-jsx": "^7.24.1", - "@babel/plugin-transform-modules-commonjs": "^7.24.1", - "@babel/plugin-transform-typescript": "^7.24.1" + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-validator-option": "^7.25.9", + "@babel/plugin-syntax-jsx": "^7.25.9", + "@babel/plugin-transform-modules-commonjs": "^7.25.9", + "@babel/plugin-transform-typescript": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -2148,16 +1982,11 @@ "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/regjsgen": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz", - "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==", - "dev": true - }, "node_modules/@babel/runtime": { - "version": "7.24.5", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.5.tgz", - "integrity": "sha512-Nms86NXrsaeU9vbBJKni6gXiEXZ4CVpYVzEjDH9Sb8vmZ3UljyA1GSOJl/6LGPO8EHLuSF9H+IxNXHPX8QHJ4g==", + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.0.tgz", + "integrity": "sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==", + "license": "MIT", "dependencies": { "regenerator-runtime": "^0.14.0" }, @@ -2166,10 +1995,11 @@ } }, "node_modules/@babel/runtime-corejs3": { - "version": "7.24.5", - "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.24.5.tgz", - "integrity": "sha512-GWO0mgzNMLWaSYM4z4NVIuY0Cd1fl8cPnuetuddu5w/qGuvt5Y7oUi/kvvQGK9xgOkFJDQX2heIvTRn/OQ1XTg==", + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.26.0.tgz", + "integrity": "sha512-YXHu5lN8kJCb1LOb9PgV6pvak43X2h4HvRApcN5SdWeaItQOzfn1hgP6jasD6KWQyJDBxrVmA9o9OivlnNJK/w==", "dev": true, + "license": "MIT", "dependencies": { "core-js-pure": "^3.30.2", "regenerator-runtime": "^0.14.0" @@ -2179,33 +2009,32 @@ } }, "node_modules/@babel/template": { - "version": "7.24.0", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.0.tgz", - "integrity": "sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.9.tgz", + "integrity": "sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.23.5", - "@babel/parser": "^7.24.0", - "@babel/types": "^7.24.0" + "@babel/code-frame": "^7.25.9", + "@babel/parser": "^7.25.9", + "@babel/types": "^7.25.9" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.24.5", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.5.tgz", - "integrity": "sha512-7aaBLeDQ4zYcUFDUD41lJc1fG8+5IU9DaNSJAgal866FGvmD5EbWQgnEC6kO1gGLsX0esNkfnJSndbTXA3r7UA==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.24.2", - "@babel/generator": "^7.24.5", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.24.5", - "@babel/parser": "^7.24.5", - "@babel/types": "^7.24.5", + "version": "7.26.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.26.5.tgz", + "integrity": "sha512-rkOSPOw+AXbgtwUga3U4u8RpoK9FEFWBNAlTpcnkLFjL5CT+oyHNuUUC/xx6XefEJ16r38r8Bc/lfp6rYuHeJQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.26.2", + "@babel/generator": "^7.26.5", + "@babel/parser": "^7.26.5", + "@babel/template": "^7.25.9", + "@babel/types": "^7.26.5", "debug": "^4.3.1", "globals": "^11.1.0" }, @@ -2214,31 +2043,33 @@ } }, "node_modules/@babel/types": { - "version": "7.24.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.5.tgz", - "integrity": "sha512-6mQNsaLeXTw0nxYUYu+NSa4Hx4BlF1x1x8/PMFbiR+GBSr+2DkECc69b8hgy2frEodNcvPffeH8YfWd3LI6jhQ==", + "version": "7.26.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.5.tgz", + "integrity": "sha512-L6mZmwFDK6Cjh1nRCLXpa6no13ZIioJDz7mdkzHv399pThrTa/k0nUlNaenOeh2kWu/iaOQYElEpKPUswUa9Vg==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-string-parser": "^7.24.1", - "@babel/helper-validator-identifier": "^7.24.5", - "to-fast-properties": "^2.0.0" + "@babel/helper-string-parser": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@bugsnag/browser": { - "version": "7.22.7", - "resolved": "https://registry.npmjs.org/@bugsnag/browser/-/browser-7.22.7.tgz", - "integrity": "sha512-70jFkWKscK2osm7bnFbPLevrzHClrygM3UcKetKs/l81Xuzlxnu1SS3onN5OUl9kd9RN4XMFr46Pv5jSqWqImQ==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@bugsnag/browser/-/browser-7.25.0.tgz", + "integrity": "sha512-PzzWy5d9Ly1CU1KkxTB6ZaOw/dO+CYSfVtqxVJccy832e6+7rW/dvSw5Jy7rsNhgcKSKjZq86LtNkPSvritOLA==", + "license": "MIT", "dependencies": { - "@bugsnag/core": "^7.22.7" + "@bugsnag/core": "^7.25.0" } }, "node_modules/@bugsnag/core": { - "version": "7.22.7", - "resolved": "https://registry.npmjs.org/@bugsnag/core/-/core-7.22.7.tgz", - "integrity": "sha512-9DPWBkkBjhFJc5dCFy/wVC3HE0Aw3ZiLJKjyAxgywSKbILgtpD+qT1Xe8sacWyxU92znamlZ8H8ziQOe7jhhbA==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@bugsnag/core/-/core-7.25.0.tgz", + "integrity": "sha512-JZLak1b5BVzy77CPcklViZrppac/pE07L3uSDmfSvFYSCGReXkik2txOgV05VlF9EDe36dtUAIIV7iAPDfFpQQ==", + "license": "MIT", "dependencies": { "@bugsnag/cuid": "^3.0.0", "@bugsnag/safe-json-stringify": "^6.0.0", @@ -2250,23 +2081,26 @@ "node_modules/@bugsnag/cuid": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/@bugsnag/cuid/-/cuid-3.1.1.tgz", - "integrity": "sha512-d2z4b0rEo3chI07FNN1Xds8v25CNeekecU6FC/2Fs9MxY2EipkZTThVcV2YinMn8dvRUlViKOyC50evoUxg8tw==" + "integrity": "sha512-d2z4b0rEo3chI07FNN1Xds8v25CNeekecU6FC/2Fs9MxY2EipkZTThVcV2YinMn8dvRUlViKOyC50evoUxg8tw==", + "license": "MIT" }, "node_modules/@bugsnag/js": { - "version": "7.22.7", - "resolved": "https://registry.npmjs.org/@bugsnag/js/-/js-7.22.7.tgz", - "integrity": "sha512-Qq8l06rSDTZtxgNIDpTeXHrin9C30INNbPfnR2CNcEsCmfqyVQb4USPEuRb0xg5wiaLKU9r4IAatMqiCgdzG6A==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@bugsnag/js/-/js-7.25.0.tgz", + "integrity": "sha512-d8n8SyKdRUz8jMacRW1j/Sj/ckhKbIEp49+Dacp3CS8afRgfMZ//NXhUFFXITsDP5cXouaejR9fx4XVapYXNgg==", + "license": "MIT", "dependencies": { - "@bugsnag/browser": "^7.22.7", - "@bugsnag/node": "^7.22.7" + "@bugsnag/browser": "^7.25.0", + "@bugsnag/node": "^7.25.0" } }, "node_modules/@bugsnag/node": { - "version": "7.22.7", - "resolved": "https://registry.npmjs.org/@bugsnag/node/-/node-7.22.7.tgz", - "integrity": "sha512-Ud8vpX9UkGxoWAk7OigyR7w1eycbsE5uv5KZx0aWiqDPXylvICd42V5ZiWstpkdm9IVFo9AQ4+gmerHPe4Lwrg==", + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@bugsnag/node/-/node-7.25.0.tgz", + "integrity": "sha512-KlxBaJ8EREEsfKInybAjTO9LmdDXV3cUH5+XNXyqUZrcRVuPOu4j4xvljh+n24ifok/wbFZTKVXUzrN4iKIeIA==", + "license": "MIT", "dependencies": { - "@bugsnag/core": "^7.22.7", + "@bugsnag/core": "^7.25.0", "byline": "^5.0.0", "error-stack-parser": "^2.0.2", "iserror": "^0.0.2", @@ -2277,7 +2111,8 @@ "node_modules/@bugsnag/safe-json-stringify": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/@bugsnag/safe-json-stringify/-/safe-json-stringify-6.0.0.tgz", - "integrity": "sha512-htzFO1Zc57S8kgdRK9mLcPVTW1BY2ijfH7Dk2CeZmspTWKdKqSo1iwmqrq2WtRjFlo8aRZYgLX0wFrDXF/9DLA==" + "integrity": "sha512-htzFO1Zc57S8kgdRK9mLcPVTW1BY2ijfH7Dk2CeZmspTWKdKqSo1iwmqrq2WtRjFlo8aRZYgLX0wFrDXF/9DLA==", + "license": "MIT" }, "node_modules/@bundled-es-modules/cookie": { "version": "2.0.1", @@ -2311,9 +2146,9 @@ } }, "node_modules/@csstools/cascade-layer-name-parser": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/@csstools/cascade-layer-name-parser/-/cascade-layer-name-parser-1.0.9.tgz", - "integrity": "sha512-RRqNjxTZDUhx7pxYOBG/AkCVmPS3zYzfE47GEhIGkFuWFTQGJBgWOUUkKNo5MfxIfjDz5/1L3F3rF1oIsYaIpw==", + "version": "1.0.13", + "resolved": "https://registry.npmjs.org/@csstools/cascade-layer-name-parser/-/cascade-layer-name-parser-1.0.13.tgz", + "integrity": "sha512-MX0yLTwtZzr82sQ0zOjqimpZbzjMaK/h2pmlrLK7DCzlmiZLYFpoO94WmN1akRVo6ll/TdpHb53vihHLUMyvng==", "funding": [ { "type": "github", @@ -2324,18 +2159,19 @@ "url": "https://opencollective.com/csstools" } ], + "license": "MIT", "engines": { "node": "^14 || ^16 || >=18" }, "peerDependencies": { - "@csstools/css-parser-algorithms": "^2.6.1", - "@csstools/css-tokenizer": "^2.2.4" + "@csstools/css-parser-algorithms": "^2.7.1", + "@csstools/css-tokenizer": "^2.4.1" } }, "node_modules/@csstools/color-helpers": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@csstools/color-helpers/-/color-helpers-4.2.0.tgz", - "integrity": "sha512-hJJrSBzbfGxUsaR6X4Bzd/FLx0F1ulKnR5ljY9AiXCtsR+H+zSWQDFWlKES1BRaVZTDHLpIIHS9K2o0h+JLlrg==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@csstools/color-helpers/-/color-helpers-4.2.1.tgz", + "integrity": "sha512-CEypeeykO9AN7JWkr1OEOQb0HRzZlPWGwV0Ya6DuVgFdDi6g3ma/cPZ5ZPZM4AWQikDpq/0llnGGlIL+j8afzw==", "funding": [ { "type": "github", @@ -2346,14 +2182,15 @@ "url": "https://opencollective.com/csstools" } ], + "license": "MIT-0", "engines": { "node": "^14 || ^16 || >=18" } }, "node_modules/@csstools/css-calc": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@csstools/css-calc/-/css-calc-1.2.0.tgz", - "integrity": "sha512-iQqIW5vDPqQdLx07/atCuNKDprhIWjB0b8XRhUyXZWBZYUG+9mNyFwyu30rypX84WLevVo25NYW2ipxR8WyseQ==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@csstools/css-calc/-/css-calc-1.2.4.tgz", + "integrity": "sha512-tfOuvUQeo7Hz+FcuOd3LfXVp+342pnWUJ7D2y8NUpu1Ww6xnTbHLpz018/y6rtbHifJ3iIEf9ttxXd8KG7nL0Q==", "funding": [ { "type": "github", @@ -2364,12 +2201,13 @@ "url": "https://opencollective.com/csstools" } ], + "license": "MIT", "engines": { "node": "^14 || ^16 || >=18" }, "peerDependencies": { - "@csstools/css-parser-algorithms": "^2.6.1", - "@csstools/css-tokenizer": "^2.2.4" + "@csstools/css-parser-algorithms": "^2.7.1", + "@csstools/css-tokenizer": "^2.4.1" } }, "node_modules/@csstools/css-color-parser": { @@ -2386,6 +2224,7 @@ "url": "https://opencollective.com/csstools" } ], + "license": "MIT", "dependencies": { "@csstools/color-helpers": "^4.1.0", "@csstools/css-calc": "^1.2.0" @@ -2399,9 +2238,9 @@ } }, "node_modules/@csstools/css-parser-algorithms": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-2.6.1.tgz", - "integrity": "sha512-ubEkAaTfVZa+WwGhs5jbo5Xfqpeaybr/RvWzvFxRs4jfq16wH8l8Ty/QEEpINxll4xhuGfdMbipRyz5QZh9+FA==", + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-2.7.1.tgz", + "integrity": "sha512-2SJS42gxmACHgikc1WGesXLIT8d/q2l0UFM7TaEeIzdFCE/FPMtTiizcPGGJtlPo2xuQzY09OhrLTzRxqJqwGw==", "funding": [ { "type": "github", @@ -2412,17 +2251,18 @@ "url": "https://opencollective.com/csstools" } ], + "license": "MIT", "engines": { "node": "^14 || ^16 || >=18" }, "peerDependencies": { - "@csstools/css-tokenizer": "^2.2.4" + "@csstools/css-tokenizer": "^2.4.1" } }, "node_modules/@csstools/css-tokenizer": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-2.2.4.tgz", - "integrity": "sha512-PuWRAewQLbDhGeTvFuq2oClaSCKPIBmHyIobCV39JHRYN0byDcUWJl5baPeNUcqrjtdMNqFooE0FGl31I3JOqw==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-2.4.1.tgz", + "integrity": "sha512-eQ9DIktFJBhGjioABJRtUucoWR2mwllurfnM8LuNGAqX3ViZXaUchqk+1s7jjtkFiT9ySdACsFEA3etErkALUg==", "funding": [ { "type": "github", @@ -2433,14 +2273,15 @@ "url": "https://opencollective.com/csstools" } ], + "license": "MIT", "engines": { "node": "^14 || ^16 || >=18" } }, "node_modules/@csstools/media-query-list-parser": { - "version": "2.1.9", - "resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-2.1.9.tgz", - "integrity": "sha512-qqGuFfbn4rUmyOB0u8CVISIp5FfJ5GAR3mBrZ9/TKndHakdnm6pY0L/fbLcpPnrzwCyyTEZl1nUcXAYHEWneTA==", + "version": "2.1.13", + "resolved": "https://registry.npmjs.org/@csstools/media-query-list-parser/-/media-query-list-parser-2.1.13.tgz", + "integrity": "sha512-XaHr+16KRU9Gf8XLi3q8kDlI18d5vzKSKCY510Vrtc9iNR0NJzbY9hhTmwhzYZj/ZwGL4VmB3TA9hJW0Um2qFA==", "funding": [ { "type": "github", @@ -2451,18 +2292,20 @@ "url": "https://opencollective.com/csstools" } ], + "license": "MIT", "engines": { "node": "^14 || ^16 || >=18" }, "peerDependencies": { - "@csstools/css-parser-algorithms": "^2.6.1", - "@csstools/css-tokenizer": "^2.2.4" + "@csstools/css-parser-algorithms": "^2.7.1", + "@csstools/css-tokenizer": "^2.4.1" } }, "node_modules/@csstools/postcss-cascade-layers": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/@csstools/postcss-cascade-layers/-/postcss-cascade-layers-3.0.1.tgz", "integrity": "sha512-dD8W98dOYNOH/yX4V4HXOhfCOnvVAg8TtsL+qCGNoKXuq5z2C/d026wGWgySgC8cajXXo/wNezS31Glj5GcqrA==", + "license": "CC0-1.0", "dependencies": { "@csstools/selector-specificity": "^2.0.2", "postcss-selector-parser": "^6.0.10" @@ -2492,6 +2335,7 @@ "url": "https://opencollective.com/csstools" } ], + "license": "CC0-1.0", "dependencies": { "@csstools/css-color-parser": "^1.2.0", "@csstools/css-parser-algorithms": "^2.1.1", @@ -2519,6 +2363,7 @@ "url": "https://opencollective.com/csstools" } ], + "license": "CC0-1.0", "dependencies": { "@csstools/css-color-parser": "^1.2.0", "@csstools/css-parser-algorithms": "^2.1.1", @@ -2536,6 +2381,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/@csstools/postcss-font-format-keywords/-/postcss-font-format-keywords-2.0.2.tgz", "integrity": "sha512-iKYZlIs6JsNT7NKyRjyIyezTCHLh4L4BBB3F5Nx7Dc4Z/QmBgX+YJFuUSar8IM6KclGiAUFGomXFdYxAwJydlA==", + "license": "CC0-1.0", "dependencies": { "postcss-value-parser": "^4.2.0" }, @@ -2564,6 +2410,7 @@ "url": "https://opencollective.com/csstools" } ], + "license": "CC0-1.0", "dependencies": { "@csstools/css-color-parser": "^1.2.0", "@csstools/css-parser-algorithms": "^2.1.1", @@ -2591,6 +2438,7 @@ "url": "https://opencollective.com/csstools" } ], + "license": "CC0-1.0", "dependencies": { "@csstools/css-color-parser": "^1.2.0", "@csstools/css-parser-algorithms": "^2.1.1", @@ -2617,6 +2465,7 @@ "url": "https://opencollective.com/csstools" } ], + "license": "CC0-1.0", "dependencies": { "@csstools/postcss-progressive-custom-properties": "^2.3.0", "postcss-value-parser": "^4.2.0" @@ -2642,6 +2491,7 @@ "url": "https://opencollective.com/csstools" } ], + "license": "CC0-1.0", "dependencies": { "@csstools/selector-specificity": "^2.0.0", "postcss-selector-parser": "^6.0.10" @@ -2657,6 +2507,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/@csstools/postcss-logical-float-and-clear/-/postcss-logical-float-and-clear-1.0.1.tgz", "integrity": "sha512-eO9z2sMLddvlfFEW5Fxbjyd03zaO7cJafDurK4rCqyRt9P7aaWwha0LcSzoROlcZrw1NBV2JAp2vMKfPMQO1xw==", + "license": "CC0-1.0", "engines": { "node": "^14 || ^16 || >=18" }, @@ -2672,6 +2523,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/@csstools/postcss-logical-resize/-/postcss-logical-resize-1.0.1.tgz", "integrity": "sha512-x1ge74eCSvpBkDDWppl+7FuD2dL68WP+wwP2qvdUcKY17vJksz+XoE1ZRV38uJgS6FNUwC0AxrPW5gy3MxsDHQ==", + "license": "CC0-1.0", "dependencies": { "postcss-value-parser": "^4.2.0" }, @@ -2690,6 +2542,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/@csstools/postcss-logical-viewport-units/-/postcss-logical-viewport-units-1.0.3.tgz", "integrity": "sha512-6zqcyRg9HSqIHIPMYdt6THWhRmE5/tyHKJQLysn2TeDf/ftq7Em9qwMTx98t2C/7UxIsYS8lOiHHxAVjWn2WUg==", + "license": "CC0-1.0", "dependencies": { "@csstools/css-tokenizer": "^2.1.1" }, @@ -2705,9 +2558,9 @@ } }, "node_modules/@csstools/postcss-media-minmax": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/@csstools/postcss-media-minmax/-/postcss-media-minmax-1.1.4.tgz", - "integrity": "sha512-xl/PIO3TUbXO1ZA4SA6HCw+Q9UGe2cgeRKx3lHCzoNig2D4bT5vfVCOrwhxjUb09oHihc9eI3I0iIfVPiXaN1A==", + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/@csstools/postcss-media-minmax/-/postcss-media-minmax-1.1.8.tgz", + "integrity": "sha512-KYQCal2i7XPNtHAUxCECdrC7tuxIWQCW+s8eMYs5r5PaAiVTeKwlrkRS096PFgojdNCmHeG0Cb7njtuNswNf+w==", "funding": [ { "type": "github", @@ -2718,11 +2571,12 @@ "url": "https://opencollective.com/csstools" } ], + "license": "MIT", "dependencies": { - "@csstools/css-calc": "^1.2.0", - "@csstools/css-parser-algorithms": "^2.6.1", - "@csstools/css-tokenizer": "^2.2.4", - "@csstools/media-query-list-parser": "^2.1.9" + "@csstools/css-calc": "^1.2.4", + "@csstools/css-parser-algorithms": "^2.7.1", + "@csstools/css-tokenizer": "^2.4.1", + "@csstools/media-query-list-parser": "^2.1.13" }, "engines": { "node": "^14 || ^16 || >=18" @@ -2745,6 +2599,7 @@ "url": "https://opencollective.com/csstools" } ], + "license": "CC0-1.0", "dependencies": { "@csstools/css-parser-algorithms": "^2.2.0", "@csstools/css-tokenizer": "^2.1.1", @@ -2761,6 +2616,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/@csstools/postcss-nested-calc/-/postcss-nested-calc-2.0.2.tgz", "integrity": "sha512-jbwrP8rN4e7LNaRcpx3xpMUjhtt34I9OV+zgbcsYAAk6k1+3kODXJBf95/JMYWhu9g1oif7r06QVUgfWsKxCFw==", + "license": "CC0-1.0", "dependencies": { "postcss-value-parser": "^4.2.0" }, @@ -2779,6 +2635,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/@csstools/postcss-normalize-display-values/-/postcss-normalize-display-values-2.0.1.tgz", "integrity": "sha512-TQT5g3JQ5gPXC239YuRK8jFceXF9d25ZvBkyjzBGGoW5st5sPXFVQS8OjYb9IJ/K3CdfK4528y483cgS2DJR/w==", + "license": "CC0-1.0", "dependencies": { "postcss-value-parser": "^4.2.0" }, @@ -2807,6 +2664,7 @@ "url": "https://opencollective.com/csstools" } ], + "license": "CC0-1.0", "dependencies": { "@csstools/css-color-parser": "^1.2.0", "@csstools/css-parser-algorithms": "^2.1.1", @@ -2834,6 +2692,7 @@ "url": "https://opencollective.com/csstools" } ], + "license": "CC0-1.0", "dependencies": { "postcss-value-parser": "^4.2.0" }, @@ -2858,6 +2717,7 @@ "url": "https://opencollective.com/csstools" } ], + "license": "CC0-1.0", "dependencies": { "@csstools/css-color-parser": "^1.2.0", "@csstools/css-parser-algorithms": "^2.1.1", @@ -2875,6 +2735,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/@csstools/postcss-scope-pseudo-class/-/postcss-scope-pseudo-class-2.0.2.tgz", "integrity": "sha512-6Pvo4uexUCXt+Hz5iUtemQAcIuCYnL+ePs1khFR6/xPgC92aQLJ0zGHonWoewiBE+I++4gXK3pr+R1rlOFHe5w==", + "license": "CC0-1.0", "dependencies": { "postcss-selector-parser": "^6.0.10" }, @@ -2893,6 +2754,7 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/@csstools/postcss-stepped-value-functions/-/postcss-stepped-value-functions-2.1.1.tgz", "integrity": "sha512-YCvdF0GCZK35nhLgs7ippcxDlRVe5QsSht3+EghqTjnYnyl3BbWIN6fYQ1dKWYTJ+7Bgi41TgqQFfJDcp9Xy/w==", + "license": "CC0-1.0", "dependencies": { "@csstools/css-calc": "^1.1.1", "@csstools/css-parser-algorithms": "^2.1.1", @@ -2923,6 +2785,7 @@ "url": "https://opencollective.com/csstools" } ], + "license": "CC0-1.0", "dependencies": { "@csstools/color-helpers": "^2.1.0", "postcss-value-parser": "^4.2.0" @@ -2948,6 +2811,7 @@ "url": "https://opencollective.com/csstools" } ], + "license": "CC0-1.0", "engines": { "node": "^14 || ^16 || >=18" } @@ -2956,6 +2820,7 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/@csstools/postcss-trigonometric-functions/-/postcss-trigonometric-functions-2.1.1.tgz", "integrity": "sha512-XcXmHEFfHXhvYz40FtDlA4Fp4NQln2bWTsCwthd2c+MCnYArUYU3YaMqzR5CrKP3pMoGYTBnp5fMqf1HxItNyw==", + "license": "CC0-1.0", "dependencies": { "@csstools/css-calc": "^1.1.1", "@csstools/css-parser-algorithms": "^2.1.1", @@ -2976,6 +2841,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/@csstools/postcss-unset-value/-/postcss-unset-value-2.0.1.tgz", "integrity": "sha512-oJ9Xl29/yU8U7/pnMJRqAZd4YXNCfGEdcP4ywREuqm/xMqcgDNDppYRoCGDt40aaZQIEKBS79LytUDN/DHf0Ew==", + "license": "CC0-1.0", "engines": { "node": "^14 || ^16 || >=18" }, @@ -2991,6 +2857,7 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-2.2.0.tgz", "integrity": "sha512-+OJ9konv95ClSTOJCmMZqpd5+YGsB2S+x6w3E1oaM8UuR5j8nTNHYSz8c9BEPGDOCMQYIEEGlVPj/VY64iTbGw==", + "license": "CC0-1.0", "engines": { "node": "^14 || ^16 || >=18" }, @@ -3016,6 +2883,7 @@ "url": "https://opencollective.com/csstools" } ], + "license": "MIT-0", "engines": { "node": "^14 || ^16 || >=18" }, @@ -3023,54 +2891,6 @@ "postcss": "^8.4" } }, - "node_modules/@esbuild/android-arm": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.20.tgz", - "integrity": "sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-arm64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz", - "integrity": "sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.20.tgz", - "integrity": "sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, "node_modules/@esbuild/darwin-arm64": { "version": "0.18.20", "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz", @@ -3079,6 +2899,7 @@ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" @@ -3087,323 +2908,41 @@ "node": ">=12" } }, - "node_modules/@esbuild/darwin-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz", - "integrity": "sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/freebsd-arm64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz", - "integrity": "sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==", - "cpu": [ - "arm64" - ], + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.1.tgz", + "integrity": "sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==", "dev": true, - "optional": true, - "os": [ - "freebsd" - ], + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^3.4.3" + }, "engines": { - "node": ">=12" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" } }, - "node_modules/@esbuild/freebsd-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz", - "integrity": "sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==", - "cpu": [ - "x64" - ], + "node_modules/@eslint-community/regexpp": { + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", + "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", "dev": true, - "optional": true, - "os": [ - "freebsd" - ], + "license": "MIT", "engines": { - "node": ">=12" + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } }, - "node_modules/@esbuild/linux-arm": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz", - "integrity": "sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-arm64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz", - "integrity": "sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-ia32": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz", - "integrity": "sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-loong64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz", - "integrity": "sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==", - "cpu": [ - "loong64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-mips64el": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz", - "integrity": "sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==", - "cpu": [ - "mips64el" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-ppc64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz", - "integrity": "sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==", - "cpu": [ - "ppc64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-riscv64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz", - "integrity": "sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==", - "cpu": [ - "riscv64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-s390x": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz", - "integrity": "sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==", - "cpu": [ - "s390x" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz", - "integrity": "sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/netbsd-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz", - "integrity": "sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/openbsd-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz", - "integrity": "sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/sunos-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz", - "integrity": "sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-arm64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz", - "integrity": "sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-ia32": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz", - "integrity": "sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz", - "integrity": "sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@eslint-community/eslint-utils": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", - "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", - "dev": true, - "dependencies": { - "eslint-visitor-keys": "^3.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" - } - }, - "node_modules/@eslint-community/regexpp": { - "version": "4.10.0", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", - "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", - "dev": true, - "engines": { - "node": "^12.0.0 || ^14.0.0 || >=16.0.0" - } - }, - "node_modules/@eslint/eslintrc": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", - "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", + "node_modules/@eslint/eslintrc": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", "dev": true, + "license": "MIT", "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", @@ -3427,6 +2966,7 @@ "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", "dev": true, + "license": "MIT", "dependencies": { "type-fest": "^0.20.2" }, @@ -3442,6 +2982,7 @@ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", "dev": true, + "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" }, @@ -3450,10 +2991,11 @@ } }, "node_modules/@eslint/js": { - "version": "8.57.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz", - "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==", + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz", + "integrity": "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==", "dev": true, + "license": "MIT", "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } @@ -3462,6 +3004,7 @@ "version": "1.7.19", "resolved": "https://registry.npmjs.org/@headlessui/react/-/react-1.7.19.tgz", "integrity": "sha512-Ll+8q3OlMJfJbAKM/+/Y2q6PPYbryqNTXDbryx7SXLIDamkF6iQFbriYHga0dY44PvDhvvBWCx1Xj4U5+G4hOw==", + "license": "MIT", "dependencies": { "@tanstack/react-virtual": "^3.0.0-beta.60", "client-only": "^0.0.1" @@ -3475,12 +3018,14 @@ } }, "node_modules/@humanwhocodes/config-array": { - "version": "0.11.14", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", - "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz", + "integrity": "sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==", + "deprecated": "Use @eslint/config-array instead", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@humanwhocodes/object-schema": "^2.0.2", + "@humanwhocodes/object-schema": "^2.0.3", "debug": "^4.3.1", "minimatch": "^3.0.5" }, @@ -3493,6 +3038,7 @@ "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", "dev": true, + "license": "Apache-2.0", "engines": { "node": ">=12.22" }, @@ -3505,17 +3051,19 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", - "dev": true + "deprecated": "Use @eslint/object-schema instead", + "dev": true, + "license": "BSD-3-Clause" }, "node_modules/@inquirer/core": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-10.0.1.tgz", - "integrity": "sha512-KKTgjViBQUi3AAssqjUFMnMO3CM3qwCHvePV9EW+zTKGKafFGFF01sc1yOIYjLJ7QU52G/FbzKc+c01WLzXmVQ==", + "version": "10.1.4", + "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-10.1.4.tgz", + "integrity": "sha512-5y4/PUJVnRb4bwWY67KLdebWOhOc7xj5IP2J80oWXa64mVag24rwQ1VAdnj7/eDY/odhguW0zQ1Mp1pj6fO/2w==", "dev": true, "license": "MIT", "dependencies": { - "@inquirer/figures": "^1.0.7", - "@inquirer/type": "^3.0.0", + "@inquirer/figures": "^1.0.9", + "@inquirer/type": "^3.0.2", "ansi-escapes": "^4.3.2", "cli-width": "^4.1.0", "mute-stream": "^2.0.0", @@ -3529,9 +3077,9 @@ } }, "node_modules/@inquirer/core/node_modules/@inquirer/type": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-3.0.0.tgz", - "integrity": "sha512-YYykfbw/lefC7yKj7nanzQXILM7r3suIvyFlCcMskc99axmsSewXWkAfXKwMbgxL76iAFVmRwmYdwNZNc8gjog==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-3.0.2.tgz", + "integrity": "sha512-ZhQ4TvhwHZF+lGhQ2O/rsjo80XoZR5/5qhOY3t6FJuX5XBg5Be8YzYTvaUGJnc12AUGI2nr4QSUE4PhKSigx7g==", "dev": true, "license": "MIT", "engines": { @@ -3542,16 +3090,23 @@ } }, "node_modules/@inquirer/core/node_modules/@types/node": { - "version": "22.9.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.9.0.tgz", - "integrity": "sha512-vuyHg81vvWA1Z1ELfvLko2c8f34gyA0zaic0+Rllc5lbCnbSyuvb2Oxpm6TAUAC/2xZN3QGqxBNggD1nNR2AfQ==", + "version": "22.10.7", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.7.tgz", + "integrity": "sha512-V09KvXxFiutGp6B7XkpaDXlNadZxrzajcY50EuoLIpQ6WWYCSvf19lVIazzfIzQvhUN2HjX12spLojTnhuKlGg==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "undici-types": "~6.19.8" + "undici-types": "~6.20.0" } }, + "node_modules/@inquirer/core/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, "node_modules/@inquirer/core/node_modules/signal-exit": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", @@ -3565,10 +3120,40 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/@inquirer/core/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@inquirer/core/node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/@inquirer/figures": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/@inquirer/figures/-/figures-1.0.7.tgz", - "integrity": "sha512-m+Trk77mp54Zma6xLkLuY+mvanPxlE4A7yNKs2HBiyZ4UkVs28Mv5c/pgWrHeInx+USHeX/WEPzjrWrcJiQgjw==", + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@inquirer/figures/-/figures-1.0.9.tgz", + "integrity": "sha512-BXvGj0ehzrngHTPTDqUoDT3NXL8U0RxUk2zJm2A66RhCEIWdtU1v6GuUqNAgArW4PQ9CinqIWyHdQgdwOj06zQ==", "dev": true, "license": "MIT", "engines": { @@ -3580,6 +3165,7 @@ "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", "dev": true, + "license": "ISC", "dependencies": { "string-width": "^5.1.2", "string-width-cjs": "npm:string-width@^4.2.0", @@ -3593,10 +3179,11 @@ } }, "node_modules/@isaacs/cliui/node_modules/ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -3604,40 +3191,12 @@ "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, - "node_modules/@isaacs/cliui/node_modules/ansi-styles": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@isaacs/cliui/node_modules/string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", - "dev": true, - "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/@isaacs/cliui/node_modules/strip-ansi": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", "dev": true, + "license": "MIT", "dependencies": { "ansi-regex": "^6.0.1" }, @@ -3648,27 +3207,11 @@ "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, - "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", - "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, "node_modules/@jest/expect-utils": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz", "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==", + "license": "MIT", "dependencies": { "jest-get-type": "^29.6.3" }, @@ -3680,6 +3223,7 @@ "version": "29.6.3", "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", + "license": "MIT", "dependencies": { "@sinclair/typebox": "^0.27.8" }, @@ -3691,6 +3235,7 @@ "version": "29.6.3", "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", "@types/istanbul-lib-coverage": "^2.0.0", @@ -3704,10 +3249,11 @@ } }, "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", - "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz", + "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==", "dev": true, + "license": "MIT", "dependencies": { "@jridgewell/set-array": "^1.2.1", "@jridgewell/sourcemap-codec": "^1.4.10", @@ -3722,6 +3268,7 @@ "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.0.0" } @@ -3731,31 +3278,35 @@ "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.0.0" } }, "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.15", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", - "dev": true + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", + "dev": true, + "license": "MIT" }, "node_modules/@jridgewell/trace-mapping": { "version": "0.3.25", "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", "dev": true, + "license": "MIT", "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" } }, "node_modules/@jsdoc/salty": { - "version": "0.2.8", - "resolved": "https://registry.npmjs.org/@jsdoc/salty/-/salty-0.2.8.tgz", - "integrity": "sha512-5e+SFVavj1ORKlKaKr2BmTOekmXbelU7dC0cDkQLqag7xfuTPuGMUFx7KWJuv4bYZrTsoL2Z18VVCOKYxzoHcg==", + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/@jsdoc/salty/-/salty-0.2.9.tgz", + "integrity": "sha512-yYxMVH7Dqw6nO0d5NIV8OQWnitU8k6vXH8NtgqAfIa/IUqRMxRv/NUJJ08VEKbAakwxlgBl5PJdrU0dMPStsnw==", "dev": true, + "license": "Apache-2.0", "dependencies": { "lodash": "^4.17.21" }, @@ -3764,9 +3315,9 @@ } }, "node_modules/@mswjs/interceptors": { - "version": "0.36.9", - "resolved": "https://registry.npmjs.org/@mswjs/interceptors/-/interceptors-0.36.9.tgz", - "integrity": "sha512-mMRDUBwSNeCgjSMEWfjoh4Rm9fbyZ7xQ9SBq8eGHiiyRn1ieTip3pNEt0wxWVPPxR4i1Rv9bTkeEbkX7M4c15A==", + "version": "0.37.5", + "resolved": "https://registry.npmjs.org/@mswjs/interceptors/-/interceptors-0.37.5.tgz", + "integrity": "sha512-AAwRb5vXFcY4L+FvZ7LZusDuZ0vEe0Zm8ohn1FM6/X7A3bj4mqmkAcGRWuvC2JwSygNwHAAmMnAI73vPHeqsHA==", "dev": true, "license": "MIT", "dependencies": { @@ -3786,6 +3337,7 @@ "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz", "integrity": "sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==", "dev": true, + "license": "MIT", "dependencies": { "eslint-scope": "5.1.1" } @@ -3795,6 +3347,7 @@ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^4.1.1" @@ -3808,6 +3361,7 @@ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", "dev": true, + "license": "BSD-2-Clause", "engines": { "node": ">=4.0" } @@ -3817,6 +3371,7 @@ "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", "dev": true, + "license": "MIT", "dependencies": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" @@ -3830,6 +3385,7 @@ "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", "dev": true, + "license": "MIT", "engines": { "node": ">= 8" } @@ -3839,6 +3395,7 @@ "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", "dev": true, + "license": "MIT", "dependencies": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" @@ -3872,11 +3429,68 @@ "dev": true, "license": "MIT" }, + "node_modules/@parcel/watcher": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.5.0.tgz", + "integrity": "sha512-i0GV1yJnm2n3Yq1qw6QrUrd/LI9bE8WEBOTtOkpCXHHdyN3TAGgqAK/DAT05z4fq2x04cARXt2pDmjWjL92iTQ==", + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "dependencies": { + "detect-libc": "^1.0.3", + "is-glob": "^4.0.3", + "micromatch": "^4.0.5", + "node-addon-api": "^7.0.0" + }, + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "@parcel/watcher-android-arm64": "2.5.0", + "@parcel/watcher-darwin-arm64": "2.5.0", + "@parcel/watcher-darwin-x64": "2.5.0", + "@parcel/watcher-freebsd-x64": "2.5.0", + "@parcel/watcher-linux-arm-glibc": "2.5.0", + "@parcel/watcher-linux-arm-musl": "2.5.0", + "@parcel/watcher-linux-arm64-glibc": "2.5.0", + "@parcel/watcher-linux-arm64-musl": "2.5.0", + "@parcel/watcher-linux-x64-glibc": "2.5.0", + "@parcel/watcher-linux-x64-musl": "2.5.0", + "@parcel/watcher-win32-arm64": "2.5.0", + "@parcel/watcher-win32-ia32": "2.5.0", + "@parcel/watcher-win32-x64": "2.5.0" + } + }, + "node_modules/@parcel/watcher-darwin-arm64": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.0.tgz", + "integrity": "sha512-hyZ3TANnzGfLpRA2s/4U1kbw2ZI4qGxaRJbBH2DCSREFfubMswheh8TeiC1sGZ3z2jUf3s37P0BBlrD3sjVTUw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, "node_modules/@pkgjs/parseargs": { "version": "0.11.0", "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", "dev": true, + "license": "MIT", "optional": true, "engines": { "node": ">=14" @@ -3887,6 +3501,7 @@ "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==", "dev": true, + "license": "BSD-3-Clause", "peer": true }, "node_modules/@protobufjs/base64": { @@ -3894,6 +3509,7 @@ "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==", "dev": true, + "license": "BSD-3-Clause", "peer": true }, "node_modules/@protobufjs/codegen": { @@ -3901,6 +3517,7 @@ "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==", "dev": true, + "license": "BSD-3-Clause", "peer": true }, "node_modules/@protobufjs/eventemitter": { @@ -3908,6 +3525,7 @@ "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==", "dev": true, + "license": "BSD-3-Clause", "peer": true }, "node_modules/@protobufjs/fetch": { @@ -3915,6 +3533,7 @@ "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", "integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==", "dev": true, + "license": "BSD-3-Clause", "peer": true, "dependencies": { "@protobufjs/aspromise": "^1.1.1", @@ -3926,6 +3545,7 @@ "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==", "dev": true, + "license": "BSD-3-Clause", "peer": true }, "node_modules/@protobufjs/inquire": { @@ -3933,6 +3553,7 @@ "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==", "dev": true, + "license": "BSD-3-Clause", "peer": true }, "node_modules/@protobufjs/path": { @@ -3940,6 +3561,7 @@ "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==", "dev": true, + "license": "BSD-3-Clause", "peer": true }, "node_modules/@protobufjs/pool": { @@ -3947,6 +3569,7 @@ "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==", "dev": true, + "license": "BSD-3-Clause", "peer": true }, "node_modules/@protobufjs/utf8": { @@ -3954,26 +3577,29 @@ "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==", "dev": true, + "license": "BSD-3-Clause", "peer": true }, "node_modules/@rollup/plugin-commonjs": { - "version": "24.1.0", - "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-24.1.0.tgz", - "integrity": "sha512-eSL45hjhCWI0jCCXcNtLVqM5N1JlBGvlFfY0m6oOYnLCJ6N0qEXoZql4sY2MOUArzhH4SA/qBpTxvvZp2Sc+DQ==", + "version": "28.0.2", + "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-28.0.2.tgz", + "integrity": "sha512-BEFI2EDqzl+vA1rl97IDRZ61AIwGH093d9nz8+dThxJNH8oSoB7MjWvPCX3dkaK1/RCJ/1v/R1XB15FuSs0fQw==", "dev": true, + "license": "MIT", "dependencies": { "@rollup/pluginutils": "^5.0.1", "commondir": "^1.0.1", "estree-walker": "^2.0.2", - "glob": "^8.0.3", + "fdir": "^6.2.0", "is-reference": "1.2.1", - "magic-string": "^0.27.0" + "magic-string": "^0.30.3", + "picomatch": "^4.0.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=16.0.0 || 14 >= 14.17" }, "peerDependencies": { - "rollup": "^3.29.5" + "rollup": "^2.68.0||^3.0.0||^4.0.0" }, "peerDependenciesMeta": { "rollup": { @@ -3982,20 +3608,21 @@ } }, "node_modules/@rollup/pluginutils": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.0.tgz", - "integrity": "sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==", + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.4.tgz", + "integrity": "sha512-USm05zrsFxYLPdWWq+K3STlWiT/3ELn3RcV5hJMghpeAIhxfsUIg6mt12CBJBInWMV4VneoV7SfGv8xIwo2qNQ==", "dev": true, + "license": "MIT", "dependencies": { "@types/estree": "^1.0.0", "estree-walker": "^2.0.2", - "picomatch": "^2.3.1" + "picomatch": "^4.0.2" }, "engines": { "node": ">=14.0.0" }, "peerDependencies": { - "rollup": "^3.29.5" + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" }, "peerDependenciesMeta": { "rollup": { @@ -4003,22 +3630,32 @@ } } }, + "node_modules/@rtsao/scc": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", + "integrity": "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==", + "dev": true, + "license": "MIT" + }, "node_modules/@rushstack/eslint-patch": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.10.2.tgz", - "integrity": "sha512-hw437iINopmQuxWPSUEvqE56NCPsiU8N4AYtfHmJFckclktzK9YQJieD3XkDCDH4OjL+C7zgPUh73R/nrcHrqw==", - "dev": true + "version": "1.10.5", + "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.10.5.tgz", + "integrity": "sha512-kkKUDVlII2DQiKy7UstOR1ErJP8kUKAQ4oa+SQtM0K+lPdmmjj0YnnxBgtTVYH7mUKtbsxeFC9y0AmK7Yb78/A==", + "dev": true, + "license": "MIT" }, "node_modules/@sinclair/typebox": { "version": "0.27.8", "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", - "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==" + "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", + "license": "MIT" }, "node_modules/@svgr/babel-plugin-add-jsx-attribute": { "version": "6.5.1", "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-6.5.1.tgz", "integrity": "sha512-9PYGcXrAxitycIjRmZB+Q0JaN07GZIWaTBIGQzfaZv+qr1n8X1XUEJ5rZ/vx6OVD9RRYlrNnXWExQXcmZeD/BQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, @@ -4035,6 +3672,7 @@ "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-8.0.0.tgz", "integrity": "sha512-BcCkm/STipKvbCl6b7QFrMh/vx00vIP63k2eM66MfHJzPr6O2U0jYEViXkHJWqXqQYjdeA9cuCl5KWmlwjDvbA==", "dev": true, + "license": "MIT", "engines": { "node": ">=14" }, @@ -4051,6 +3689,7 @@ "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-8.0.0.tgz", "integrity": "sha512-5BcGCBfBxB5+XSDSWnhTThfI9jcO5f0Ai2V24gZpG+wXF14BzwxxdDb4g6trdOux0rhibGs385BeFMSmxtS3uA==", "dev": true, + "license": "MIT", "engines": { "node": ">=14" }, @@ -4067,6 +3706,7 @@ "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-6.5.1.tgz", "integrity": "sha512-8DPaVVE3fd5JKuIC29dqyMB54sA6mfgki2H2+swh+zNJoynC8pMPzOkidqHOSc6Wj032fhl8Z0TVn1GiPpAiJg==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, @@ -4083,6 +3723,7 @@ "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-6.5.1.tgz", "integrity": "sha512-FwOEi0Il72iAzlkaHrlemVurgSQRDFbk0OC8dSvD5fSBPHltNh7JtLsxmZUhjYBZo2PpcU/RJvvi6Q0l7O7ogw==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, @@ -4099,6 +3740,7 @@ "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-6.5.1.tgz", "integrity": "sha512-gWGsiwjb4tw+ITOJ86ndY/DZZ6cuXMNE/SjcDRg+HLuCmwpcjOktwRF9WgAiycTqJD/QXqL2f8IzE2Rzh7aVXA==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, @@ -4115,6 +3757,7 @@ "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-6.5.1.tgz", "integrity": "sha512-2jT3nTayyYP7kI6aGutkyfJ7UMGtuguD72OjeGLwVNyfPRBD8zQthlvL+fAbAKk5n9ZNcvFkp/b1lZ7VsYqVJg==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, @@ -4131,6 +3774,7 @@ "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-6.5.1.tgz", "integrity": "sha512-a1p6LF5Jt33O3rZoVRBqdxL350oge54iZWHNI6LJB5tQ7EelvD/Mb1mfBiZNAan0dt4i3VArkFRjA4iObuNykQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -4147,6 +3791,7 @@ "resolved": "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-6.5.1.tgz", "integrity": "sha512-6127fvO/FF2oi5EzSQOAjo1LE3OtNVh11R+/8FXa+mHx1ptAaS4cknIjnUA7e6j6fwGGJ17NzaTJFUwOV2zwCw==", "dev": true, + "license": "MIT", "dependencies": { "@svgr/babel-plugin-add-jsx-attribute": "^6.5.1", "@svgr/babel-plugin-remove-jsx-attribute": "*", @@ -4173,6 +3818,7 @@ "resolved": "https://registry.npmjs.org/@svgr/core/-/core-6.5.1.tgz", "integrity": "sha512-/xdLSWxK5QkqG524ONSjvg3V/FkNyCv538OIBdQqPNaAta3AsXj/Bd2FbvR87yMbXO2hFSWiAe/Q6IkVPDw+mw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/core": "^7.19.6", "@svgr/babel-preset": "^6.5.1", @@ -4193,6 +3839,7 @@ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, @@ -4205,6 +3852,7 @@ "resolved": "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-6.5.1.tgz", "integrity": "sha512-1hnUxxjd83EAxbL4a0JDJoD3Dao3hmjvyvyEV8PzWmLK3B9m9NPlW7GKjFyoWE8nM7HnXzPcmmSyOW8yOddSXw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/types": "^7.20.0", "entities": "^4.4.0" @@ -4222,6 +3870,7 @@ "resolved": "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-6.5.1.tgz", "integrity": "sha512-+UdQxI3jgtSjCykNSlEMuy1jSRQlGC7pqBCPvkG/2dATdWo082zHTTK3uhnAju2/6XpE6B5mZ3z4Z8Ns01S8Gw==", "dev": true, + "license": "MIT", "dependencies": { "@babel/core": "^7.19.6", "@svgr/babel-preset": "^6.5.1", @@ -4240,35 +3889,38 @@ } }, "node_modules/@tanstack/react-virtual": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/@tanstack/react-virtual/-/react-virtual-3.5.0.tgz", - "integrity": "sha512-rtvo7KwuIvqK9zb0VZ5IL7fiJAEnG+0EiFZz8FUOs+2mhGqdGmjKIaT1XU7Zq0eFqL0jonLlhbayJI/J2SA/Bw==", + "version": "3.11.2", + "resolved": "https://registry.npmjs.org/@tanstack/react-virtual/-/react-virtual-3.11.2.tgz", + "integrity": "sha512-OuFzMXPF4+xZgx8UzJha0AieuMihhhaWG0tCqpp6tDzlFwOmNBPYMuLOtMJ1Tr4pXLHmgjcWhG6RlknY2oNTdQ==", + "license": "MIT", "dependencies": { - "@tanstack/virtual-core": "3.5.0" + "@tanstack/virtual-core": "3.11.2" }, "funding": { "type": "github", "url": "https://github.com/sponsors/tannerlinsley" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "node_modules/@tanstack/virtual-core": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/@tanstack/virtual-core/-/virtual-core-3.5.0.tgz", - "integrity": "sha512-KnPRCkQTyqhanNC0K63GBG3wA8I+D1fQuVnAvcBF8f13akOKeQp1gSbu6f77zCxhEk727iV5oQnbHLYzHrECLg==", + "version": "3.11.2", + "resolved": "https://registry.npmjs.org/@tanstack/virtual-core/-/virtual-core-3.11.2.tgz", + "integrity": "sha512-vTtpNt7mKCiZ1pwU9hfKPhpdVO2sVzFQsxoVBGtOSHxlrRRzYr8iQ2TlwbAcRYCcEiZ9ECAM8kBzH0v2+VzfKw==", + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/tannerlinsley" } }, "node_modules/@testing-library/dom": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-10.1.0.tgz", - "integrity": "sha512-wdsYKy5zupPyLCW2Je5DLHSxSfbIp6h80WoHOQc+RPtmPGA52O9x5MJEkv92Sjonpq+poOAtUKhh1kBGAXBrNA==", + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-10.4.0.tgz", + "integrity": "sha512-pemlzrSESWbdAloYml3bAJMEfNh1Z7EduzqPKprCH5S341frlpYnUEW0H72dLxa6IsYr+mPno20GiSm+h9dEdQ==", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "@babel/code-frame": "^7.10.4", @@ -4289,6 +3941,7 @@ "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-5.17.0.tgz", "integrity": "sha512-ynmNeT7asXyH3aSVv4vvX4Rb+0qjOhdNHnO/3vuZNqPmhDpV/+rCSGwQ7bLcmU2cJ4dvoheIO85LQj0IbJHEtg==", "dev": true, + "license": "MIT", "dependencies": { "@adobe/css-tools": "^4.0.1", "@babel/runtime": "^7.9.2", @@ -4311,6 +3964,7 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -4324,6 +3978,7 @@ "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-11.2.7.tgz", "integrity": "sha512-tzRNp7pzd5QmbtXNG/mhdcl7Awfu/Iz1RaVHY75zTdOkmHCuzMhRL83gWHSgOAcjS3CCbyfwUHMZgRJb4kAfpA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/runtime": "^7.12.5", "@testing-library/dom": "^7.28.1" @@ -4341,6 +3996,7 @@ "resolved": "https://registry.npmjs.org/@testing-library/react-hooks/-/react-hooks-5.1.3.tgz", "integrity": "sha512-UdEUtlQapQ579NEcXDAUE275u+KUsPtxW7NmFrNt0bE6lW8lqNCyxDK0RSuECmNZ/S0/fgP00W9RWRhVKO/hRg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/runtime": "^7.12.5", "@types/react": ">=16.9.0", @@ -4368,6 +4024,7 @@ "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", "dev": true, + "license": "MIT", "dependencies": { "@types/istanbul-lib-coverage": "^2.0.0", "@types/istanbul-reports": "^3.0.0", @@ -4384,6 +4041,7 @@ "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-7.31.2.tgz", "integrity": "sha512-3UqjCpey6HiTZT92vODYLPxTBWlM8ZOOjr3LX5F37/VRipW2M1kX6I/Cm4VXzteZqfGfagg8yXywpcOgQBlNsQ==", "dev": true, + "license": "MIT", "dependencies": { "@babel/code-frame": "^7.10.4", "@babel/runtime": "^7.12.5", @@ -4402,13 +4060,15 @@ "version": "4.2.2", "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-4.2.2.tgz", "integrity": "sha512-HnYpAE1Y6kRyKM/XkEuiRQhTHvkzMBurTHnpFLYLBGPIylZNPs9jJcuOOYWxPLJCSEtmZT0Y8rHDokKN7rRTig==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@testing-library/react/node_modules/@types/yargs": { "version": "15.0.19", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.19.tgz", "integrity": "sha512-2XUaGVmyQjgyAZldf0D0c14vvo/yv0MhQBSTJcejMMaitsn3nxCB6TmH4G0ZQf+uxROOa9mpanoSm8h6SG/1ZA==", "dev": true, + "license": "MIT", "dependencies": { "@types/yargs-parser": "*" } @@ -4418,6 +4078,7 @@ "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-4.2.2.tgz", "integrity": "sha512-o/HelwhuKpTj/frsOsbNLNgnNGVIFsVP/SW2BSF14gVl7kAfMOJ6/8wUAUvG1R1NHKrfG+2sHZTu0yauT1qBrA==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@babel/runtime": "^7.10.2", "@babel/runtime-corejs3": "^7.10.2" @@ -4431,6 +4092,7 @@ "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz", "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==", "dev": true, + "license": "MIT", "dependencies": { "@jest/types": "^26.6.2", "ansi-regex": "^5.0.0", @@ -4442,10 +4104,11 @@ } }, "node_modules/@testing-library/user-event": { - "version": "14.5.2", - "resolved": "https://registry.npmjs.org/@testing-library/user-event/-/user-event-14.5.2.tgz", - "integrity": "sha512-YAh82Wh4TIrxYLmfGcixwD18oIjyC1pFQC2Y01F2lzV2HTMiYrI0nze0FD0ocB//CKS/7jIUgae+adPqxK5yCQ==", + "version": "14.6.1", + "resolved": "https://registry.npmjs.org/@testing-library/user-event/-/user-event-14.6.1.tgz", + "integrity": "sha512-vq7fv0rnt+QTXgPxr5Hjc210p6YKq2kmdziLgnsZGgLJ9e6VAShx1pACLuRjd/AS/sr7phAR58OIIpf0LlmQNw==", "dev": true, + "license": "MIT", "engines": { "node": ">=12", "npm": ">=6" @@ -4459,6 +4122,7 @@ "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", "dev": true, + "license": "MIT", "engines": { "node": ">= 10" } @@ -4467,6 +4131,7 @@ "version": "0.2.0", "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==", + "license": "ISC", "engines": { "node": ">=10.13.0" } @@ -4476,19 +4141,22 @@ "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.4.tgz", "integrity": "sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==", "dev": true, + "license": "MIT", "peer": true }, "node_modules/@types/chai": { - "version": "4.3.14", - "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.14.tgz", - "integrity": "sha512-Wj71sXE4Q4AkGdG9Tvq1u/fquNz9EdG4LIJMwVVII7ashjD/8cf8fyIfJAjRr6YcsXnSE8cOGQPq1gqeR8z+3w==", - "dev": true + "version": "4.3.20", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.20.tgz", + "integrity": "sha512-/pC9HAB5I/xMlc5FP77qjCnI16ChlJfW0tGa0IUcFn38VJrTV6DeZ60NU5KZBtaOZqjdpwTWohz5HU1RrhiYxQ==", + "dev": true, + "license": "MIT" }, "node_modules/@types/chai-subset": { "version": "1.3.5", "resolved": "https://registry.npmjs.org/@types/chai-subset/-/chai-subset-1.3.5.tgz", "integrity": "sha512-c2mPnw+xHtXDoHmdtcCXGwyLMiauiAyxWMzhGpqHC4nqI/Y5G2XhTampslK2rb59kpcuHon03UH8W6iYUzw88A==", "dev": true, + "license": "MIT", "dependencies": { "@types/chai": "*" } @@ -4541,12 +4209,14 @@ "node_modules/@types/d3-array": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/@types/d3-array/-/d3-array-3.2.1.tgz", - "integrity": "sha512-Y2Jn2idRrLzUfAKV2LyRImR+y4oa2AntrgID95SHJxuMUrkNXmanDSed71sRNZysveJVt1hLLemQZIady0FpEg==" + "integrity": "sha512-Y2Jn2idRrLzUfAKV2LyRImR+y4oa2AntrgID95SHJxuMUrkNXmanDSed71sRNZysveJVt1hLLemQZIady0FpEg==", + "license": "MIT" }, "node_modules/@types/d3-axis": { "version": "3.0.6", "resolved": "https://registry.npmjs.org/@types/d3-axis/-/d3-axis-3.0.6.tgz", "integrity": "sha512-pYeijfZuBd87T0hGn0FO1vQ/cgLk6E1ALJjfkC0oJ8cbwkZl3TpgS8bVBLZN+2jjGgg38epgxb2zmoGtSfvgMw==", + "license": "MIT", "dependencies": { "@types/d3-selection": "*" } @@ -4555,6 +4225,7 @@ "version": "3.0.6", "resolved": "https://registry.npmjs.org/@types/d3-brush/-/d3-brush-3.0.6.tgz", "integrity": "sha512-nH60IZNNxEcrh6L1ZSMNA28rj27ut/2ZmI3r96Zd+1jrZD++zD3LsMIjWlvg4AYrHn/Pqz4CF3veCxGjtbqt7A==", + "license": "MIT", "dependencies": { "@types/d3-selection": "*" } @@ -4562,17 +4233,20 @@ "node_modules/@types/d3-chord": { "version": "3.0.6", "resolved": "https://registry.npmjs.org/@types/d3-chord/-/d3-chord-3.0.6.tgz", - "integrity": "sha512-LFYWWd8nwfwEmTZG9PfQxd17HbNPksHBiJHaKuY1XeqscXacsS2tyoo6OdRsjf+NQYeB6XrNL3a25E3gH69lcg==" + "integrity": "sha512-LFYWWd8nwfwEmTZG9PfQxd17HbNPksHBiJHaKuY1XeqscXacsS2tyoo6OdRsjf+NQYeB6XrNL3a25E3gH69lcg==", + "license": "MIT" }, "node_modules/@types/d3-color": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/@types/d3-color/-/d3-color-3.1.3.tgz", - "integrity": "sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==" + "integrity": "sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==", + "license": "MIT" }, "node_modules/@types/d3-contour": { "version": "3.0.6", "resolved": "https://registry.npmjs.org/@types/d3-contour/-/d3-contour-3.0.6.tgz", "integrity": "sha512-BjzLgXGnCWjUSYGfH1cpdo41/hgdWETu4YxpezoztawmqsvCeep+8QGfiY6YbDvfgHz/DkjeIkkZVJavB4a3rg==", + "license": "MIT", "dependencies": { "@types/d3-array": "*", "@types/geojson": "*" @@ -4581,17 +4255,20 @@ "node_modules/@types/d3-delaunay": { "version": "6.0.4", "resolved": "https://registry.npmjs.org/@types/d3-delaunay/-/d3-delaunay-6.0.4.tgz", - "integrity": "sha512-ZMaSKu4THYCU6sV64Lhg6qjf1orxBthaC161plr5KuPHo3CNm8DTHiLw/5Eq2b6TsNP0W0iJrUOFscY6Q450Hw==" + "integrity": "sha512-ZMaSKu4THYCU6sV64Lhg6qjf1orxBthaC161plr5KuPHo3CNm8DTHiLw/5Eq2b6TsNP0W0iJrUOFscY6Q450Hw==", + "license": "MIT" }, "node_modules/@types/d3-dispatch": { "version": "3.0.6", "resolved": "https://registry.npmjs.org/@types/d3-dispatch/-/d3-dispatch-3.0.6.tgz", - "integrity": "sha512-4fvZhzMeeuBJYZXRXrRIQnvUYfyXwYmLsdiN7XXmVNQKKw1cM8a5WdID0g1hVFZDqT9ZqZEY5pD44p24VS7iZQ==" + "integrity": "sha512-4fvZhzMeeuBJYZXRXrRIQnvUYfyXwYmLsdiN7XXmVNQKKw1cM8a5WdID0g1hVFZDqT9ZqZEY5pD44p24VS7iZQ==", + "license": "MIT" }, "node_modules/@types/d3-drag": { "version": "3.0.7", "resolved": "https://registry.npmjs.org/@types/d3-drag/-/d3-drag-3.0.7.tgz", "integrity": "sha512-HE3jVKlzU9AaMazNufooRJ5ZpWmLIoc90A37WU2JMmeq28w1FQqCZswHZ3xR+SuxYftzHq6WU6KJHvqxKzTxxQ==", + "license": "MIT", "dependencies": { "@types/d3-selection": "*" } @@ -4599,35 +4276,41 @@ "node_modules/@types/d3-dsv": { "version": "3.0.7", "resolved": "https://registry.npmjs.org/@types/d3-dsv/-/d3-dsv-3.0.7.tgz", - "integrity": "sha512-n6QBF9/+XASqcKK6waudgL0pf/S5XHPPI8APyMLLUHd8NqouBGLsU8MgtO7NINGtPBtk9Kko/W4ea0oAspwh9g==" + "integrity": "sha512-n6QBF9/+XASqcKK6waudgL0pf/S5XHPPI8APyMLLUHd8NqouBGLsU8MgtO7NINGtPBtk9Kko/W4ea0oAspwh9g==", + "license": "MIT" }, "node_modules/@types/d3-ease": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/@types/d3-ease/-/d3-ease-3.0.2.tgz", - "integrity": "sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA==" + "integrity": "sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA==", + "license": "MIT" }, "node_modules/@types/d3-fetch": { "version": "3.0.7", "resolved": "https://registry.npmjs.org/@types/d3-fetch/-/d3-fetch-3.0.7.tgz", "integrity": "sha512-fTAfNmxSb9SOWNB9IoG5c8Hg6R+AzUHDRlsXsDZsNp6sxAEOP0tkP3gKkNSO/qmHPoBFTxNrjDprVHDQDvo5aA==", + "license": "MIT", "dependencies": { "@types/d3-dsv": "*" } }, "node_modules/@types/d3-force": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/@types/d3-force/-/d3-force-3.0.9.tgz", - "integrity": "sha512-IKtvyFdb4Q0LWna6ymywQsEYjK/94SGhPrMfEr1TIc5OBeziTi+1jcCvttts8e0UWZIxpasjnQk9MNk/3iS+kA==" + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/@types/d3-force/-/d3-force-3.0.10.tgz", + "integrity": "sha512-ZYeSaCF3p73RdOKcjj+swRlZfnYpK1EbaDiYICEEp5Q6sUiqFaFQ9qgoshp5CzIyyb/yD09kD9o2zEltCexlgw==", + "license": "MIT" }, "node_modules/@types/d3-format": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/@types/d3-format/-/d3-format-3.0.4.tgz", - "integrity": "sha512-fALi2aI6shfg7vM5KiR1wNJnZ7r6UuggVqtDA+xiEdPZQwy/trcQaHnwShLuLdta2rTymCNpxYTiMZX/e09F4g==" + "integrity": "sha512-fALi2aI6shfg7vM5KiR1wNJnZ7r6UuggVqtDA+xiEdPZQwy/trcQaHnwShLuLdta2rTymCNpxYTiMZX/e09F4g==", + "license": "MIT" }, "node_modules/@types/d3-geo": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/@types/d3-geo/-/d3-geo-3.1.0.tgz", "integrity": "sha512-856sckF0oP/diXtS4jNsiQw/UuK5fQG8l/a9VVLeSouf1/PPbBE1i1W852zVwKwYCBkFJJB7nCFTbk6UMEXBOQ==", + "license": "MIT", "dependencies": { "@types/geojson": "*" } @@ -4635,12 +4318,14 @@ "node_modules/@types/d3-hierarchy": { "version": "3.1.7", "resolved": "https://registry.npmjs.org/@types/d3-hierarchy/-/d3-hierarchy-3.1.7.tgz", - "integrity": "sha512-tJFtNoYBtRtkNysX1Xq4sxtjK8YgoWUNpIiUee0/jHGRwqvzYxkq0hGVbbOGSz+JgFxxRu4K8nb3YpG3CMARtg==" + "integrity": "sha512-tJFtNoYBtRtkNysX1Xq4sxtjK8YgoWUNpIiUee0/jHGRwqvzYxkq0hGVbbOGSz+JgFxxRu4K8nb3YpG3CMARtg==", + "license": "MIT" }, "node_modules/@types/d3-interpolate": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/@types/d3-interpolate/-/d3-interpolate-3.0.4.tgz", "integrity": "sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA==", + "license": "MIT", "dependencies": { "@types/d3-color": "*" } @@ -4648,68 +4333,80 @@ "node_modules/@types/d3-path": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/@types/d3-path/-/d3-path-3.1.0.tgz", - "integrity": "sha512-P2dlU/q51fkOc/Gfl3Ul9kicV7l+ra934qBFXCFhrZMOL6du1TM0pm1ThYvENukyOn5h9v+yMJ9Fn5JK4QozrQ==" + "integrity": "sha512-P2dlU/q51fkOc/Gfl3Ul9kicV7l+ra934qBFXCFhrZMOL6du1TM0pm1ThYvENukyOn5h9v+yMJ9Fn5JK4QozrQ==", + "license": "MIT" }, "node_modules/@types/d3-polygon": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/@types/d3-polygon/-/d3-polygon-3.0.2.tgz", - "integrity": "sha512-ZuWOtMaHCkN9xoeEMr1ubW2nGWsp4nIql+OPQRstu4ypeZ+zk3YKqQT0CXVe/PYqrKpZAi+J9mTs05TKwjXSRA==" + "integrity": "sha512-ZuWOtMaHCkN9xoeEMr1ubW2nGWsp4nIql+OPQRstu4ypeZ+zk3YKqQT0CXVe/PYqrKpZAi+J9mTs05TKwjXSRA==", + "license": "MIT" }, "node_modules/@types/d3-quadtree": { "version": "3.0.6", "resolved": "https://registry.npmjs.org/@types/d3-quadtree/-/d3-quadtree-3.0.6.tgz", - "integrity": "sha512-oUzyO1/Zm6rsxKRHA1vH0NEDG58HrT5icx/azi9MF1TWdtttWl0UIUsjEQBBh+SIkrpd21ZjEv7ptxWys1ncsg==" + "integrity": "sha512-oUzyO1/Zm6rsxKRHA1vH0NEDG58HrT5icx/azi9MF1TWdtttWl0UIUsjEQBBh+SIkrpd21ZjEv7ptxWys1ncsg==", + "license": "MIT" }, "node_modules/@types/d3-random": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/@types/d3-random/-/d3-random-3.0.3.tgz", - "integrity": "sha512-Imagg1vJ3y76Y2ea0871wpabqp613+8/r0mCLEBfdtqC7xMSfj9idOnmBYyMoULfHePJyxMAw3nWhJxzc+LFwQ==" + "integrity": "sha512-Imagg1vJ3y76Y2ea0871wpabqp613+8/r0mCLEBfdtqC7xMSfj9idOnmBYyMoULfHePJyxMAw3nWhJxzc+LFwQ==", + "license": "MIT" }, "node_modules/@types/d3-scale": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-4.0.8.tgz", "integrity": "sha512-gkK1VVTr5iNiYJ7vWDI+yUFFlszhNMtVeneJ6lUTKPjprsvLLI9/tgEGiXJOnlINJA8FyA88gfnQsHbybVZrYQ==", + "license": "MIT", "dependencies": { "@types/d3-time": "*" } }, "node_modules/@types/d3-scale-chromatic": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/d3-scale-chromatic/-/d3-scale-chromatic-3.0.3.tgz", - "integrity": "sha512-laXM4+1o5ImZv3RpFAsTRn3TEkzqkytiOY0Dz0sq5cnd1dtNlk6sHLon4OvqaiJb28T0S/TdsBI3Sjsy+keJrw==" + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@types/d3-scale-chromatic/-/d3-scale-chromatic-3.1.0.tgz", + "integrity": "sha512-iWMJgwkK7yTRmWqRB5plb1kadXyQ5Sj8V/zYlFGMUBbIPKQScw+Dku9cAAMgJG+z5GYDoMjWGLVOvjghDEFnKQ==", + "license": "MIT" }, "node_modules/@types/d3-selection": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/@types/d3-selection/-/d3-selection-3.0.10.tgz", - "integrity": "sha512-cuHoUgS/V3hLdjJOLTT691+G2QoqAjCVLmr4kJXR4ha56w1Zdu8UUQ5TxLRqudgNjwXeQxKMq4j+lyf9sWuslg==" + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/@types/d3-selection/-/d3-selection-3.0.11.tgz", + "integrity": "sha512-bhAXu23DJWsrI45xafYpkQ4NtcKMwWnAC/vKrd2l+nxMFuvOT3XMYTIj2opv8vq8AO5Yh7Qac/nSeP/3zjTK0w==", + "license": "MIT" }, "node_modules/@types/d3-shape": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-3.1.6.tgz", - "integrity": "sha512-5KKk5aKGu2I+O6SONMYSNflgiP0WfZIQvVUMan50wHsLG1G94JlxEVnCpQARfTtzytuY0p/9PXXZb3I7giofIA==", + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-3.1.7.tgz", + "integrity": "sha512-VLvUQ33C+3J+8p+Daf+nYSOsjB4GXp19/S/aGo60m9h1v6XaxjiT82lKVWJCfzhtuZ3yD7i/TPeC/fuKLLOSmg==", + "license": "MIT", "dependencies": { "@types/d3-path": "*" } }, "node_modules/@types/d3-time": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/d3-time/-/d3-time-3.0.3.tgz", - "integrity": "sha512-2p6olUZ4w3s+07q3Tm2dbiMZy5pCDfYwtLXXHUnVzXgQlZ/OyPtUz6OL382BkOuGlLXqfT+wqv8Fw2v8/0geBw==" + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-time/-/d3-time-3.0.4.tgz", + "integrity": "sha512-yuzZug1nkAAaBlBBikKZTgzCeA+k1uy4ZFwWANOfKw5z5LRhV0gNA7gNkKm7HoK+HRN0wX3EkxGk0fpbWhmB7g==", + "license": "MIT" }, "node_modules/@types/d3-time-format": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/@types/d3-time-format/-/d3-time-format-4.0.3.tgz", - "integrity": "sha512-5xg9rC+wWL8kdDj153qZcsJ0FWiFt0J5RB6LYUNZjwSnesfblqrI/bJ1wBdJ8OQfncgbJG5+2F+qfqnqyzYxyg==" + "integrity": "sha512-5xg9rC+wWL8kdDj153qZcsJ0FWiFt0J5RB6LYUNZjwSnesfblqrI/bJ1wBdJ8OQfncgbJG5+2F+qfqnqyzYxyg==", + "license": "MIT" }, "node_modules/@types/d3-timer": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/@types/d3-timer/-/d3-timer-3.0.2.tgz", - "integrity": "sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw==" + "integrity": "sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw==", + "license": "MIT" }, "node_modules/@types/d3-transition": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/@types/d3-transition/-/d3-transition-3.0.8.tgz", - "integrity": "sha512-ew63aJfQ/ms7QQ4X7pk5NxQ9fZH/z+i24ZfJ6tJSfqxJMrYLiK01EAs2/Rtw/JreGUsS3pLPNV644qXFGnoZNQ==", + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/@types/d3-transition/-/d3-transition-3.0.9.tgz", + "integrity": "sha512-uZS5shfxzO3rGlu0cC3bjmMFKsXv+SmZZcgp0KD22ts4uGXp5EVYGzu/0YdwZeKmddhcAccYtREJKkPfXkZuCg==", + "license": "MIT", "dependencies": { "@types/d3-selection": "*" } @@ -4718,46 +4415,53 @@ "version": "3.0.8", "resolved": "https://registry.npmjs.org/@types/d3-zoom/-/d3-zoom-3.0.8.tgz", "integrity": "sha512-iqMC4/YlFCSlO8+2Ii1GGGliCAY4XdeG748w5vQUbevlbDu0zSjH/+jojorQVBK/se0j6DUFNPBGSqD3YWYnDw==", + "license": "MIT", "dependencies": { "@types/d3-interpolate": "*", "@types/d3-selection": "*" } }, "node_modules/@types/eslint": { - "version": "8.56.10", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.56.10.tgz", - "integrity": "sha512-Shavhk87gCtY2fhXDctcfS3e6FdxWkCx1iUZ9eEUbh7rTqlZT0/IzOkCOVt0fCjcFuZ9FPYfuezTBImfHCDBGQ==", + "version": "8.56.12", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.56.12.tgz", + "integrity": "sha512-03ruubjWyOHlmljCVoxSuNDdmfZDzsrrz0P2LeJsOXr+ZwFQ+0yQIwNCwt/GYhV7Z31fgtXJTAEs+FYlEL851g==", "dev": true, + "license": "MIT", "dependencies": { "@types/estree": "*", "@types/json-schema": "*" } }, "node_modules/@types/estree": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", - "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", - "dev": true + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", + "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", + "dev": true, + "license": "MIT" }, "node_modules/@types/geojson": { - "version": "7946.0.14", - "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.14.tgz", - "integrity": "sha512-WCfD5Ht3ZesJUsONdhvm84dmzWOiOzOAqOncN0++w0lBw1o8OuDNJF2McvvCef/yBqb/HYRahp1BYtODFQ8bRg==" + "version": "7946.0.15", + "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.15.tgz", + "integrity": "sha512-9oSxFzDCT2Rj6DfcHF8G++jxBKS7mBqXl5xrRW+Kbvjry6Uduya2iiwqHPhVXpasAVMBYKkEPGgKhd3+/HZ6xA==", + "license": "MIT" }, "node_modules/@types/history": { "version": "4.7.11", "resolved": "https://registry.npmjs.org/@types/history/-/history-4.7.11.tgz", - "integrity": "sha512-qjDJRrmvBMiTx+jyLxvLfJU7UznFuokDv4f3WRuriHKERccVpFU+8XMQUAbDzoiJCsmexxRExQeMwwCdamSKDA==" + "integrity": "sha512-qjDJRrmvBMiTx+jyLxvLfJU7UznFuokDv4f3WRuriHKERccVpFU+8XMQUAbDzoiJCsmexxRExQeMwwCdamSKDA==", + "license": "MIT" }, "node_modules/@types/istanbul-lib-coverage": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", - "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==" + "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", + "license": "MIT" }, "node_modules/@types/istanbul-lib-report": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", + "license": "MIT", "dependencies": { "@types/istanbul-lib-coverage": "*" } @@ -4766,14 +4470,16 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", + "license": "MIT", "dependencies": { "@types/istanbul-lib-report": "*" } }, "node_modules/@types/jest": { - "version": "29.5.12", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.12.tgz", - "integrity": "sha512-eDC8bTvT/QhYdxJAulQikueigY5AsdBRH2yDKW3yveW7svY3+DzN84/2NUgkw10RTiJbWqZrTtoGVdYlvFJdLw==", + "version": "29.5.14", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.14.tgz", + "integrity": "sha512-ZN+4sdnLUbo8EVvVc2ao0GFW6oVrQRPn4K2lglySj7APvSrgzxHiNNK99us4WDMi57xxA2yggblIAMNhXOotLQ==", + "license": "MIT", "dependencies": { "expect": "^29.0.0", "pretty-format": "^29.0.0" @@ -4783,6 +4489,7 @@ "version": "5.2.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "license": "MIT", "engines": { "node": ">=10" }, @@ -4794,6 +4501,7 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", "ansi-styles": "^5.0.0", @@ -4806,106 +4514,122 @@ "node_modules/@types/jest/node_modules/react-is": { "version": "18.3.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", - "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==" + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "license": "MIT" }, "node_modules/@types/json-schema": { "version": "7.0.15", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/json5": { "version": "0.0.29", "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/linkify-it": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@types/linkify-it/-/linkify-it-3.0.5.tgz", - "integrity": "sha512-yg6E+u0/+Zjva+buc3EIb+29XEg4wltq7cSmd4Uc2EE/1nUVmxyzpX6gUXD0V8jIrG0r7YeOGVIbYRkxeooCtw==", - "dev": true + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@types/linkify-it/-/linkify-it-5.0.0.tgz", + "integrity": "sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q==", + "dev": true, + "license": "MIT" }, "node_modules/@types/lodash": { - "version": "4.17.0", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.0.tgz", - "integrity": "sha512-t7dhREVv6dbNj0q17X12j7yDG4bD/DHYX7o5/DbDxobP0HnGPgpRz2Ej77aL7TZT3DSw13fqUTj8J4mMnqa7WA==" + "version": "4.17.14", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.14.tgz", + "integrity": "sha512-jsxagdikDiDBeIRaPYtArcT8my4tN1og7MtMRquFT3XNA6axxyHDRUemqDz/taRDdOUn0GnGHRCuff4q48sW9A==", + "license": "MIT" }, "node_modules/@types/lodash-es": { "version": "4.17.12", "resolved": "https://registry.npmjs.org/@types/lodash-es/-/lodash-es-4.17.12.tgz", "integrity": "sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ==", "dev": true, + "license": "MIT", "dependencies": { "@types/lodash": "*" } }, "node_modules/@types/markdown-it": { - "version": "12.2.3", - "resolved": "https://registry.npmjs.org/@types/markdown-it/-/markdown-it-12.2.3.tgz", - "integrity": "sha512-GKMHFfv3458yYy+v/N8gjufHO6MSZKCOXpZc5GXIWWy8uldwfmPn98vp81gZ5f9SVw8YYBctgfJ22a2d7AOMeQ==", + "version": "14.1.2", + "resolved": "https://registry.npmjs.org/@types/markdown-it/-/markdown-it-14.1.2.tgz", + "integrity": "sha512-promo4eFwuiW+TfGxhi+0x3czqTYJkG8qB17ZUJiVF10Xm7NLVRSLUsfRTU/6h1e24VvRnXCx+hG7li58lkzog==", "dev": true, + "license": "MIT", "dependencies": { - "@types/linkify-it": "*", - "@types/mdurl": "*" + "@types/linkify-it": "^5", + "@types/mdurl": "^2" } }, "node_modules/@types/mdurl": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@types/mdurl/-/mdurl-1.0.5.tgz", - "integrity": "sha512-6L6VymKTzYSrEf4Nev4Xa1LCHKrlTlYCBMTlQKFuddo1CvQcE52I0mwfOJayueUC7MJuXOeHTcIU683lzd0cUA==", - "dev": true + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@types/mdurl/-/mdurl-2.0.0.tgz", + "integrity": "sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg==", + "dev": true, + "license": "MIT" }, "node_modules/@types/minimist": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.5.tgz", "integrity": "sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/node": { - "version": "16.18.96", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.96.tgz", - "integrity": "sha512-84iSqGXoO+Ha16j8pRZ/L90vDMKX04QTYMTfYeE1WrjWaZXuchBehGUZEpNgx7JnmlrIHdnABmpjrQjhCnNldQ==" + "version": "16.18.124", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.124.tgz", + "integrity": "sha512-8ADCm5WzM/IpWxjs1Jhtwo6j+Fb8z4yr/CobP5beUUPdyCI0mg87/bqQYxNcqnhZ24Dc9RME8SQWu5eI/FmSGA==", + "license": "MIT" }, "node_modules/@types/normalize-package-data": { "version": "2.4.4", "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz", "integrity": "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/parse-json": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz", "integrity": "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/prop-types": { - "version": "15.7.12", - "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.12.tgz", - "integrity": "sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==" + "version": "15.7.14", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.14.tgz", + "integrity": "sha512-gNMvNH49DJ7OJYv+KAKn0Xp45p8PLl6zo2YnvDIbTd4J6MER2BmWN49TG7n9LvkyihINxeKW8+3bfS2yDC9dzQ==", + "license": "MIT" }, "node_modules/@types/react": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.1.tgz", - "integrity": "sha512-V0kuGBX3+prX+DQ/7r2qsv1NsdfnCLnTgnRJ1pYnxykBhGMz+qj+box5lq7XsO5mtZsBqpjwwTu/7wszPfMBcw==", + "version": "18.3.18", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.18.tgz", + "integrity": "sha512-t4yC+vtgnkYjNSKlFx1jkAhH8LgTo2N/7Qvi83kdEaUtMDiwpbLAktKDaAMlRcJ5eSxZkH74eEGt1ky31d7kfQ==", + "license": "MIT", "dependencies": { "@types/prop-types": "*", "csstype": "^3.0.2" } }, "node_modules/@types/react-dom": { - "version": "18.3.0", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.0.tgz", - "integrity": "sha512-EhwApuTmMBmXuFOikhQLIBUn6uFg81SwLMOAUgodJF14SOBOCMdU04gDoYi0WOJJHD144TL32z4yDqCW3dnkQg==", + "version": "18.3.5", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.5.tgz", + "integrity": "sha512-P4t6saawp+b/dFrUr2cvkVsfvPguwsxtH6dNIYRllMsefqFzkZk5UIjzyDOv5g1dXIPdG4Sp1yCR4Z6RCUsG/Q==", "dev": true, - "dependencies": { - "@types/react": "*" + "license": "MIT", + "peerDependencies": { + "@types/react": "^18.0.0" } }, "node_modules/@types/react-router": { "version": "5.1.20", "resolved": "https://registry.npmjs.org/@types/react-router/-/react-router-5.1.20.tgz", "integrity": "sha512-jGjmu/ZqS7FjSH6owMcD5qpq19+1RS9DeVRqfl1FeBMxTDQAGwlMWOcs52NDoXaNKyG3d1cYQFMs9rCrb88o9Q==", + "license": "MIT", "dependencies": { "@types/history": "^4.7.11", "@types/react": "*" @@ -4915,6 +4639,7 @@ "version": "5.3.3", "resolved": "https://registry.npmjs.org/@types/react-router-dom/-/react-router-dom-5.3.3.tgz", "integrity": "sha512-kpqnYK4wcdm5UaWI3fLcELopqLrHgLqNsdpHauzlQktfkHL3npOSwtj1Uz9oKBAzs7lFtVkV8j83voAz2D8fhw==", + "license": "MIT", "dependencies": { "@types/history": "^4.7.11", "@types/react": "*", @@ -4922,10 +4647,11 @@ } }, "node_modules/@types/react-test-renderer": { - "version": "18.3.0", - "resolved": "https://registry.npmjs.org/@types/react-test-renderer/-/react-test-renderer-18.3.0.tgz", - "integrity": "sha512-HW4MuEYxfDbOHQsVlY/XtOvNHftCVEPhJF2pQXXwcUiUF+Oyb0usgp48HSgpK5rt8m9KZb22yqOeZm+rrVG8gw==", + "version": "19.0.0", + "resolved": "https://registry.npmjs.org/@types/react-test-renderer/-/react-test-renderer-19.0.0.tgz", + "integrity": "sha512-qDVnNybqFm2eZKJ4jD34EvRd6VHD67KjgnWaEMM0Id9L22EpWe3nOSVKHWL1XWRCxUWe3lhXwlEeCKD1BlJCQA==", "dev": true, + "license": "MIT", "dependencies": { "@types/react": "*" } @@ -4933,18 +4659,21 @@ "node_modules/@types/resize-observer-browser": { "version": "0.1.11", "resolved": "https://registry.npmjs.org/@types/resize-observer-browser/-/resize-observer-browser-0.1.11.tgz", - "integrity": "sha512-cNw5iH8JkMkb3QkCoe7DaZiawbDQEUX8t7iuQaRTyLOyQCR2h+ibBD4GJt7p5yhUHrlOeL7ZtbxNHeipqNsBzQ==" + "integrity": "sha512-cNw5iH8JkMkb3QkCoe7DaZiawbDQEUX8t7iuQaRTyLOyQCR2h+ibBD4GJt7p5yhUHrlOeL7ZtbxNHeipqNsBzQ==", + "license": "MIT" }, "node_modules/@types/semver": { "version": "7.5.8", "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz", "integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/stack-utils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", - "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==" + "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", + "license": "MIT" }, "node_modules/@types/statuses": { "version": "2.0.5", @@ -4958,6 +4687,7 @@ "resolved": "https://registry.npmjs.org/@types/testing-library__jest-dom/-/testing-library__jest-dom-5.14.9.tgz", "integrity": "sha512-FSYhIjFlfOpGSRyVoMBMuS3ws5ehFQODymf3vlI7U1K8c7PHwWwFY7VREfmsuzHSOnoKs/9/Y983ayOs7eRzqw==", "dev": true, + "license": "MIT", "dependencies": { "@types/jest": "*" } @@ -4970,9 +4700,10 @@ "license": "MIT" }, "node_modules/@types/yargs": { - "version": "17.0.32", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz", - "integrity": "sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==", + "version": "17.0.33", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.33.tgz", + "integrity": "sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==", + "license": "MIT", "dependencies": { "@types/yargs-parser": "*" } @@ -4980,13 +4711,15 @@ "node_modules/@types/yargs-parser": { "version": "21.0.3", "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", - "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==" + "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", + "license": "MIT" }, "node_modules/@typescript-eslint/eslint-plugin": { "version": "5.62.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz", "integrity": "sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==", "dev": true, + "license": "MIT", "dependencies": { "@eslint-community/regexpp": "^4.4.0", "@typescript-eslint/scope-manager": "5.62.0", @@ -5016,26 +4749,12 @@ } } }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/semver": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", - "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, + "license": "ISC", "bin": { "semver": "bin/semver.js" }, @@ -5043,17 +4762,12 @@ "node": ">=10" } }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, "node_modules/@typescript-eslint/experimental-utils": { "version": "5.62.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.62.0.tgz", "integrity": "sha512-RTXpeB3eMkpoclG3ZHft6vG/Z30azNHuqY6wKPBHlVMZFuEvrtlEDe8gMqDb+SO+9hjC/pLekeSCryf9vMZlCw==", "dev": true, + "license": "MIT", "dependencies": { "@typescript-eslint/utils": "5.62.0" }, @@ -5073,6 +4787,7 @@ "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.62.0.tgz", "integrity": "sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "@typescript-eslint/scope-manager": "5.62.0", "@typescript-eslint/types": "5.62.0", @@ -5100,6 +4815,7 @@ "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", "dev": true, + "license": "MIT", "dependencies": { "@typescript-eslint/types": "5.62.0", "@typescript-eslint/visitor-keys": "5.62.0" @@ -5117,6 +4833,7 @@ "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz", "integrity": "sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==", "dev": true, + "license": "MIT", "dependencies": { "@typescript-eslint/typescript-estree": "5.62.0", "@typescript-eslint/utils": "5.62.0", @@ -5144,6 +4861,7 @@ "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", "dev": true, + "license": "MIT", "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, @@ -5157,6 +4875,7 @@ "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "@typescript-eslint/types": "5.62.0", "@typescript-eslint/visitor-keys": "5.62.0", @@ -5179,26 +4898,12 @@ } } }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", - "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, + "license": "ISC", "bin": { "semver": "bin/semver.js" }, @@ -5206,17 +4911,12 @@ "node": ">=10" } }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, "node_modules/@typescript-eslint/utils": { "version": "5.62.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz", "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==", "dev": true, + "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@types/json-schema": "^7.0.9", @@ -5243,6 +4943,7 @@ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^4.1.1" @@ -5256,30 +4957,17 @@ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", "dev": true, + "license": "BSD-2-Clause", "engines": { "node": ">=4.0" } }, - "node_modules/@typescript-eslint/utils/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/@typescript-eslint/utils/node_modules/semver": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", - "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, + "license": "ISC", "bin": { "semver": "bin/semver.js" }, @@ -5287,17 +4975,12 @@ "node": ">=10" } }, - "node_modules/@typescript-eslint/utils/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, "node_modules/@typescript-eslint/visitor-keys": { "version": "5.62.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", "dev": true, + "license": "MIT", "dependencies": { "@typescript-eslint/types": "5.62.0", "eslint-visitor-keys": "^3.3.0" @@ -5311,16 +4994,18 @@ } }, "node_modules/@ungap/structured-clone": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", - "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", - "dev": true + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.1.tgz", + "integrity": "sha512-fEzPV3hSkSMltkw152tJKNARhOupqbH96MZWyRjNaYZOMIzbrTeQDG+MTc6Mr2pgzFQzFxAfmhGDNP5QK++2ZA==", + "dev": true, + "license": "ISC" }, "node_modules/@vitejs/plugin-react": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-3.1.0.tgz", "integrity": "sha512-AfgcRL8ZBhAlc3BFdigClmTUMISmmzHn7sB2h9U1odvc5U/MjWXsAaz18b/WoppUTDBzxOJwo2VdClfUcItu9g==", "dev": true, + "license": "MIT", "dependencies": { "@babel/core": "^7.20.12", "@babel/plugin-transform-react-jsx-self": "^7.18.6", @@ -5332,7 +5017,20 @@ "node": "^14.18.0 || >=16.0.0" }, "peerDependencies": { - "vite": "^4.5.4" + "vite": "^4.1.0-beta.0" + } + }, + "node_modules/@vitejs/plugin-react/node_modules/magic-string": { + "version": "0.27.0", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.27.0.tgz", + "integrity": "sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.4.13" + }, + "engines": { + "node": ">=12" } }, "node_modules/@vitest/expect": { @@ -5340,6 +5038,7 @@ "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-0.29.8.tgz", "integrity": "sha512-xlcVXn5I5oTq6NiZSY3ykyWixBxr5mG8HYtjvpgg6KaqHm0mvhX18xuwl5YGxIRNt/A5jidd7CWcNHrSvgaQqQ==", "dev": true, + "license": "MIT", "dependencies": { "@vitest/spy": "0.29.8", "@vitest/utils": "0.29.8", @@ -5351,6 +5050,7 @@ "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-0.29.8.tgz", "integrity": "sha512-FzdhnRDwEr/A3Oo1jtIk/B952BBvP32n1ObMEb23oEJNO+qO5cBet6M2XWIDQmA7BDKGKvmhUf2naXyp/2JEwQ==", "dev": true, + "license": "MIT", "dependencies": { "@vitest/utils": "0.29.8", "p-limit": "^4.0.0", @@ -5362,6 +5062,7 @@ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", "dev": true, + "license": "MIT", "dependencies": { "yocto-queue": "^1.0.0" }, @@ -5373,10 +5074,11 @@ } }, "node_modules/@vitest/runner/node_modules/yocto-queue": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz", - "integrity": "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.1.1.tgz", + "integrity": "sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==", "dev": true, + "license": "MIT", "engines": { "node": ">=12.20" }, @@ -5389,6 +5091,7 @@ "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-0.29.8.tgz", "integrity": "sha512-VdjBe9w34vOMl5I5mYEzNX8inTxrZ+tYUVk9jxaZJmHFwmDFC/GV3KBFTA/JKswr3XHvZL+FE/yq5EVhb6pSAw==", "dev": true, + "license": "MIT", "dependencies": { "tinyspy": "^1.0.2" } @@ -5398,6 +5101,7 @@ "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-0.29.8.tgz", "integrity": "sha512-qGzuf3vrTbnoY+RjjVVIBYfuWMjn3UMUqyQtdGNZ6ZIIyte7B37exj6LaVkrZiUTvzSadVvO/tJm8AEgbGCBPg==", "dev": true, + "license": "MIT", "dependencies": { "cli-truncate": "^3.1.0", "diff": "^5.1.0", @@ -5409,20 +5113,23 @@ "version": "2.36.0", "resolved": "https://registry.npmjs.org/@zeit/schemas/-/schemas-2.36.0.tgz", "integrity": "sha512-7kjMwcChYEzMKjeex9ZFXkt1AyNov9R5HZtjBKVsmVpw7pa7ZtlCGvCBC2vnnXctaYN+aRI61HjIqeetZW5ROg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/abab": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", "deprecated": "Use your platform's native atob() and btoa() methods instead", - "dev": true + "dev": true, + "license": "BSD-3-Clause" }, "node_modules/accepts": { "version": "1.3.8", "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", "dev": true, + "license": "MIT", "dependencies": { "mime-types": "~2.1.34", "negotiator": "0.6.3" @@ -5432,10 +5139,11 @@ } }, "node_modules/acorn": { - "version": "8.11.3", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", - "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", + "version": "8.14.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", + "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", "dev": true, + "license": "MIT", "bin": { "acorn": "bin/acorn" }, @@ -5448,6 +5156,7 @@ "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-7.0.1.tgz", "integrity": "sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==", "dev": true, + "license": "MIT", "dependencies": { "acorn": "^8.1.0", "acorn-walk": "^8.0.2" @@ -5458,15 +5167,20 @@ "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", "dev": true, + "license": "MIT", "peerDependencies": { "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, "node_modules/acorn-walk": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.2.tgz", - "integrity": "sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==", + "version": "8.3.4", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.4.tgz", + "integrity": "sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==", "dev": true, + "license": "MIT", + "dependencies": { + "acorn": "^8.11.0" + }, "engines": { "node": ">=0.4.0" } @@ -5476,6 +5190,7 @@ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", "dev": true, + "license": "MIT", "dependencies": { "debug": "4" }, @@ -5488,6 +5203,7 @@ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, + "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -5504,10 +5220,33 @@ "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==", "dev": true, + "license": "ISC", "dependencies": { "string-width": "^4.1.0" } }, + "node_modules/ansi-align/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/ansi-align/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/ansi-escapes": { "version": "4.3.2", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", @@ -5542,6 +5281,7 @@ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -5550,6 +5290,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -5564,12 +5305,15 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/anymatch": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "license": "ISC", "dependencies": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" @@ -5578,6 +5322,19 @@ "node": ">= 8" } }, + "node_modules/anymatch/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/arch": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz", @@ -5596,37 +5353,42 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "license": "MIT" }, "node_modules/arg": { "version": "5.0.2", "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/argparse": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true + "dev": true, + "license": "Python-2.0" }, "node_modules/aria-query": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz", "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==", "dev": true, + "license": "Apache-2.0", "dependencies": { "dequal": "^2.0.3" } }, "node_modules/array-buffer-byte-length": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", - "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz", + "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.5", - "is-array-buffer": "^3.0.4" + "call-bound": "^1.0.3", + "is-array-buffer": "^3.0.5" }, "engines": { "node": ">= 0.4" @@ -5640,6 +5402,7 @@ "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz", "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", @@ -5660,6 +5423,7 @@ "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -5669,6 +5433,7 @@ "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz", "integrity": "sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", @@ -5689,6 +5454,7 @@ "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.5.tgz", "integrity": "sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", @@ -5705,15 +5471,16 @@ } }, "node_modules/array.prototype.flat": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz", - "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==", + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.3.tgz", + "integrity": "sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "es-shim-unscopables": "^1.0.0" + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-shim-unscopables": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -5723,15 +5490,16 @@ } }, "node_modules/array.prototype.flatmap": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz", - "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==", + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.3.tgz", + "integrity": "sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "es-shim-unscopables": "^1.0.0" + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-shim-unscopables": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -5740,45 +5508,37 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/array.prototype.toreversed": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/array.prototype.toreversed/-/array.prototype.toreversed-1.1.2.tgz", - "integrity": "sha512-wwDCoT4Ck4Cz7sLtgUmzR5UV3YF5mFHUlbChCzZBQZ+0m2cl/DH3tKgvphv1nKgFsJ48oCSg6p91q2Vm0I/ZMA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "es-shim-unscopables": "^1.0.0" - } - }, "node_modules/array.prototype.tosorted": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.3.tgz", - "integrity": "sha512-/DdH4TiTmOKzyQbp/eadcCVexiCb36xJg7HshYOYJnNZFDj33GEv0P7GxsynpShhq4OLYJzbGcBDkLsDt7MnNg==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.4.tgz", + "integrity": "sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.5", + "call-bind": "^1.0.7", "define-properties": "^1.2.1", - "es-abstract": "^1.22.3", - "es-errors": "^1.1.0", + "es-abstract": "^1.23.3", + "es-errors": "^1.3.0", "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" } }, "node_modules/arraybuffer.prototype.slice": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", - "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz", + "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==", "dev": true, + "license": "MIT", "dependencies": { "array-buffer-byte-length": "^1.0.1", - "call-bind": "^1.0.5", + "call-bind": "^1.0.8", "define-properties": "^1.2.1", - "es-abstract": "^1.22.3", - "es-errors": "^1.2.1", - "get-intrinsic": "^1.2.3", - "is-array-buffer": "^3.0.4", - "is-shared-array-buffer": "^1.0.2" + "es-abstract": "^1.23.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "is-array-buffer": "^3.0.4" }, "engines": { "node": ">= 0.4" @@ -5792,6 +5552,7 @@ "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -5801,6 +5562,7 @@ "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", "dev": true, + "license": "MIT", "engines": { "node": "*" } @@ -5809,13 +5571,15 @@ "version": "0.0.8", "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.8.tgz", "integrity": "sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/astral-regex": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -5824,12 +5588,13 @@ "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/autoprefixer": { - "version": "10.4.19", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.19.tgz", - "integrity": "sha512-BaENR2+zBZ8xXhM4pUaKUxlVdxZ0EZhjvbopwnXmxRUfqDmwSpC2lAi/QXvx7NRdPCo1WKEcEF6mV64si1z4Ew==", + "version": "10.4.20", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.20.tgz", + "integrity": "sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==", "funding": [ { "type": "opencollective", @@ -5844,12 +5609,13 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { - "browserslist": "^4.23.0", - "caniuse-lite": "^1.0.30001599", + "browserslist": "^4.23.3", + "caniuse-lite": "^1.0.30001646", "fraction.js": "^4.3.7", "normalize-range": "^0.1.2", - "picocolors": "^1.0.0", + "picocolors": "^1.0.1", "postcss-value-parser": "^4.2.0" }, "bin": { @@ -5867,6 +5633,7 @@ "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", "dev": true, + "license": "MIT", "dependencies": { "possible-typed-array-names": "^1.0.0" }, @@ -5878,21 +5645,23 @@ } }, "node_modules/axe-core": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.7.0.tgz", - "integrity": "sha512-M0JtH+hlOL5pLQwHOLNYZaXuhqmvS8oExsqB1SBYgA4Dk7u/xx+YdGHXaK5pyUfed5mYXdlYiphWq3G8cRi5JQ==", + "version": "4.10.2", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.10.2.tgz", + "integrity": "sha512-RE3mdQ7P3FRSe7eqCWoeQ/Z9QXrtniSjp1wUjt5nRC3WIpz5rSCve6o3fsZ2aCpJtrZjSZgjwXAoTO5k4tEI0w==", "dev": true, + "license": "MPL-2.0", "engines": { "node": ">=4" } }, "node_modules/axobject-query": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-3.2.1.tgz", - "integrity": "sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz", + "integrity": "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==", "dev": true, - "dependencies": { - "dequal": "^2.0.3" + "license": "Apache-2.0", + "engines": { + "node": ">= 0.4" } }, "node_modules/babel-plugin-macros": { @@ -5900,6 +5669,7 @@ "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz", "integrity": "sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/runtime": "^7.12.5", "cosmiconfig": "^7.0.0", @@ -5911,13 +5681,14 @@ } }, "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.4.11", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.11.tgz", - "integrity": "sha512-sMEJ27L0gRHShOh5G54uAAPaiCOygY/5ratXuiyb2G46FmlSpc9eFCzYVyDiPxfNbwzA7mYahmjQc5q+CZQ09Q==", + "version": "0.4.12", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.12.tgz", + "integrity": "sha512-CPWT6BwvhrTO2d8QVorhTCQw9Y43zOu7G9HigcfxvepOU6b8o3tcWad6oVgZIsZCTt42FFv97aA7ZJsbM4+8og==", "dev": true, + "license": "MIT", "dependencies": { "@babel/compat-data": "^7.22.6", - "@babel/helper-define-polyfill-provider": "^0.6.2", + "@babel/helper-define-polyfill-provider": "^0.6.3", "semver": "^6.3.1" }, "peerDependencies": { @@ -5925,25 +5696,27 @@ } }, "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.10.4", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.4.tgz", - "integrity": "sha512-25J6I8NGfa5YkCDogHRID3fVCadIR8/pGl1/spvCkzb6lVn6SR3ojpx9nOn9iEBcUsjY24AmdKm5khcfKdylcg==", + "version": "0.10.6", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.6.tgz", + "integrity": "sha512-b37+KR2i/khY5sKmWNVQAnitvquQbNdWy6lJdsr0kmquCKEEUgMKK4SboVM3HtfnZilfjr4MMQ7vY58FVWDtIA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.6.1", - "core-js-compat": "^3.36.1" + "@babel/helper-define-polyfill-provider": "^0.6.2", + "core-js-compat": "^3.38.0" }, "peerDependencies": { "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, "node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.2.tgz", - "integrity": "sha512-2R25rQZWP63nGwaAswvDazbPXfrM3HwVoBXK6HcqeKrSrL/JqcC/rDcf95l4r7LXLyxDXc8uQDa064GubtCABg==", + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.3.tgz", + "integrity": "sha512-LiWSbl4CRSIa5x/JAU6jZiG9eit9w6mz+yVMFwDE83LAWvt0AfGBoZ7HS/mkhrKuh2ZlzfVZYKoLjXdqw6Yt7Q==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.6.2" + "@babel/helper-define-polyfill-provider": "^0.6.3" }, "peerDependencies": { "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" @@ -5953,13 +5726,15 @@ "version": "0.4.24", "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.24.tgz", "integrity": "sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/babel-preset-react-app": { "version": "10.0.1", "resolved": "https://registry.npmjs.org/babel-preset-react-app/-/babel-preset-react-app-10.0.1.tgz", "integrity": "sha512-b0D9IZ1WhhCWkrTXyFuIIgqGzSkRIH5D5AmB0bXbzYAB1OBAwHcUeyWW2LorutLWF5btNo/N7r/cIdmvvKJlYg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/core": "^7.16.0", "@babel/plugin-proposal-class-properties": "^7.16.0", @@ -5982,12 +5757,14 @@ "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "license": "MIT" }, "node_modules/big-integer": { "version": "1.6.52", "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.52.tgz", "integrity": "sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==", + "license": "Unlicense", "engines": { "node": ">=0.6" } @@ -5996,6 +5773,8 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "dev": true, + "license": "MIT", "engines": { "node": ">=8" }, @@ -6007,18 +5786,21 @@ "version": "3.7.2", "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/boolbase": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==" + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "license": "ISC" }, "node_modules/boxen": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/boxen/-/boxen-7.0.0.tgz", "integrity": "sha512-j//dBVuyacJbvW+tvZ9HuH03fZ46QcaKvvhZickZqtB271DxJ7SNRSNxrV/dZX0085m7hISRZWbzWlJvx/rHSg==", "dev": true, + "license": "MIT", "dependencies": { "ansi-align": "^3.0.1", "camelcase": "^7.0.0", @@ -6036,35 +5818,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/boxen/node_modules/ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/boxen/node_modules/ansi-styles": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/boxen/node_modules/chalk": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", - "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz", + "integrity": "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==", "dev": true, + "license": "MIT", "engines": { "node": "^12.17.0 || ^14.13 || >=16.0.0" }, @@ -6072,43 +5831,12 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/boxen/node_modules/string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", - "dev": true, - "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/boxen/node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "dev": true, - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, "node_modules/boxen/node_modules/type-fest": { "version": "2.19.0", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", "dev": true, + "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=12.20" }, @@ -6116,27 +5844,11 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/boxen/node_modules/wrap-ansi": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", - "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, "node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -6158,6 +5870,7 @@ "version": "3.7.0", "resolved": "https://registry.npmjs.org/broadcast-channel/-/broadcast-channel-3.7.0.tgz", "integrity": "sha512-cIAKJXAxGJceNZGTZSBzMxzyOn72cVgPnKx4dc6LRjQgbaJUQqhy5rzL3zbMxkMWsGKkv2hSFkPRMEXfoMZ2Mg==", + "license": "MIT", "dependencies": { "@babel/runtime": "^7.7.2", "detect-node": "^2.1.0", @@ -6170,9 +5883,9 @@ } }, "node_modules/browserslist": { - "version": "4.23.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz", - "integrity": "sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==", + "version": "4.24.4", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.4.tgz", + "integrity": "sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==", "funding": [ { "type": "opencollective", @@ -6187,11 +5900,12 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { - "caniuse-lite": "^1.0.30001587", - "electron-to-chromium": "^1.4.668", - "node-releases": "^2.0.14", - "update-browserslist-db": "^1.0.13" + "caniuse-lite": "^1.0.30001688", + "electron-to-chromium": "^1.5.73", + "node-releases": "^2.0.19", + "update-browserslist-db": "^1.1.1" }, "bin": { "browserslist": "cli.js" @@ -6204,6 +5918,7 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/byline/-/byline-5.0.0.tgz", "integrity": "sha512-s6webAy+R4SR8XVuJWt2V2rGvhnrhxN+9S15GNuTK3wKPOXFF6RNc+8ug2XhH+2s4f+uudG4kUVYmYOQWL2g0Q==", + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -6213,6 +5928,7 @@ "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8" } @@ -6222,21 +5938,53 @@ "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz", "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/call-bind": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", - "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", + "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", "dev": true, + "license": "MIT", "dependencies": { + "call-bind-apply-helpers": "^1.0.0", "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", "get-intrinsic": "^1.2.4", - "set-function-length": "^1.2.1" + "set-function-length": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.1.tgz", + "integrity": "sha512-BhYE+WDaywFg2TBWYNXAE+8B1ATnThNBqXHP5nQu0jWJdVvY2hvkpyB3qOmtmDePiS5/BDQ8wASEWGMWRG148g==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.3.tgz", + "integrity": "sha512-YTd+6wGlNlPxSuri7Y6X8tY2dmm12UMH66RpKMhiX6rsk5wXXnYgbUcOt8kiS31/AjfoTOvCsE+w8nZQLQnzHA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "get-intrinsic": "^1.2.6" }, "engines": { "node": ">= 0.4" @@ -6250,6 +5998,7 @@ "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -6259,6 +6008,7 @@ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-7.0.1.tgz", "integrity": "sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw==", "dev": true, + "license": "MIT", "engines": { "node": ">=14.16" }, @@ -6271,6 +6021,7 @@ "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 6" } @@ -6280,6 +6031,7 @@ "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz", "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==", "dev": true, + "license": "MIT", "dependencies": { "camelcase": "^5.3.1", "map-obj": "^4.0.0", @@ -6297,14 +6049,15 @@ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/caniuse-lite": { - "version": "1.0.30001614", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001614.tgz", - "integrity": "sha512-jmZQ1VpmlRwHgdP1/uiKzgiAuGOfLEJsYFP4+GBou/QQ4U6IOJCB4NP1c+1p9RGLpwObcT94jA5/uO+F1vBbog==", + "version": "1.0.30001695", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001695.tgz", + "integrity": "sha512-vHyLade6wTgI2u1ec3WQBxv+2BrTERV28UXQu9LO6lZ9pYeMk34vjXFLOxo1A4UBA8XTL4njRQZdno/yYaSmWw==", "funding": [ { "type": "opencollective", @@ -6318,13 +6071,15 @@ "type": "github", "url": "https://github.com/sponsors/ai" } - ] + ], + "license": "CC-BY-4.0" }, "node_modules/catharsis": { "version": "0.9.0", "resolved": "https://registry.npmjs.org/catharsis/-/catharsis-0.9.0.tgz", "integrity": "sha512-prMTQVpcns/tzFgFVkVp6ak6RykZyWb3gu8ckUpd6YkTlacOd3DXGJjIpD4Q6zJirizvaiAjSSHlOsA+6sNh2A==", "dev": true, + "license": "MIT", "dependencies": { "lodash": "^4.17.15" }, @@ -6333,10 +6088,11 @@ } }, "node_modules/chai": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.4.1.tgz", - "integrity": "sha512-13sOfMv2+DWduEU+/xbun3LScLoqN17nBeTLUsmDfKdoiC1fr0n9PU4guu4AhRcOVFk/sW8LyZWHuhWtQZiF+g==", + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.5.0.tgz", + "integrity": "sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw==", "dev": true, + "license": "MIT", "dependencies": { "assertion-error": "^1.1.0", "check-error": "^1.0.3", @@ -6344,7 +6100,7 @@ "get-func-name": "^2.0.2", "loupe": "^2.3.6", "pathval": "^1.1.1", - "type-detect": "^4.0.8" + "type-detect": "^4.1.0" }, "engines": { "node": ">=4" @@ -6354,6 +6110,7 @@ "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -6370,6 +6127,7 @@ "resolved": "https://registry.npmjs.org/chalk-template/-/chalk-template-0.4.0.tgz", "integrity": "sha512-/ghrgmhfY8RaSdeo43hNXxpoHAtxdbskUHjPpfqUWGttFgycUhYPGx3YZBCnUCvOa7Doivn1IZec3DEGFoMgLg==", "dev": true, + "license": "MIT", "dependencies": { "chalk": "^4.1.2" }, @@ -6385,6 +6143,7 @@ "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz", "integrity": "sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==", "dev": true, + "license": "MIT", "dependencies": { "get-func-name": "^2.0.2" }, @@ -6393,37 +6152,18 @@ } }, "node_modules/chokidar": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", - "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", + "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", + "license": "MIT", "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" + "readdirp": "^4.0.1" }, "engines": { - "node": ">= 8.10.0" + "node": ">= 14.16.0" }, "funding": { "url": "https://paulmillr.com/funding/" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/chokidar/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" } }, "node_modules/ci-info": { @@ -6436,6 +6176,7 @@ "url": "https://github.com/sponsors/sibiraj-s" } ], + "license": "MIT", "engines": { "node": ">=8" } @@ -6443,18 +6184,21 @@ "node_modules/classcat": { "version": "5.0.5", "resolved": "https://registry.npmjs.org/classcat/-/classcat-5.0.5.tgz", - "integrity": "sha512-JhZUT7JFcQy/EzW605k/ktHtncoo9vnyW/2GspNYwFlN1C/WmjuV/xtS04e9SOkL2sTdw0VAZ2UGCcQ9lR6p6w==" + "integrity": "sha512-JhZUT7JFcQy/EzW605k/ktHtncoo9vnyW/2GspNYwFlN1C/WmjuV/xtS04e9SOkL2sTdw0VAZ2UGCcQ9lR6p6w==", + "license": "MIT" }, "node_modules/classnames": { "version": "2.5.1", "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.5.1.tgz", - "integrity": "sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==" + "integrity": "sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==", + "license": "MIT" }, "node_modules/cli-boxes": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-3.0.0.tgz", "integrity": "sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, @@ -6467,6 +6211,7 @@ "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-3.1.0.tgz", "integrity": "sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA==", "dev": true, + "license": "MIT", "dependencies": { "slice-ansi": "^5.0.0", "string-width": "^5.0.0" @@ -6478,23 +6223,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/cli-truncate/node_modules/ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, "node_modules/cli-truncate/node_modules/ansi-styles": { "version": "6.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -6507,6 +6241,7 @@ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz", "integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -6519,6 +6254,7 @@ "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz", "integrity": "sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^6.0.0", "is-fullwidth-code-point": "^4.0.0" @@ -6530,38 +6266,6 @@ "url": "https://github.com/chalk/slice-ansi?sponsor=1" } }, - "node_modules/cli-truncate/node_modules/string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", - "dev": true, - "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cli-truncate/node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "dev": true, - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, "node_modules/cli-width": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-4.1.0.tgz", @@ -6575,13 +6279,15 @@ "node_modules/client-only": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz", - "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==" + "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==", + "license": "MIT" }, "node_modules/clipboardy": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/clipboardy/-/clipboardy-3.0.0.tgz", "integrity": "sha512-Su+uU5sr1jkUy1sGRpLKjKrvEOVXgSgiSInwa/qeID6aJ07yh+5NWc3h2QfjHjBnfX4LhtFcuAWKUsJ3r+fjbg==", "dev": true, + "license": "MIT", "dependencies": { "arch": "^2.2.0", "execa": "^5.1.1", @@ -6599,6 +6305,7 @@ "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", "dev": true, + "license": "ISC", "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.1", @@ -6608,11 +6315,34 @@ "node": ">=12" } }, + "node_modules/cliui/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/cliui/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/cliui/node_modules/wrap-ansi": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -6629,6 +6359,7 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.2.1.tgz", "integrity": "sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==", + "license": "MIT", "engines": { "node": ">=6" } @@ -6650,6 +6381,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "license": "MIT", "dependencies": { "color-name": "~1.1.4" }, @@ -6660,7 +6392,8 @@ "node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" }, "node_modules/color-string": { "version": "1.9.1", @@ -6676,13 +6409,15 @@ "version": "2.9.3", "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz", "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/combined-stream": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", "dev": true, + "license": "MIT", "dependencies": { "delayed-stream": "~1.0.0" }, @@ -6694,6 +6429,7 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "license": "MIT", "engines": { "node": ">= 10" } @@ -6702,13 +6438,15 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/compressible": { "version": "2.0.18", "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", "dev": true, + "license": "MIT", "dependencies": { "mime-db": ">= 1.43.0 < 2" }, @@ -6721,6 +6459,7 @@ "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", "dev": true, + "license": "MIT", "dependencies": { "accepts": "~1.3.5", "bytes": "3.0.0", @@ -6739,6 +6478,7 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, + "license": "MIT", "dependencies": { "ms": "2.0.0" } @@ -6747,35 +6487,41 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/compute-scroll-into-view": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/compute-scroll-into-view/-/compute-scroll-into-view-2.0.4.tgz", - "integrity": "sha512-y/ZA3BGnxoM/QHHQ2Uy49CLtnWPbt4tTPpEEZiEmmiWBFKjej7nEyH8Ryz54jH0MLXflUYA3Er2zUxPSJu5R+g==" + "integrity": "sha512-y/ZA3BGnxoM/QHHQ2Uy49CLtnWPbt4tTPpEEZiEmmiWBFKjej7nEyH8Ryz54jH0MLXflUYA3Er2zUxPSJu5R+g==", + "license": "MIT" }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "license": "MIT" }, "node_modules/confbox": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.1.7.tgz", - "integrity": "sha512-uJcB/FKZtBMCJpK8MQji6bJHgu1tixKPxRLeGkNzBoOZzpnZUJm0jm2/sBDWcuBx1dYgxV4JU+g5hmNxCyAmdA==", - "dev": true + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.1.8.tgz", + "integrity": "sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==", + "dev": true, + "license": "MIT" }, "node_modules/confusing-browser-globals": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz", "integrity": "sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/content-disposition": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz", "integrity": "sha512-kRGRZw3bLlFISDBgwTSA1TMBFN6J6GWDeubmDE3AF+3+yXL8hTWv8r5rkLbqYXY4RjPk/EzHnClI3zQf1cFmHA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -6784,7 +6530,8 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/cookie": { "version": "0.7.2", @@ -6797,12 +6544,13 @@ } }, "node_modules/core-js-compat": { - "version": "3.37.0", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.37.0.tgz", - "integrity": "sha512-vYq4L+T8aS5UuFg4UwDhc7YNRWVeVZwltad9C/jV3R2LgVOpS9BDr7l/WL6BN0dbV3k1XejPTHqqEzJgsa0frA==", + "version": "3.40.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.40.0.tgz", + "integrity": "sha512-0XEDpr5y5mijvw8Lbc6E5AkjrHfp7eEoPlu36SWeAbcL8fn1G1ANe8DBlo2XoNN89oVpxWwOjYIPVzR4ZvsKCQ==", "dev": true, + "license": "MIT", "dependencies": { - "browserslist": "^4.23.0" + "browserslist": "^4.24.3" }, "funding": { "type": "opencollective", @@ -6810,11 +6558,12 @@ } }, "node_modules/core-js-pure": { - "version": "3.37.0", - "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.37.0.tgz", - "integrity": "sha512-d3BrpyFr5eD4KcbRvQ3FTUx/KWmaDesr7+a3+1+P46IUnNoEt+oiLijPINZMEon7w9oGkIINWxrBAU9DEciwFQ==", + "version": "3.40.0", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.40.0.tgz", + "integrity": "sha512-AtDzVIgRrmRKQai62yuSIN5vNiQjcJakJb4fbhVw3ehxx7Lohphvw9SGNWKhLFqSxC4ilD0g/L1huAYFQU3Q6A==", "dev": true, "hasInstallScript": true, + "license": "MIT", "funding": { "type": "opencollective", "url": "https://opencollective.com/core-js" @@ -6825,6 +6574,7 @@ "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", "dev": true, + "license": "MIT", "dependencies": { "@types/parse-json": "^4.0.0", "import-fresh": "^3.2.1", @@ -6837,19 +6587,21 @@ } }, "node_modules/cross-fetch": { - "version": "3.1.8", - "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.8.tgz", - "integrity": "sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.2.0.tgz", + "integrity": "sha512-Q+xVJLoGOeIMXZmbUK4HYk+69cQH6LudR0Vu/pRm2YlU/hDV9CiS0gKUMaWY5f2NeUH9C1nV3bsTlCo0FsTV1Q==", "dev": true, + "license": "MIT", "dependencies": { - "node-fetch": "^2.6.12" + "node-fetch": "^2.7.0" } }, "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", "dev": true, + "license": "MIT", "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -6863,6 +6615,7 @@ "version": "5.0.2", "resolved": "https://registry.npmjs.org/css-blank-pseudo/-/css-blank-pseudo-5.0.2.tgz", "integrity": "sha512-aCU4AZ7uEcVSUzagTlA9pHciz7aWPKA/YzrEkpdSopJ2pvhIxiQ5sYeMz1/KByxlIo4XBdvMNJAVKMg/GRnhfw==", + "license": "CC0-1.0", "dependencies": { "postcss-selector-parser": "^6.0.10" }, @@ -6878,10 +6631,11 @@ } }, "node_modules/css-functions-list": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/css-functions-list/-/css-functions-list-3.2.2.tgz", - "integrity": "sha512-c+N0v6wbKVxTu5gOBBFkr9BEdBWaqqjQeiJ8QvSRIJOf+UxlJh930m8e6/WNeODIK0mYLFkoONrnj16i2EcvfQ==", + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/css-functions-list/-/css-functions-list-3.2.3.tgz", + "integrity": "sha512-IQOkD3hbR5KrN93MtcYuad6YPuTSUhntLHDuLEbFWE+ff2/XSZNdZG+LcbbIW5AXKg/WFIfYItIzVoHngHXZzA==", "dev": true, + "license": "MIT", "engines": { "node": ">=12 || >=16" } @@ -6890,6 +6644,7 @@ "version": "5.0.2", "resolved": "https://registry.npmjs.org/css-has-pseudo/-/css-has-pseudo-5.0.2.tgz", "integrity": "sha512-q+U+4QdwwB7T9VEW/LyO6CFrLAeLqOykC5mDqJXc7aKZAhDbq7BvGT13VGJe+IwBfdN2o3Xdw2kJ5IxwV1Sc9Q==", + "license": "CC0-1.0", "dependencies": { "@csstools/selector-specificity": "^2.0.1", "postcss-selector-parser": "^6.0.10", @@ -6910,6 +6665,7 @@ "version": "8.0.2", "resolved": "https://registry.npmjs.org/css-prefers-color-scheme/-/css-prefers-color-scheme-8.0.2.tgz", "integrity": "sha512-OvFghizHJ45x7nsJJUSYLyQNTzsCU8yWjxAc/nhPQg1pbs18LMoET8N3kOweFDPy0JV0OSXN2iqRFhPBHYOeMA==", + "license": "CC0-1.0", "engines": { "node": "^14 || ^16 || >=18" }, @@ -6925,6 +6681,7 @@ "version": "5.1.0", "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz", "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==", + "license": "BSD-2-Clause", "dependencies": { "boolbase": "^1.0.0", "css-what": "^6.1.0", @@ -6940,6 +6697,7 @@ "version": "2.3.1", "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz", "integrity": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==", + "license": "MIT", "dependencies": { "mdn-data": "2.0.30", "source-map-js": "^1.0.1" @@ -6952,6 +6710,7 @@ "version": "6.1.0", "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "license": "BSD-2-Clause", "engines": { "node": ">= 6" }, @@ -6963,7 +6722,8 @@ "version": "1.5.1", "resolved": "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz", "integrity": "sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/cssdb": { "version": "7.11.2", @@ -6978,12 +6738,14 @@ "type": "github", "url": "https://github.com/sponsors/csstools" } - ] + ], + "license": "CC0-1.0" }, "node_modules/cssesc": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "license": "MIT", "bin": { "cssesc": "bin/cssesc" }, @@ -6995,6 +6757,7 @@ "version": "5.0.5", "resolved": "https://registry.npmjs.org/csso/-/csso-5.0.5.tgz", "integrity": "sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==", + "license": "MIT", "dependencies": { "css-tree": "~2.2.0" }, @@ -7007,6 +6770,7 @@ "version": "2.2.1", "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.2.1.tgz", "integrity": "sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==", + "license": "MIT", "dependencies": { "mdn-data": "2.0.28", "source-map-js": "^1.0.1" @@ -7019,13 +6783,15 @@ "node_modules/csso/node_modules/mdn-data": { "version": "2.0.28", "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.28.tgz", - "integrity": "sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==" + "integrity": "sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==", + "license": "CC0-1.0" }, "node_modules/cssstyle": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-3.0.0.tgz", "integrity": "sha512-N4u2ABATi3Qplzf0hWbVCdjenim8F3ojEXpBDF5hBpjzW182MjNGLqfmQ0SkSPeQ+V86ZXgeH8aXj6kayd4jgg==", "dev": true, + "license": "MIT", "dependencies": { "rrweb-cssom": "^0.6.0" }, @@ -7036,12 +6802,14 @@ "node_modules/csstype": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", - "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", + "license": "MIT" }, "node_modules/d3": { "version": "7.9.0", "resolved": "https://registry.npmjs.org/d3/-/d3-7.9.0.tgz", "integrity": "sha512-e1U46jVP+w7Iut8Jt8ri1YsPOvFpg46k+K8TpCb0P+zjCkjkPnV7WzfDJzMHy1LnA+wj5pLT1wjO901gLXeEhA==", + "license": "ISC", "dependencies": { "d3-array": "3", "d3-axis": "3", @@ -7082,6 +6850,7 @@ "version": "3.2.4", "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz", "integrity": "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==", + "license": "ISC", "dependencies": { "internmap": "1 - 2" }, @@ -7093,6 +6862,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/d3-axis/-/d3-axis-3.0.0.tgz", "integrity": "sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==", + "license": "ISC", "engines": { "node": ">=12" } @@ -7101,6 +6871,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/d3-brush/-/d3-brush-3.0.0.tgz", "integrity": "sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==", + "license": "ISC", "dependencies": { "d3-dispatch": "1 - 3", "d3-drag": "2 - 3", @@ -7116,6 +6887,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/d3-chord/-/d3-chord-3.0.1.tgz", "integrity": "sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==", + "license": "ISC", "dependencies": { "d3-path": "1 - 3" }, @@ -7127,6 +6899,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", + "license": "ISC", "engines": { "node": ">=12" } @@ -7135,6 +6908,7 @@ "version": "4.0.2", "resolved": "https://registry.npmjs.org/d3-contour/-/d3-contour-4.0.2.tgz", "integrity": "sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA==", + "license": "ISC", "dependencies": { "d3-array": "^3.2.0" }, @@ -7146,6 +6920,7 @@ "version": "6.0.4", "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-6.0.4.tgz", "integrity": "sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A==", + "license": "ISC", "dependencies": { "delaunator": "5" }, @@ -7157,6 +6932,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz", "integrity": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==", + "license": "ISC", "engines": { "node": ">=12" } @@ -7165,6 +6941,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-3.0.0.tgz", "integrity": "sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==", + "license": "ISC", "dependencies": { "d3-dispatch": "1 - 3", "d3-selection": "3" @@ -7177,6 +6954,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-3.0.1.tgz", "integrity": "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==", + "license": "ISC", "dependencies": { "commander": "7", "iconv-lite": "0.6", @@ -7197,21 +6975,11 @@ "node": ">=12" } }, - "node_modules/d3-dsv/node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/d3-ease": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz", "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==", + "license": "BSD-3-Clause", "engines": { "node": ">=12" } @@ -7220,6 +6988,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/d3-fetch/-/d3-fetch-3.0.1.tgz", "integrity": "sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==", + "license": "ISC", "dependencies": { "d3-dsv": "1 - 3" }, @@ -7231,6 +7000,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-3.0.0.tgz", "integrity": "sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==", + "license": "ISC", "dependencies": { "d3-dispatch": "1 - 3", "d3-quadtree": "1 - 3", @@ -7244,6 +7014,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz", "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==", + "license": "ISC", "engines": { "node": ">=12" } @@ -7252,6 +7023,7 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-3.1.1.tgz", "integrity": "sha512-637ln3gXKXOwhalDzinUgY83KzNWZRKbYubaG+fGVuc/dxO64RRljtCTnf5ecMyE1RIdtqpkVcq0IbtU2S8j2Q==", + "license": "ISC", "dependencies": { "d3-array": "2.5.0 - 3" }, @@ -7263,6 +7035,7 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz", "integrity": "sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==", + "license": "ISC", "engines": { "node": ">=12" } @@ -7271,6 +7044,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", + "license": "ISC", "dependencies": { "d3-color": "1 - 3" }, @@ -7282,6 +7056,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz", "integrity": "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==", + "license": "ISC", "engines": { "node": ">=12" } @@ -7290,6 +7065,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/d3-polygon/-/d3-polygon-3.0.1.tgz", "integrity": "sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==", + "license": "ISC", "engines": { "node": ">=12" } @@ -7298,6 +7074,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-3.0.1.tgz", "integrity": "sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==", + "license": "ISC", "engines": { "node": ">=12" } @@ -7306,6 +7083,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/d3-random/-/d3-random-3.0.1.tgz", "integrity": "sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==", + "license": "ISC", "engines": { "node": ">=12" } @@ -7314,6 +7092,7 @@ "version": "4.0.2", "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", + "license": "ISC", "dependencies": { "d3-array": "2.10.0 - 3", "d3-format": "1 - 3", @@ -7329,6 +7108,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-3.1.0.tgz", "integrity": "sha512-A3s5PWiZ9YCXFye1o246KoscMWqf8BsD9eRiJ3He7C9OBaxKhAd5TFCdEx/7VbKtxxTsu//1mMJFrEt572cEyQ==", + "license": "ISC", "dependencies": { "d3-color": "1 - 3", "d3-interpolate": "1 - 3" @@ -7341,6 +7121,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz", "integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==", + "license": "ISC", "engines": { "node": ">=12" } @@ -7349,6 +7130,7 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.2.0.tgz", "integrity": "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==", + "license": "ISC", "dependencies": { "d3-path": "^3.1.0" }, @@ -7360,6 +7142,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz", "integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==", + "license": "ISC", "dependencies": { "d3-array": "2 - 3" }, @@ -7371,6 +7154,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", + "license": "ISC", "dependencies": { "d3-time": "1 - 3" }, @@ -7382,6 +7166,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==", + "license": "ISC", "engines": { "node": ">=12" } @@ -7390,6 +7175,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-3.0.1.tgz", "integrity": "sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==", + "license": "ISC", "dependencies": { "d3-color": "1 - 3", "d3-dispatch": "1 - 3", @@ -7408,6 +7194,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-3.0.0.tgz", "integrity": "sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==", + "license": "ISC", "dependencies": { "d3-dispatch": "1 - 3", "d3-drag": "2 - 3", @@ -7423,13 +7210,15 @@ "version": "1.0.8", "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==", - "dev": true + "dev": true, + "license": "BSD-2-Clause" }, "node_modules/data-urls": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-4.0.0.tgz", "integrity": "sha512-/mMTei/JXPqvFqQtfyTowxmJVwr2PVAeCcDxyFf6LhoOu/09TX2OX3kb2wzi4DMXcfj4OItwDOnhl5oziPnT6g==", "dev": true, + "license": "MIT", "dependencies": { "abab": "^2.0.6", "whatwg-mimetype": "^3.0.0", @@ -7440,14 +7229,15 @@ } }, "node_modules/data-view-buffer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz", - "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", + "integrity": "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.6", + "call-bound": "^1.0.3", "es-errors": "^1.3.0", - "is-data-view": "^1.0.1" + "is-data-view": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -7457,29 +7247,31 @@ } }, "node_modules/data-view-byte-length": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz", - "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz", + "integrity": "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", + "call-bound": "^1.0.3", "es-errors": "^1.3.0", - "is-data-view": "^1.0.1" + "is-data-view": "^1.0.2" }, "engines": { "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/inspect-js" } }, "node_modules/data-view-byte-offset": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz", - "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz", + "integrity": "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.6", + "call-bound": "^1.0.2", "es-errors": "^1.3.0", "is-data-view": "^1.0.1" }, @@ -7491,17 +7283,19 @@ } }, "node_modules/dayjs": { - "version": "1.11.11", - "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.11.tgz", - "integrity": "sha512-okzr3f11N6WuqYtZSvm+F776mB41wRZMhKP+hc34YdW+KmtYYK9iqvHSwo2k9FEH3fhGXvOPV6yz2IcSrfRUDg==" + "version": "1.11.13", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.13.tgz", + "integrity": "sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==", + "license": "MIT" }, "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", "dev": true, + "license": "MIT", "dependencies": { - "ms": "2.1.2" + "ms": "^2.1.3" }, "engines": { "node": ">=6.0" @@ -7517,6 +7311,7 @@ "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -7526,6 +7321,7 @@ "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.1.tgz", "integrity": "sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==", "dev": true, + "license": "MIT", "dependencies": { "decamelize": "^1.1.0", "map-obj": "^1.0.0" @@ -7542,6 +7338,7 @@ "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", "integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -7550,21 +7347,24 @@ "version": "10.4.3", "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz", "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/decode-uri-component": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz", "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==", + "license": "MIT", "engines": { "node": ">=0.10" } }, "node_modules/deep-eql": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.3.tgz", - "integrity": "sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==", + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.4.tgz", + "integrity": "sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==", "dev": true, + "license": "MIT", "dependencies": { "type-detect": "^4.0.0" }, @@ -7577,6 +7377,7 @@ "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", "dev": true, + "license": "MIT", "engines": { "node": ">=4.0.0" } @@ -7585,13 +7386,15 @@ "version": "0.1.4", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/define-data-property": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", "dev": true, + "license": "MIT", "dependencies": { "es-define-property": "^1.0.0", "es-errors": "^1.3.0", @@ -7609,6 +7412,7 @@ "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", "dev": true, + "license": "MIT", "dependencies": { "define-data-property": "^1.0.1", "has-property-descriptors": "^1.0.0", @@ -7625,6 +7429,7 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.0.1.tgz", "integrity": "sha512-8nvh+XBe96aCESrGOqMp/84b13H9cdKbG5P2ejQCh4d4sK9RL4371qou9drQjMhvnPmhWl5hnmqbEE0fXr9Xnw==", + "license": "ISC", "dependencies": { "robust-predicates": "^3.0.2" } @@ -7634,6 +7439,7 @@ "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.4.0" } @@ -7643,26 +7449,43 @@ "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } }, + "node_modules/detect-libc": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", + "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==", + "license": "Apache-2.0", + "optional": true, + "bin": { + "detect-libc": "bin/detect-libc.js" + }, + "engines": { + "node": ">=0.10" + } + }, "node_modules/detect-node": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", - "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==" + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", + "license": "MIT" }, "node_modules/didyoumean": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", - "dev": true + "dev": true, + "license": "Apache-2.0" }, "node_modules/diff": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz", "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=0.3.1" } @@ -7671,6 +7494,7 @@ "version": "29.6.3", "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", + "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } @@ -7680,6 +7504,7 @@ "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", "dev": true, + "license": "MIT", "dependencies": { "path-type": "^4.0.0" }, @@ -7691,13 +7516,15 @@ "version": "1.1.3", "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/doctrine": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", "dev": true, + "license": "Apache-2.0", "dependencies": { "esutils": "^2.0.2" }, @@ -7709,12 +7536,14 @@ "version": "0.5.16", "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz", "integrity": "sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/dom-serializer": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", + "license": "MIT", "dependencies": { "domelementtype": "^2.3.0", "domhandler": "^5.0.2", @@ -7733,7 +7562,8 @@ "type": "github", "url": "https://github.com/sponsors/fb55" } - ] + ], + "license": "BSD-2-Clause" }, "node_modules/domexception": { "version": "4.0.0", @@ -7741,6 +7571,7 @@ "integrity": "sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==", "deprecated": "Use your platform's native DOMException instead", "dev": true, + "license": "MIT", "dependencies": { "webidl-conversions": "^7.0.0" }, @@ -7752,6 +7583,7 @@ "version": "5.0.3", "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "license": "BSD-2-Clause", "dependencies": { "domelementtype": "^2.3.0" }, @@ -7763,9 +7595,10 @@ } }, "node_modules/domutils": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz", - "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==", + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz", + "integrity": "sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==", + "license": "BSD-2-Clause", "dependencies": { "dom-serializer": "^2.0.0", "domelementtype": "^2.3.0", @@ -7779,6 +7612,7 @@ "version": "7.6.2", "resolved": "https://registry.npmjs.org/downshift/-/downshift-7.6.2.tgz", "integrity": "sha512-iOv+E1Hyt3JDdL9yYcOgW7nZ7GQ2Uz6YbggwXvKUSleetYhU2nXD482Rz6CzvM4lvI1At34BYruKAL4swRGxaA==", + "license": "MIT", "dependencies": { "@babel/runtime": "^7.14.8", "compute-scroll-into-view": "^2.0.4", @@ -7790,27 +7624,46 @@ "react": ">=16.12.0" } }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/eastasianwidth": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/electron-to-chromium": { - "version": "1.4.752", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.752.tgz", - "integrity": "sha512-P3QJreYI/AUTcfBVrC4zy9KvnZWekViThgQMX/VpJ+IsOBbcX5JFpORM4qWapwWQ+agb2nYAOyn/4PMXOk0m2Q==" + "version": "1.5.84", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.84.tgz", + "integrity": "sha512-I+DQ8xgafao9Ha6y0qjHHvpZ9OfyA1qKlkHkjywxzniORU2awxyz7f/iVJcULmrF2yrM3nHQf+iDjJtbbexd/g==", + "license": "ISC" }, "node_modules/emoji-regex": { "version": "9.2.2", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/end-of-stream": { "version": "1.4.4", "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "license": "MIT", "dependencies": { "once": "^1.4.0" } @@ -7819,6 +7672,7 @@ "version": "4.5.0", "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "license": "BSD-2-Clause", "engines": { "node": ">=0.12" }, @@ -7831,6 +7685,7 @@ "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", "dev": true, + "license": "MIT", "dependencies": { "is-arrayish": "^0.2.1" } @@ -7839,62 +7694,69 @@ "version": "2.1.4", "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.1.4.tgz", "integrity": "sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==", + "license": "MIT", "dependencies": { "stackframe": "^1.3.4" } }, "node_modules/es-abstract": { - "version": "1.23.3", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz", - "integrity": "sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==", + "version": "1.23.9", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.9.tgz", + "integrity": "sha512-py07lI0wjxAC/DcfK1S6G7iANonniZwTISvdPzk9hzeH0IZIshbuuFxLIU96OyF89Yb9hiqWn8M/bY83KY5vzA==", "dev": true, + "license": "MIT", "dependencies": { - "array-buffer-byte-length": "^1.0.1", - "arraybuffer.prototype.slice": "^1.0.3", + "array-buffer-byte-length": "^1.0.2", + "arraybuffer.prototype.slice": "^1.0.4", "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.7", - "data-view-buffer": "^1.0.1", - "data-view-byte-length": "^1.0.1", - "data-view-byte-offset": "^1.0.0", - "es-define-property": "^1.0.0", + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "data-view-buffer": "^1.0.2", + "data-view-byte-length": "^1.0.2", + "data-view-byte-offset": "^1.0.1", + "es-define-property": "^1.0.1", "es-errors": "^1.3.0", "es-object-atoms": "^1.0.0", - "es-set-tostringtag": "^2.0.3", - "es-to-primitive": "^1.2.1", - "function.prototype.name": "^1.1.6", - "get-intrinsic": "^1.2.4", - "get-symbol-description": "^1.0.2", - "globalthis": "^1.0.3", - "gopd": "^1.0.1", + "es-set-tostringtag": "^2.1.0", + "es-to-primitive": "^1.3.0", + "function.prototype.name": "^1.1.8", + "get-intrinsic": "^1.2.7", + "get-proto": "^1.0.0", + "get-symbol-description": "^1.1.0", + "globalthis": "^1.0.4", + "gopd": "^1.2.0", "has-property-descriptors": "^1.0.2", - "has-proto": "^1.0.3", - "has-symbols": "^1.0.3", + "has-proto": "^1.2.0", + "has-symbols": "^1.1.0", "hasown": "^2.0.2", - "internal-slot": "^1.0.7", - "is-array-buffer": "^3.0.4", + "internal-slot": "^1.1.0", + "is-array-buffer": "^3.0.5", "is-callable": "^1.2.7", - "is-data-view": "^1.0.1", - "is-negative-zero": "^2.0.3", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.3", - "is-string": "^1.0.7", - "is-typed-array": "^1.1.13", - "is-weakref": "^1.0.2", - "object-inspect": "^1.13.1", + "is-data-view": "^1.0.2", + "is-regex": "^1.2.1", + "is-shared-array-buffer": "^1.0.4", + "is-string": "^1.1.1", + "is-typed-array": "^1.1.15", + "is-weakref": "^1.1.0", + "math-intrinsics": "^1.1.0", + "object-inspect": "^1.13.3", "object-keys": "^1.1.1", - "object.assign": "^4.1.5", - "regexp.prototype.flags": "^1.5.2", - "safe-array-concat": "^1.1.2", - "safe-regex-test": "^1.0.3", - "string.prototype.trim": "^1.2.9", - "string.prototype.trimend": "^1.0.8", + "object.assign": "^4.1.7", + "own-keys": "^1.0.1", + "regexp.prototype.flags": "^1.5.3", + "safe-array-concat": "^1.1.3", + "safe-push-apply": "^1.0.0", + "safe-regex-test": "^1.1.0", + "set-proto": "^1.0.0", + "string.prototype.trim": "^1.2.10", + "string.prototype.trimend": "^1.0.9", "string.prototype.trimstart": "^1.0.8", - "typed-array-buffer": "^1.0.2", - "typed-array-byte-length": "^1.0.1", - "typed-array-byte-offset": "^1.0.2", - "typed-array-length": "^1.0.6", - "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.15" + "typed-array-buffer": "^1.0.3", + "typed-array-byte-length": "^1.0.3", + "typed-array-byte-offset": "^1.0.4", + "typed-array-length": "^1.0.7", + "unbox-primitive": "^1.1.0", + "which-typed-array": "^1.1.18" }, "engines": { "node": ">= 0.4" @@ -7904,13 +7766,11 @@ } }, "node_modules/es-define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", - "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", "dev": true, - "dependencies": { - "get-intrinsic": "^1.2.4" - }, + "license": "MIT", "engines": { "node": ">= 0.4" } @@ -7920,40 +7780,45 @@ "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" } }, "node_modules/es-iterator-helpers": { - "version": "1.0.19", - "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.19.tgz", - "integrity": "sha512-zoMwbCcH5hwUkKJkT8kDIBZSz9I6mVG//+lDCinLCGov4+r7NIy0ld8o03M0cJxl2spVf6ESYVS6/gpIfq1FFw==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.2.1.tgz", + "integrity": "sha512-uDn+FE1yrDzyC0pCo961B2IHbdM8y/ACZsKD4dG6WqrjV53BADjwa7D+1aom2rsNVfLyDgU/eigvlJGJ08OQ4w==", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", "define-properties": "^1.2.1", - "es-abstract": "^1.23.3", + "es-abstract": "^1.23.6", "es-errors": "^1.3.0", "es-set-tostringtag": "^2.0.3", "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "globalthis": "^1.0.3", + "get-intrinsic": "^1.2.6", + "globalthis": "^1.0.4", + "gopd": "^1.2.0", "has-property-descriptors": "^1.0.2", - "has-proto": "^1.0.3", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.7", - "iterator.prototype": "^1.1.2", - "safe-array-concat": "^1.1.2" + "has-proto": "^1.2.0", + "has-symbols": "^1.1.0", + "internal-slot": "^1.1.0", + "iterator.prototype": "^1.1.4", + "safe-array-concat": "^1.1.3" }, "engines": { "node": ">= 0.4" } }, "node_modules/es-object-atoms": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", - "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", "dev": true, + "license": "MIT", "dependencies": { "es-errors": "^1.3.0" }, @@ -7962,14 +7827,16 @@ } }, "node_modules/es-set-tostringtag": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", - "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", "dev": true, + "license": "MIT", "dependencies": { - "get-intrinsic": "^1.2.4", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", "has-tostringtag": "^1.0.2", - "hasown": "^2.0.1" + "hasown": "^2.0.2" }, "engines": { "node": ">= 0.4" @@ -7980,19 +7847,21 @@ "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", "dev": true, + "license": "MIT", "dependencies": { "hasown": "^2.0.0" } }, "node_modules/es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz", + "integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==", "dev": true, + "license": "MIT", "dependencies": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" + "is-callable": "^1.2.7", + "is-date-object": "^1.0.5", + "is-symbol": "^1.0.4" }, "engines": { "node": ">= 0.4" @@ -8007,6 +7876,7 @@ "integrity": "sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==", "dev": true, "hasInstallScript": true, + "license": "MIT", "bin": { "esbuild": "bin/esbuild" }, @@ -8039,9 +7909,10 @@ } }, "node_modules/escalade": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", - "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "license": "MIT", "engines": { "node": ">=6" } @@ -8051,6 +7922,7 @@ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, @@ -8063,6 +7935,7 @@ "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "esprima": "^4.0.1", "estraverse": "^5.2.0", @@ -8080,16 +7953,18 @@ } }, "node_modules/eslint": { - "version": "8.57.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", - "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==", + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz", + "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==", + "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.", "dev": true, + "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.6.1", "@eslint/eslintrc": "^2.1.4", - "@eslint/js": "8.57.0", - "@humanwhocodes/config-array": "^0.11.14", + "@eslint/js": "8.57.1", + "@humanwhocodes/config-array": "^0.13.0", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", "@ungap/structured-clone": "^1.2.0", @@ -8139,6 +8014,7 @@ "resolved": "https://registry.npmjs.org/eslint-config-react-app/-/eslint-config-react-app-7.0.1.tgz", "integrity": "sha512-K6rNzvkIeHaTd8m/QEh1Zko0KI7BACWkkneSs6s9cKZC/J27X3eZR6Upt1jkmZ/4FK+XUOPPxMEN7+lbUXfSlA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/core": "^7.16.0", "@babel/eslint-parser": "^7.16.3", @@ -8167,6 +8043,7 @@ "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", "dev": true, + "license": "MIT", "dependencies": { "debug": "^3.2.7", "is-core-module": "^2.13.0", @@ -8178,15 +8055,17 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, + "license": "MIT", "dependencies": { "ms": "^2.1.1" } }, "node_modules/eslint-module-utils": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.1.tgz", - "integrity": "sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q==", + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.12.0.tgz", + "integrity": "sha512-wALZ0HFoytlyh/1+4wuZ9FJCD/leWHQzzrxJ8+rebyReSLk7LApMyd3WJaLVoN+D5+WIdJyDK1c6JnE65V4Zyg==", "dev": true, + "license": "MIT", "dependencies": { "debug": "^3.2.7" }, @@ -8204,6 +8083,7 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, + "license": "MIT", "dependencies": { "ms": "^2.1.1" } @@ -8213,6 +8093,7 @@ "resolved": "https://registry.npmjs.org/eslint-plugin-flowtype/-/eslint-plugin-flowtype-8.0.3.tgz", "integrity": "sha512-dX8l6qUL6O+fYPtpNRideCFSpmWOUVx5QcaGLVqe/vlDiBSe4vYljDWDETwnyFzpl7By/WVIu6rcrniCgH9BqQ==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "lodash": "^4.17.21", "string-natural-compare": "^3.0.1" @@ -8227,34 +8108,37 @@ } }, "node_modules/eslint-plugin-import": { - "version": "2.29.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz", - "integrity": "sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==", + "version": "2.31.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.31.0.tgz", + "integrity": "sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A==", "dev": true, + "license": "MIT", "dependencies": { - "array-includes": "^3.1.7", - "array.prototype.findlastindex": "^1.2.3", + "@rtsao/scc": "^1.1.0", + "array-includes": "^3.1.8", + "array.prototype.findlastindex": "^1.2.5", "array.prototype.flat": "^1.3.2", "array.prototype.flatmap": "^1.3.2", "debug": "^3.2.7", "doctrine": "^2.1.0", "eslint-import-resolver-node": "^0.3.9", - "eslint-module-utils": "^2.8.0", - "hasown": "^2.0.0", - "is-core-module": "^2.13.1", + "eslint-module-utils": "^2.12.0", + "hasown": "^2.0.2", + "is-core-module": "^2.15.1", "is-glob": "^4.0.3", "minimatch": "^3.1.2", - "object.fromentries": "^2.0.7", - "object.groupby": "^1.0.1", - "object.values": "^1.1.7", + "object.fromentries": "^2.0.8", + "object.groupby": "^1.0.3", + "object.values": "^1.2.0", "semver": "^6.3.1", + "string.prototype.trimend": "^1.0.8", "tsconfig-paths": "^3.15.0" }, "engines": { "node": ">=4" }, "peerDependencies": { - "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8" + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9" } }, "node_modules/eslint-plugin-import/node_modules/debug": { @@ -8262,6 +8146,7 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, + "license": "MIT", "dependencies": { "ms": "^2.1.1" } @@ -8271,6 +8156,7 @@ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", "dev": true, + "license": "Apache-2.0", "dependencies": { "esutils": "^2.0.2" }, @@ -8283,6 +8169,7 @@ "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-25.7.0.tgz", "integrity": "sha512-PWLUEXeeF7C9QGKqvdSbzLOiLTx+bno7/HC9eefePfEb257QFHg7ye3dh80AZVkaa/RQsBB1Q/ORQvg2X7F0NQ==", "dev": true, + "license": "MIT", "dependencies": { "@typescript-eslint/experimental-utils": "^5.0.0" }, @@ -8303,65 +8190,76 @@ } }, "node_modules/eslint-plugin-jsx-a11y": { - "version": "6.8.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.8.0.tgz", - "integrity": "sha512-Hdh937BS3KdwwbBaKd5+PLCOmYY6U4f2h9Z2ktwtNKvIdIEu137rjYbcb9ApSbVJfWxANNuiKTD/9tOKjK9qOA==", + "version": "6.10.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.10.2.tgz", + "integrity": "sha512-scB3nz4WmG75pV8+3eRUQOHZlNSUhFNq37xnpgRkCCELU3XMvXAxLk1eqWWyE22Ki4Q01Fnsw9BA3cJHDPgn2Q==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/runtime": "^7.23.2", - "aria-query": "^5.3.0", - "array-includes": "^3.1.7", + "aria-query": "^5.3.2", + "array-includes": "^3.1.8", "array.prototype.flatmap": "^1.3.2", "ast-types-flow": "^0.0.8", - "axe-core": "=4.7.0", - "axobject-query": "^3.2.1", + "axe-core": "^4.10.0", + "axobject-query": "^4.1.0", "damerau-levenshtein": "^1.0.8", "emoji-regex": "^9.2.2", - "es-iterator-helpers": "^1.0.15", - "hasown": "^2.0.0", + "hasown": "^2.0.2", "jsx-ast-utils": "^3.3.5", "language-tags": "^1.0.9", "minimatch": "^3.1.2", - "object.entries": "^1.1.7", - "object.fromentries": "^2.0.7" + "object.fromentries": "^2.0.8", + "safe-regex-test": "^1.0.3", + "string.prototype.includes": "^2.0.1" }, "engines": { "node": ">=4.0" }, "peerDependencies": { - "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9" + } + }, + "node_modules/eslint-plugin-jsx-a11y/node_modules/aria-query": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.2.tgz", + "integrity": "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">= 0.4" } }, "node_modules/eslint-plugin-react": { - "version": "7.34.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.34.1.tgz", - "integrity": "sha512-N97CxlouPT1AHt8Jn0mhhN2RrADlUAsk1/atcT2KyA/l9Q/E6ll7OIGwNumFmWfZ9skV3XXccYS19h80rHtgkw==", + "version": "7.37.4", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.37.4.tgz", + "integrity": "sha512-BGP0jRmfYyvOyvMoRX/uoUeW+GqNj9y16bPQzqAHf3AYII/tDs+jMN0dBVkl88/OZwNGwrVFxE7riHsXVfy/LQ==", "dev": true, + "license": "MIT", "dependencies": { - "array-includes": "^3.1.7", - "array.prototype.findlast": "^1.2.4", - "array.prototype.flatmap": "^1.3.2", - "array.prototype.toreversed": "^1.1.2", - "array.prototype.tosorted": "^1.1.3", + "array-includes": "^3.1.8", + "array.prototype.findlast": "^1.2.5", + "array.prototype.flatmap": "^1.3.3", + "array.prototype.tosorted": "^1.1.4", "doctrine": "^2.1.0", - "es-iterator-helpers": "^1.0.17", + "es-iterator-helpers": "^1.2.1", "estraverse": "^5.3.0", + "hasown": "^2.0.2", "jsx-ast-utils": "^2.4.1 || ^3.0.0", "minimatch": "^3.1.2", - "object.entries": "^1.1.7", - "object.fromentries": "^2.0.7", - "object.hasown": "^1.1.3", - "object.values": "^1.1.7", + "object.entries": "^1.1.8", + "object.fromentries": "^2.0.8", + "object.values": "^1.2.1", "prop-types": "^15.8.1", "resolve": "^2.0.0-next.5", "semver": "^6.3.1", - "string.prototype.matchall": "^4.0.10" + "string.prototype.matchall": "^4.0.12", + "string.prototype.repeat": "^1.0.0" }, "engines": { "node": ">=4" }, "peerDependencies": { - "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7" } }, "node_modules/eslint-plugin-react-hooks": { @@ -8369,6 +8267,7 @@ "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.2.tgz", "integrity": "sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, @@ -8381,6 +8280,7 @@ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", "dev": true, + "license": "Apache-2.0", "dependencies": { "esutils": "^2.0.2" }, @@ -8393,6 +8293,7 @@ "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", "dev": true, + "license": "MIT", "dependencies": { "is-core-module": "^2.13.0", "path-parse": "^1.0.7", @@ -8410,6 +8311,7 @@ "resolved": "https://registry.npmjs.org/eslint-plugin-testing-library/-/eslint-plugin-testing-library-5.11.1.tgz", "integrity": "sha512-5eX9e1Kc2PqVRed3taaLnAAqPZGEX75C+M/rXzUAI3wIg/ZxzUm1OVAwfe/O+vE+6YXOLetSe9g5GKD2ecXipw==", "dev": true, + "license": "MIT", "dependencies": { "@typescript-eslint/utils": "^5.58.0" }, @@ -8426,6 +8328,7 @@ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^5.2.0" @@ -8442,6 +8345,7 @@ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", "dev": true, + "license": "Apache-2.0", "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, @@ -8454,6 +8358,7 @@ "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", "dev": true, + "license": "MIT", "dependencies": { "type-fest": "^0.20.2" }, @@ -8469,6 +8374,7 @@ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", "dev": true, + "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" }, @@ -8481,6 +8387,7 @@ "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "acorn": "^8.9.0", "acorn-jsx": "^5.3.2", @@ -8498,6 +8405,7 @@ "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", "dev": true, + "license": "BSD-2-Clause", "bin": { "esparse": "bin/esparse.js", "esvalidate": "bin/esvalidate.js" @@ -8507,10 +8415,11 @@ } }, "node_modules/esquery": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", - "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", + "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "estraverse": "^5.1.0" }, @@ -8523,6 +8432,7 @@ "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "estraverse": "^5.2.0" }, @@ -8535,6 +8445,7 @@ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, + "license": "BSD-2-Clause", "engines": { "node": ">=4.0" } @@ -8543,13 +8454,15 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/esutils": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "dev": true, + "license": "BSD-2-Clause", "engines": { "node": ">=0.10.0" } @@ -8559,6 +8472,7 @@ "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", "dev": true, + "license": "MIT", "dependencies": { "cross-spawn": "^7.0.3", "get-stream": "^6.0.0", @@ -8581,6 +8495,7 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz", "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==", + "license": "MIT", "dependencies": { "@jest/expect-utils": "^29.7.0", "jest-get-type": "^29.6.3", @@ -8596,19 +8511,21 @@ "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/fast-glob": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", - "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", "dev": true, + "license": "MIT", "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", "glob-parent": "^5.1.2", "merge2": "^1.3.0", - "micromatch": "^4.0.4" + "micromatch": "^4.0.8" }, "engines": { "node": ">=8.6.0" @@ -8619,6 +8536,7 @@ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, + "license": "ISC", "dependencies": { "is-glob": "^4.0.1" }, @@ -8630,46 +8548,74 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/fast-levenshtein": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true + "dev": true, + "license": "MIT" }, - "node_modules/fast-url-parser": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/fast-url-parser/-/fast-url-parser-1.1.3.tgz", - "integrity": "sha512-5jOCVXADYNuRkKFzNJ0dCCewsZiYo0dz8QNYljkOpFC6r2U4OBmKtvm/Tsuh4w1YYdDqDb31a8TVhBJ2OJKdqQ==", + "node_modules/fast-uri": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.6.tgz", + "integrity": "sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==", "dev": true, - "dependencies": { - "punycode": "^1.3.2" - } + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "BSD-3-Clause" }, "node_modules/fastest-levenshtein": { "version": "1.0.16", "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 4.9.1" } }, "node_modules/fastq": { - "version": "1.17.1", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", - "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.18.0.tgz", + "integrity": "sha512-QKHXPW0hD8g4UET03SdOdunzSouc9N4AuHdsX8XNcTsuz+yYFILVNIX4l9yHABMhiEI9Db0JTTIpu0wB+Y1QQw==", "dev": true, + "license": "ISC", "dependencies": { "reusify": "^1.0.4" } }, + "node_modules/fdir": { + "version": "6.4.3", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.3.tgz", + "integrity": "sha512-PMXmW2y1hDDfTSRc9gaXIuCCRpuoz3Kaz8cUelp3smouvfT632ozg2vrT6lJsHKKOF59YLbOGfAWGUcKEfRMQw==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, "node_modules/file-entry-cache": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", "dev": true, + "license": "MIT", "dependencies": { "flat-cache": "^3.0.4" }, @@ -8694,6 +8640,7 @@ "resolved": "https://registry.npmjs.org/filter-console/-/filter-console-0.1.1.tgz", "integrity": "sha512-zrXoV1Uaz52DqPs+qEwNJWJFAWZpYJ47UNmpN9q4j+/EYsz85uV0DC9k8tRND5kYmoVzL0W+Y75q4Rg8sRJCdg==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -8702,6 +8649,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/filter-obj/-/filter-obj-1.1.0.tgz", "integrity": "sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ==", + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -8711,6 +8659,7 @@ "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dev": true, + "license": "MIT", "dependencies": { "locate-path": "^6.0.0", "path-exists": "^4.0.0" @@ -8727,6 +8676,7 @@ "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", "dev": true, + "license": "MIT", "dependencies": { "flatted": "^3.2.9", "keyv": "^4.5.3", @@ -8737,25 +8687,28 @@ } }, "node_modules/flatted": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", - "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", - "dev": true + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.2.tgz", + "integrity": "sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==", + "dev": true, + "license": "ISC" }, "node_modules/for-each": { "version": "0.3.3", "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", "dev": true, + "license": "MIT", "dependencies": { "is-callable": "^1.1.3" } }, "node_modules/foreground-child": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", - "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz", + "integrity": "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==", "dev": true, + "license": "ISC", "dependencies": { "cross-spawn": "^7.0.0", "signal-exit": "^4.0.1" @@ -8772,6 +8725,7 @@ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", "dev": true, + "license": "ISC", "engines": { "node": ">=14" }, @@ -8780,10 +8734,11 @@ } }, "node_modules/form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.1.tgz", + "integrity": "sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==", "dev": true, + "license": "MIT", "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", @@ -8797,6 +8752,7 @@ "version": "4.3.7", "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==", + "license": "MIT", "engines": { "node": "*" }, @@ -8808,13 +8764,16 @@ "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "license": "ISC" }, "node_modules/fsevents": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, "hasInstallScript": true, + "license": "MIT", "optional": true, "os": [ "darwin" @@ -8828,20 +8787,24 @@ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", "dev": true, + "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/function.prototype.name": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", - "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz", + "integrity": "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "functions-have-names": "^1.2.3" + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "functions-have-names": "^1.2.3", + "hasown": "^2.0.2", + "is-callable": "^1.2.7" }, "engines": { "node": ">= 0.4" @@ -8855,6 +8818,7 @@ "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", "dev": true, + "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -8864,6 +8828,7 @@ "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", "dev": true, + "license": "MIT", "engines": { "node": ">=6.9.0" } @@ -8873,6 +8838,7 @@ "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", "dev": true, + "license": "ISC", "engines": { "node": "6.* || 8.* || >= 10.*" } @@ -8882,21 +8848,28 @@ "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz", "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==", "dev": true, + "license": "MIT", "engines": { "node": "*" } }, "node_modules/get-intrinsic": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", - "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.7.tgz", + "integrity": "sha512-VW6Pxhsrk0KAOqs3WEd0klDiF/+V7gQOpAvY1jVU/LHmaD/kQO4523aiJuikX/QAKYiW6x8Jh+RJej1almdtCA==", "dev": true, + "license": "MIT", "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-define-property": "^1.0.1", "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", "function-bind": "^1.1.2", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "hasown": "^2.0.0" + "get-proto": "^1.0.0", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" }, "engines": { "node": ">= 0.4" @@ -8905,11 +8878,26 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "dev": true, + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/get-stream": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, @@ -8918,14 +8906,15 @@ } }, "node_modules/get-symbol-description": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", - "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz", + "integrity": "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.5", + "call-bound": "^1.0.3", "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.4" + "get-intrinsic": "^1.2.6" }, "engines": { "node": ">= 0.4" @@ -8938,7 +8927,9 @@ "version": "8.1.0", "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "deprecated": "Glob versions prior to v9 are no longer supported", "dev": true, + "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -8958,6 +8949,7 @@ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", "dev": true, + "license": "ISC", "dependencies": { "is-glob": "^4.0.3" }, @@ -8970,6 +8962,7 @@ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } @@ -8979,6 +8972,7 @@ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -8991,6 +8985,7 @@ "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", "dev": true, + "license": "MIT", "dependencies": { "global-prefix": "^3.0.0" }, @@ -9003,6 +8998,7 @@ "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", "dev": true, + "license": "MIT", "dependencies": { "ini": "^1.3.5", "kind-of": "^6.0.2", @@ -9017,6 +9013,7 @@ "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", "dev": true, + "license": "ISC", "dependencies": { "isexe": "^2.0.0" }, @@ -9029,6 +9026,7 @@ "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } @@ -9038,6 +9036,7 @@ "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", "dev": true, + "license": "MIT", "dependencies": { "define-properties": "^1.2.1", "gopd": "^1.0.1" @@ -9054,6 +9053,7 @@ "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", "dev": true, + "license": "MIT", "dependencies": { "array-union": "^2.1.0", "dir-glob": "^3.0.1", @@ -9073,15 +9073,17 @@ "version": "0.1.4", "resolved": "https://registry.npmjs.org/globjoin/-/globjoin-0.1.4.tgz", "integrity": "sha512-xYfnw62CKG8nLkZBfWbhWwDw02CHty86jfPcc2cr3ZfeuK9ysoVPPEUxf21bAD/rWAgk52SuBrLJlefNy8mvFg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/gopd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", "dev": true, - "dependencies": { - "get-intrinsic": "^1.1.3" + "license": "MIT", + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -9090,18 +9092,20 @@ "node_modules/graceful-fs": { "version": "4.2.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "license": "ISC" }, "node_modules/graphemer": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/graphql": { - "version": "16.9.0", - "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.9.0.tgz", - "integrity": "sha512-GGTKBX4SD7Wdb8mqeDLni2oaRGYQWjWHGKPQ24ZMnUtKfcsVoiv4uX8+LJr1K6U5VW2Lu1BwJnj7uiori0YtRw==", + "version": "16.10.0", + "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.10.0.tgz", + "integrity": "sha512-AjqGKbDGUFRKIRCP9tCKiIGHyriz2oHEbPIbEtcSLSs4YjReZOIPQQWek4+6hjw62H9QShXHyaGivGiYVLeYFQ==", "dev": true, "license": "MIT", "engines": { @@ -9113,15 +9117,20 @@ "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/has-bigints": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", - "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", + "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==", "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -9130,6 +9139,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "license": "MIT", "engines": { "node": ">=8" } @@ -9139,6 +9149,7 @@ "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", "dev": true, + "license": "MIT", "dependencies": { "es-define-property": "^1.0.0" }, @@ -9147,10 +9158,14 @@ } }, "node_modules/has-proto": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", - "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz", + "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==", "dev": true, + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.0" + }, "engines": { "node": ">= 0.4" }, @@ -9159,10 +9174,11 @@ } }, "node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -9175,6 +9191,7 @@ "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", "dev": true, + "license": "MIT", "dependencies": { "has-symbols": "^1.0.3" }, @@ -9190,6 +9207,7 @@ "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", "dev": true, + "license": "MIT", "dependencies": { "function-bind": "^1.1.2" }, @@ -9204,25 +9222,11 @@ "dev": true, "license": "MIT" }, - "node_modules/highcharts": { - "version": "10.3.3", - "resolved": "https://registry.npmjs.org/highcharts/-/highcharts-10.3.3.tgz", - "integrity": "sha512-r7wgUPQI9tr3jFDn3XT36qsNwEIZYcfgz4mkKEA6E4nn5p86y+u1EZjazIG4TRkl5/gmGRtkBUiZW81g029RIw==", - "peer": true - }, - "node_modules/highcharts-react-official": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/highcharts-react-official/-/highcharts-react-official-3.2.1.tgz", - "integrity": "sha512-hyQTX7ezCxl7JqumaWiGsroGWalzh24GedQIgO3vJbkGOZ6ySRAltIYjfxhrq4HszJOySZegotEF7v+haQ75UA==", - "peerDependencies": { - "highcharts": ">=6.0.0", - "react": ">=16.8.0" - } - }, "node_modules/history": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/history/-/history-5.3.0.tgz", "integrity": "sha512-ZqaKwjjrAYUYfLG+htGaIIZ4nioX2L70ZUMIFysS3xvBsSG4x/n1V6TXV3N8ZYNuFGlDirFg32T7B6WOUPDYcQ==", + "license": "MIT", "dependencies": { "@babel/runtime": "^7.7.6" } @@ -9231,6 +9235,7 @@ "version": "3.3.2", "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", + "license": "BSD-3-Clause", "dependencies": { "react-is": "^16.7.0" } @@ -9238,13 +9243,15 @@ "node_modules/hoist-non-react-statics/node_modules/react-is": { "version": "16.13.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "license": "MIT" }, "node_modules/hosted-git-info": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", "dev": true, + "license": "ISC", "dependencies": { "lru-cache": "^6.0.0" }, @@ -9257,6 +9264,7 @@ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, + "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -9268,13 +9276,15 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/html-encoding-sniffer": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz", "integrity": "sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==", "dev": true, + "license": "MIT", "dependencies": { "whatwg-encoding": "^2.0.0" }, @@ -9287,6 +9297,7 @@ "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-3.3.1.tgz", "integrity": "sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" }, @@ -9299,6 +9310,7 @@ "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", "dev": true, + "license": "MIT", "dependencies": { "@tootallnate/once": "2", "agent-base": "6", @@ -9313,6 +9325,7 @@ "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", "dev": true, + "license": "MIT", "dependencies": { "agent-base": "6", "debug": "4" @@ -9326,6 +9339,7 @@ "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", "dev": true, + "license": "Apache-2.0", "engines": { "node": ">=10.17.0" } @@ -9339,25 +9353,40 @@ "node": ">=0.4" } }, + "node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/ignore": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", - "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", "dev": true, + "license": "MIT", "engines": { "node": ">= 4" } }, "node_modules/immutable": { - "version": "4.3.5", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.5.tgz", - "integrity": "sha512-8eabxkth9gZatlwl5TBuJnCsoTADlL6ftEr7A4qgdaTsPyreilDSnUk57SO+jfKcNtxPa22U5KK6DSeAYhpBJw==" + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-5.0.3.tgz", + "integrity": "sha512-P8IdPQHq3lA1xVeBRi5VPqUm5HDgKnx0Ru51wZz5mjxHr5n3RWhjIpOFU7ybkUxfB+5IToy+OLaHYDBIWsv+uw==", + "license": "MIT" }, "node_modules/import-fresh": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", "dev": true, + "license": "MIT", "dependencies": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" @@ -9374,6 +9403,7 @@ "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-4.0.0.tgz", "integrity": "sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -9383,6 +9413,7 @@ "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.8.19" } @@ -9392,6 +9423,7 @@ "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -9400,6 +9432,8 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "license": "ISC", "dependencies": { "once": "^1.3.0", "wrappy": "1" @@ -9408,23 +9442,26 @@ "node_modules/inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "license": "ISC" }, "node_modules/ini": { "version": "1.3.8", "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/internal-slot": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", - "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz", + "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==", "dev": true, + "license": "MIT", "dependencies": { "es-errors": "^1.3.0", - "hasown": "^2.0.0", - "side-channel": "^1.0.4" + "hasown": "^2.0.2", + "side-channel": "^1.1.0" }, "engines": { "node": ">= 0.4" @@ -9434,18 +9471,21 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==", + "license": "ISC", "engines": { "node": ">=12" } }, "node_modules/is-array-buffer": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", - "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", + "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.1" + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" }, "engines": { "node": ">= 0.4" @@ -9458,15 +9498,20 @@ "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/is-async-function": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.0.0.tgz", - "integrity": "sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.0.tgz", + "integrity": "sha512-GExz9MtyhlZyXYLxzlJRj5WUCE661zhDa1Yna52CN57AJsymh+DvXXjyveSioqSRdxvUrdKdvqB1b5cVKsNpWQ==", "dev": true, + "license": "MIT", "dependencies": { - "has-tostringtag": "^1.0.0" + "call-bound": "^1.0.3", + "get-proto": "^1.0.1", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" }, "engines": { "node": ">= 0.4" @@ -9476,12 +9521,16 @@ } }, "node_modules/is-bigint": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz", + "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==", "dev": true, + "license": "MIT", "dependencies": { - "has-bigints": "^1.0.1" + "has-bigints": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -9491,6 +9540,8 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "license": "MIT", "dependencies": { "binary-extensions": "^2.0.0" }, @@ -9499,13 +9550,14 @@ } }, "node_modules/is-boolean-object": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", - "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.1.tgz", + "integrity": "sha512-l9qO6eFlUETHtuihLcYOaLKByJ1f+N4kthcU9YjHy3N+B3hWv0y/2Nd0mu/7lTFnRQHTrSdXF50HQ3bl5fEnng==", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" + "call-bound": "^1.0.2", + "has-tostringtag": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -9519,6 +9571,7 @@ "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -9527,23 +9580,30 @@ } }, "node_modules/is-core-module": { - "version": "2.13.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", - "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", + "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", "dev": true, + "license": "MIT", "dependencies": { - "hasown": "^2.0.0" + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/is-data-view": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz", - "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz", + "integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==", "dev": true, + "license": "MIT", "dependencies": { + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", "is-typed-array": "^1.1.13" }, "engines": { @@ -9554,12 +9614,14 @@ } }, "node_modules/is-date-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz", + "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==", "dev": true, + "license": "MIT", "dependencies": { - "has-tostringtag": "^1.0.0" + "call-bound": "^1.0.2", + "has-tostringtag": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -9573,6 +9635,7 @@ "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", "dev": true, + "license": "MIT", "bin": { "is-docker": "cli.js" }, @@ -9587,17 +9650,23 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "devOptional": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/is-finalizationregistry": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz", - "integrity": "sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz", + "integrity": "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.2" + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -9608,17 +9677,22 @@ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/is-generator-function": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", - "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.0.tgz", + "integrity": "sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==", "dev": true, + "license": "MIT", "dependencies": { - "has-tostringtag": "^1.0.0" + "call-bound": "^1.0.3", + "get-proto": "^1.0.0", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" }, "engines": { "node": ">= 0.4" @@ -9631,30 +9705,21 @@ "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "devOptional": true, + "license": "MIT", "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-map": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", - "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", - "dev": true, - "engines": { - "node": ">= 0.4" + "is-extglob": "^2.1.1" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/is-negative-zero": { + "node_modules/is-map": { "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", - "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", + "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -9679,12 +9744,14 @@ } }, "node_modules/is-number-object": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", - "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz", + "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==", "dev": true, + "license": "MIT", "dependencies": { - "has-tostringtag": "^1.0.0" + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -9698,6 +9765,7 @@ "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -9707,6 +9775,7 @@ "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -9716,6 +9785,7 @@ "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -9725,6 +9795,7 @@ "resolved": "https://registry.npmjs.org/is-port-reachable/-/is-port-reachable-4.0.0.tgz", "integrity": "sha512-9UoipoxYmSk6Xy7QFgRv2HDyaysmgSG75TFQs6S+3pDM7ZhKTF/bskZV+0UlABHzKjNVhPjYCLfeZUEg1wXxig==", "dev": true, + "license": "MIT", "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, @@ -9736,25 +9807,30 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/is-reference": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz", "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==", "dev": true, + "license": "MIT", "dependencies": { "@types/estree": "*" } }, "node_modules/is-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", + "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" + "call-bound": "^1.0.2", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" }, "engines": { "node": ">= 0.4" @@ -9768,6 +9844,7 @@ "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -9776,12 +9853,13 @@ } }, "node_modules/is-shared-array-buffer": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", - "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz", + "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.7" + "call-bound": "^1.0.3" }, "engines": { "node": ">= 0.4" @@ -9795,6 +9873,7 @@ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" }, @@ -9803,12 +9882,14 @@ } }, "node_modules/is-string": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz", + "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==", "dev": true, + "license": "MIT", "dependencies": { - "has-tostringtag": "^1.0.0" + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -9818,12 +9899,15 @@ } }, "node_modules/is-symbol": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz", + "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==", "dev": true, + "license": "MIT", "dependencies": { - "has-symbols": "^1.0.2" + "call-bound": "^1.0.2", + "has-symbols": "^1.1.0", + "safe-regex-test": "^1.1.0" }, "engines": { "node": ">= 0.4" @@ -9833,12 +9917,13 @@ } }, "node_modules/is-typed-array": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", - "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", + "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", "dev": true, + "license": "MIT", "dependencies": { - "which-typed-array": "^1.1.14" + "which-typed-array": "^1.1.16" }, "engines": { "node": ">= 0.4" @@ -9852,6 +9937,7 @@ "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -9860,25 +9946,30 @@ } }, "node_modules/is-weakref": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", - "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.0.tgz", + "integrity": "sha512-SXM8Nwyys6nT5WP6pltOwKytLV7FqQ4UiibxVmW+EIosHcmCqkkjViTb5SNssDlkCiEYRP1/pdWUKVvZBmsR2Q==", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.2" + "call-bound": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/is-weakset": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.3.tgz", - "integrity": "sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz", + "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", - "get-intrinsic": "^1.2.4" + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" }, "engines": { "node": ">= 0.4" @@ -9892,6 +9983,7 @@ "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", "dev": true, + "license": "MIT", "dependencies": { "is-docker": "^2.0.0" }, @@ -9903,43 +9995,49 @@ "version": "2.0.5", "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/iserror": { "version": "0.0.2", "resolved": "https://registry.npmjs.org/iserror/-/iserror-0.0.2.tgz", - "integrity": "sha512-oKGGrFVaWwETimP3SiWwjDeY27ovZoyZPHtxblC4hCq9fXxed/jasx+ATWFFjCVSRZng8VTMsN1nDnGo6zMBSw==" + "integrity": "sha512-oKGGrFVaWwETimP3SiWwjDeY27ovZoyZPHtxblC4hCq9fXxed/jasx+ATWFFjCVSRZng8VTMsN1nDnGo6zMBSw==", + "license": "MIT" }, "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/iterator.prototype": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.2.tgz", - "integrity": "sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==", + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.5.tgz", + "integrity": "sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==", "dev": true, + "license": "MIT", "dependencies": { - "define-properties": "^1.2.1", - "get-intrinsic": "^1.2.1", - "has-symbols": "^1.0.3", - "reflect.getprototypeof": "^1.0.4", - "set-function-name": "^2.0.1" + "define-data-property": "^1.1.4", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.6", + "get-proto": "^1.0.0", + "has-symbols": "^1.1.0", + "set-function-name": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" } }, "node_modules/jackspeak": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", - "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", "dev": true, + "license": "BlueOak-1.0.0", "dependencies": { "@isaacs/cliui": "^8.0.2" }, - "engines": { - "node": ">=14" - }, "funding": { "url": "https://github.com/sponsors/isaacs" }, @@ -9951,6 +10049,7 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", + "license": "MIT", "dependencies": { "chalk": "^4.0.0", "diff-sequences": "^29.6.3", @@ -9965,6 +10064,7 @@ "version": "5.2.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "license": "MIT", "engines": { "node": ">=10" }, @@ -9976,6 +10076,7 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", "ansi-styles": "^5.0.0", @@ -9988,12 +10089,14 @@ "node_modules/jest-diff/node_modules/react-is": { "version": "18.3.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", - "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==" + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "license": "MIT" }, "node_modules/jest-get-type": { "version": "29.6.3", "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", + "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } @@ -10002,6 +10105,7 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==", + "license": "MIT", "dependencies": { "chalk": "^4.0.0", "jest-diff": "^29.7.0", @@ -10016,6 +10120,7 @@ "version": "5.2.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "license": "MIT", "engines": { "node": ">=10" }, @@ -10027,6 +10132,7 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", "ansi-styles": "^5.0.0", @@ -10039,12 +10145,14 @@ "node_modules/jest-matcher-utils/node_modules/react-is": { "version": "18.3.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", - "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==" + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "license": "MIT" }, "node_modules/jest-message-util": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", + "license": "MIT", "dependencies": { "@babel/code-frame": "^7.12.13", "@jest/types": "^29.6.3", @@ -10064,6 +10172,7 @@ "version": "5.2.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "license": "MIT", "engines": { "node": ">=10" }, @@ -10075,6 +10184,7 @@ "version": "29.7.0", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", "ansi-styles": "^5.0.0", @@ -10087,12 +10197,14 @@ "node_modules/jest-message-util/node_modules/react-is": { "version": "18.3.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", - "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==" + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "license": "MIT" }, "node_modules/jest-util": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", "@types/node": "*", @@ -10105,11 +10217,24 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, + "node_modules/jest-util/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/jiti": { - "version": "1.21.0", - "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.0.tgz", - "integrity": "sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==", + "version": "1.21.7", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.7.tgz", + "integrity": "sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==", "dev": true, + "license": "MIT", "bin": { "jiti": "bin/jiti.js" } @@ -10117,18 +10242,21 @@ "node_modules/js-sha3": { "version": "0.8.0", "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz", - "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==" + "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==", + "license": "MIT" }, "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "license": "MIT" }, "node_modules/js-yaml": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, + "license": "MIT", "dependencies": { "argparse": "^2.0.1" }, @@ -10141,26 +10269,28 @@ "resolved": "https://registry.npmjs.org/js2xmlparser/-/js2xmlparser-4.0.2.tgz", "integrity": "sha512-6n4D8gLlLf1n5mNLQPRfViYzu9RATblzPEtm1SthMX1Pjao0r9YI9nw7ZIfRxQMERS87mcswrg+r/OYrPRX6jA==", "dev": true, + "license": "Apache-2.0", "dependencies": { "xmlcreate": "^2.0.4" } }, "node_modules/jsdoc": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/jsdoc/-/jsdoc-4.0.2.tgz", - "integrity": "sha512-e8cIg2z62InH7azBBi3EsSEqrKx+nUtAS5bBcYTSpZFA+vhNPyhv8PTFZ0WsjOPDj04/dOLlm08EDcQJDqaGQg==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/jsdoc/-/jsdoc-4.0.4.tgz", + "integrity": "sha512-zeFezwyXeG4syyYHbvh1A967IAqq/67yXtXvuL5wnqCkFZe8I0vKfm+EO+YEvLguo6w9CDUbrAXVtJSHh2E8rw==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@babel/parser": "^7.20.15", "@jsdoc/salty": "^0.2.1", - "@types/markdown-it": "^12.2.3", + "@types/markdown-it": "^14.1.1", "bluebird": "^3.7.2", "catharsis": "^0.9.0", "escape-string-regexp": "^2.0.0", "js2xmlparser": "^4.0.2", "klaw": "^3.0.0", - "markdown-it": "^12.3.2", - "markdown-it-anchor": "^8.4.1", + "markdown-it": "^14.1.0", + "markdown-it-anchor": "^8.6.7", "marked": "^4.0.10", "mkdirp": "^1.0.4", "requizzle": "^0.2.3", @@ -10179,6 +10309,7 @@ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -10188,6 +10319,7 @@ "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-21.1.2.tgz", "integrity": "sha512-sCpFmK2jv+1sjff4u7fzft+pUh2KSUbUrEHYHyfSIbGTIcmnjyp83qg6qLwdJ/I3LpTXx33ACxeRL7Lsyc6lGQ==", "dev": true, + "license": "MIT", "dependencies": { "abab": "^2.0.6", "acorn": "^8.8.2", @@ -10213,7 +10345,7 @@ "whatwg-encoding": "^2.0.0", "whatwg-mimetype": "^3.0.0", "whatwg-url": "^12.0.1", - "ws": "^8.17.1", + "ws": "^8.13.0", "xml-name-validator": "^4.0.0" }, "engines": { @@ -10229,46 +10361,52 @@ } }, "node_modules/jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", "dev": true, + "license": "MIT", "bin": { "jsesc": "bin/jsesc" }, "engines": { - "node": ">=4" + "node": ">=6" } }, "node_modules/json-buffer": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/json-parse-even-better-errors": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/json-stable-stringify-without-jsonify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/json5": { "version": "2.2.3", "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", "dev": true, + "license": "MIT", "bin": { "json5": "lib/cli.js" }, @@ -10281,6 +10419,7 @@ "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==", "dev": true, + "license": "MIT", "dependencies": { "array-includes": "^3.1.6", "array.prototype.flat": "^1.3.1", @@ -10296,6 +10435,7 @@ "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", "dev": true, + "license": "MIT", "dependencies": { "json-buffer": "3.0.1" } @@ -10305,6 +10445,7 @@ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -10314,6 +10455,7 @@ "resolved": "https://registry.npmjs.org/klaw/-/klaw-3.0.0.tgz", "integrity": "sha512-0Fo5oir+O9jnXu5EefYbVK+mHMBeEVEy2cmctR1O1NECcCkPRreJKrS6Qt/j3KC2C148Dfo9i3pCmCMsdqGr0g==", "dev": true, + "license": "MIT", "dependencies": { "graceful-fs": "^4.1.9" } @@ -10322,19 +10464,22 @@ "version": "0.26.0", "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.26.0.tgz", "integrity": "sha512-5FZRzrZzNTBruuurWpvZnvP9pum+fe0HcK8z/ooo+U+Hmp4vtbyp1/QDsqmufirXy4egGzbaH/y2uCZf+6W5Kg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/language-subtag-registry": { - "version": "0.3.22", - "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.22.tgz", - "integrity": "sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==", - "dev": true + "version": "0.3.23", + "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.23.tgz", + "integrity": "sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==", + "dev": true, + "license": "CC0-1.0" }, "node_modules/language-tags": { "version": "1.0.9", "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.9.tgz", "integrity": "sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==", "dev": true, + "license": "MIT", "dependencies": { "language-subtag-registry": "^0.3.20" }, @@ -10347,6 +10492,7 @@ "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", "dev": true, + "license": "MIT", "dependencies": { "prelude-ls": "^1.2.1", "type-check": "~0.4.0" @@ -10356,27 +10502,33 @@ } }, "node_modules/lilconfig": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", - "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz", + "integrity": "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==", "dev": true, + "license": "MIT", "engines": { - "node": ">=10" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antonk52" } }, "node_modules/lines-and-columns": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/linkify-it": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-3.0.3.tgz", - "integrity": "sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.0.tgz", + "integrity": "sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==", "dev": true, + "license": "MIT", "dependencies": { - "uc.micro": "^1.0.1" + "uc.micro": "^2.0.0" } }, "node_modules/local-pkg": { @@ -10384,6 +10536,7 @@ "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.4.3.tgz", "integrity": "sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g==", "dev": true, + "license": "MIT", "engines": { "node": ">=14" }, @@ -10396,6 +10549,7 @@ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "dev": true, + "license": "MIT", "dependencies": { "p-locate": "^5.0.0" }, @@ -10410,42 +10564,49 @@ "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/lodash-es": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", - "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==" + "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==", + "license": "MIT" }, "node_modules/lodash.debounce": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/lodash.merge": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/lodash.truncate": { "version": "4.4.2", "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/long": { - "version": "5.2.3", - "resolved": "https://registry.npmjs.org/long/-/long-5.2.3.tgz", - "integrity": "sha512-lcHwpNoggQTObv5apGNCTdJrO69eHOZMi4BNC+rTLER8iHAqGrUVeLh/irVIM7zTw2bOXA8T6uNPeujwOLg/2Q==", + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/long/-/long-5.2.4.tgz", + "integrity": "sha512-qtzLbJE8hq7VabR3mISmVGtoXP8KGc2Z/AT8OuqlYD7JTR3oqrgwdjnk07wpj1twXxYmgDXgoKVWUG/fReSzHg==", "dev": true, + "license": "Apache-2.0", "peer": true }, "node_modules/loose-envify": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "license": "MIT", "dependencies": { "js-tokens": "^3.0.0 || ^4.0.0" }, @@ -10458,6 +10619,7 @@ "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz", "integrity": "sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==", "dev": true, + "license": "MIT", "dependencies": { "get-func-name": "^2.0.1" } @@ -10467,6 +10629,7 @@ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", "dev": true, + "license": "ISC", "dependencies": { "yallist": "^3.0.2" } @@ -10476,20 +10639,19 @@ "resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.5.0.tgz", "integrity": "sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==", "dev": true, + "license": "MIT", "bin": { "lz-string": "bin/bin.js" } }, "node_modules/magic-string": { - "version": "0.27.0", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.27.0.tgz", - "integrity": "sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==", + "version": "0.30.17", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz", + "integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==", "dev": true, + "license": "MIT", "dependencies": { - "@jridgewell/sourcemap-codec": "^1.4.13" - }, - "engines": { - "node": ">=12" + "@jridgewell/sourcemap-codec": "^1.5.0" } }, "node_modules/map-obj": { @@ -10497,6 +10659,7 @@ "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz", "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" }, @@ -10505,19 +10668,21 @@ } }, "node_modules/markdown-it": { - "version": "12.3.2", - "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-12.3.2.tgz", - "integrity": "sha512-TchMembfxfNVpHkbtriWltGWc+m3xszaRD0CZup7GFFhzIgQqxIfn3eGj1yZpfuflzPvfkt611B2Q/Bsk1YnGg==", + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.1.0.tgz", + "integrity": "sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==", "dev": true, + "license": "MIT", "dependencies": { "argparse": "^2.0.1", - "entities": "~2.1.0", - "linkify-it": "^3.0.1", - "mdurl": "^1.0.1", - "uc.micro": "^1.0.5" + "entities": "^4.4.0", + "linkify-it": "^5.0.0", + "mdurl": "^2.0.0", + "punycode.js": "^2.3.1", + "uc.micro": "^2.1.0" }, "bin": { - "markdown-it": "bin/markdown-it.js" + "markdown-it": "bin/markdown-it.mjs" } }, "node_modules/markdown-it-anchor": { @@ -10525,25 +10690,18 @@ "resolved": "https://registry.npmjs.org/markdown-it-anchor/-/markdown-it-anchor-8.6.7.tgz", "integrity": "sha512-FlCHFwNnutLgVTflOYHPW2pPcl2AACqVzExlkGQNsi4CJgqOHN7YTgDd4LuhgN1BFO3TS0vLAruV1Td6dwWPJA==", "dev": true, + "license": "Unlicense", "peerDependencies": { "@types/markdown-it": "*", "markdown-it": "*" } }, - "node_modules/markdown-it/node_modules/entities": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz", - "integrity": "sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==", - "dev": true, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, "node_modules/marked": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/marked/-/marked-4.3.0.tgz", "integrity": "sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==", "dev": true, + "license": "MIT", "bin": { "marked": "bin/marked.js" }, @@ -10555,16 +10713,28 @@ "version": "6.3.4", "resolved": "https://registry.npmjs.org/match-sorter/-/match-sorter-6.3.4.tgz", "integrity": "sha512-jfZW7cWS5y/1xswZo8VBOdudUiSd9nifYRWphc9M5D/ee4w4AoXLgBEdRbgVaxbMuagBPeUC5y2Hi8DO6o9aDg==", + "license": "MIT", "dependencies": { "@babel/runtime": "^7.23.8", "remove-accents": "0.5.0" } }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, "node_modules/mathml-tag-names": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/mathml-tag-names/-/mathml-tag-names-2.1.3.tgz", "integrity": "sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg==", "dev": true, + "license": "MIT", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -10573,19 +10743,22 @@ "node_modules/mdn-data": { "version": "2.0.30", "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz", - "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==" + "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==", + "license": "CC0-1.0" }, "node_modules/mdurl": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", - "integrity": "sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==", - "dev": true + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-2.0.0.tgz", + "integrity": "sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==", + "dev": true, + "license": "MIT" }, "node_modules/meow": { "version": "9.0.0", "resolved": "https://registry.npmjs.org/meow/-/meow-9.0.0.tgz", "integrity": "sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ==", "dev": true, + "license": "MIT", "dependencies": { "@types/minimist": "^1.2.0", "camelcase-keys": "^6.2.2", @@ -10612,6 +10785,7 @@ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", "dev": true, + "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" }, @@ -10623,13 +10797,15 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/merge2": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 8" } @@ -10638,6 +10814,7 @@ "version": "4.0.8", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "license": "MIT", "dependencies": { "braces": "^3.0.3", "picomatch": "^2.3.1" @@ -10646,16 +10823,30 @@ "node": ">=8.6" } }, + "node_modules/micromatch/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/microseconds": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/microseconds/-/microseconds-0.2.0.tgz", - "integrity": "sha512-n7DHHMjR1avBbSpsTBj6fmMGh2AGrifVV4e+WYc3Q9lO+xnSZ3NyhcBND3vzzatt05LFhoKFRxrIyklmLlUtyA==" + "integrity": "sha512-n7DHHMjR1avBbSpsTBj6fmMGh2AGrifVV4e+WYc3Q9lO+xnSZ3NyhcBND3vzzatt05LFhoKFRxrIyklmLlUtyA==", + "license": "MIT" }, "node_modules/mime-db": { "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -10665,6 +10856,7 @@ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "dev": true, + "license": "MIT", "dependencies": { "mime-db": "1.52.0" }, @@ -10677,6 +10869,7 @@ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -10686,6 +10879,7 @@ "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } @@ -10694,6 +10888,7 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -10706,6 +10901,7 @@ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", "dev": true, + "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -10715,6 +10911,7 @@ "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz", "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==", "dev": true, + "license": "MIT", "dependencies": { "arrify": "^1.0.1", "is-plain-obj": "^1.1.0", @@ -10725,10 +10922,11 @@ } }, "node_modules/minipass": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", - "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", "dev": true, + "license": "ISC", "engines": { "node": ">=16 || 14 >=14.17" } @@ -10738,6 +10936,7 @@ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", "dev": true, + "license": "MIT", "bin": { "mkdirp": "bin/cmd.js" }, @@ -10746,46 +10945,55 @@ } }, "node_modules/mlly": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.6.1.tgz", - "integrity": "sha512-vLgaHvaeunuOXHSmEbZ9izxPx3USsk8KCQ8iC+aTlp5sKRSoZvwhHh5L9VbKSaVC6sJDqbyohIS76E2VmHIPAA==", + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.7.4.tgz", + "integrity": "sha512-qmdSIPC4bDJXgZTCR7XosJiNKySV7O215tsPtDN9iEO/7q/76b/ijtgRu/+epFXSJhijtTCCGp3DWS549P3xKw==", "dev": true, + "license": "MIT", "dependencies": { - "acorn": "^8.11.3", - "pathe": "^1.1.2", - "pkg-types": "^1.0.3", - "ufo": "^1.3.2" + "acorn": "^8.14.0", + "pathe": "^2.0.1", + "pkg-types": "^1.3.0", + "ufo": "^1.5.4" } }, + "node_modules/mlly/node_modules/pathe": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.2.tgz", + "integrity": "sha512-15Ztpk+nov8DR524R4BF7uEuzESgzUEAV4Ah7CUMNGXdE5ELuvxElxGXndBl32vMSsWa1jpNf22Z+Er3sKwq+w==", + "dev": true, + "license": "MIT" + }, "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" }, "node_modules/msw": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/msw/-/msw-2.6.0.tgz", - "integrity": "sha512-n3tx2w0MZ3H4pxY0ozrQ4sNPzK/dGtlr2cIIyuEsgq2Bhy4wvcW6ZH2w/gXM9+MEUY6HC1fWhqtcXDxVZr5Jxw==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/msw/-/msw-2.7.0.tgz", + "integrity": "sha512-BIodwZ19RWfCbYTxWTUfTXc+sg4OwjCAgxU1ZsgmggX/7S3LdUifsbUPJs61j0rWb19CZRGY5if77duhc0uXzw==", "dev": true, "hasInstallScript": true, "license": "MIT", "dependencies": { - "@bundled-es-modules/cookie": "^2.0.0", + "@bundled-es-modules/cookie": "^2.0.1", "@bundled-es-modules/statuses": "^1.0.1", "@bundled-es-modules/tough-cookie": "^0.1.6", "@inquirer/confirm": "^5.0.0", - "@mswjs/interceptors": "^0.36.5", + "@mswjs/interceptors": "^0.37.0", "@open-draft/deferred-promise": "^2.2.0", "@open-draft/until": "^2.1.0", "@types/cookie": "^0.6.0", "@types/statuses": "^2.0.4", - "chalk": "^4.1.2", "graphql": "^16.8.1", "headers-polyfill": "^4.0.2", "is-node-process": "^1.2.0", "outvariant": "^1.4.3", "path-to-regexp": "^6.3.0", + "picocolors": "^1.1.1", "strict-event-emitter": "^0.5.1", "type-fest": "^4.26.1", "yargs": "^17.7.2" @@ -10809,14 +11017,14 @@ } }, "node_modules/msw/node_modules/@inquirer/confirm": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-5.0.1.tgz", - "integrity": "sha512-6ycMm7k7NUApiMGfVc32yIPp28iPKxhGRMqoNDiUjq2RyTAkbs5Fx0TdzBqhabcKvniDdAAvHCmsRjnNfTsogw==", + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-5.1.3.tgz", + "integrity": "sha512-fuF9laMmHoOgWapF9h9hv6opA5WvmGFHsTYGCmuFxcghIhEhb3dN0CdQR4BUMqa2H506NCj8cGX4jwMsE4t6dA==", "dev": true, "license": "MIT", "dependencies": { - "@inquirer/core": "^10.0.1", - "@inquirer/type": "^3.0.0" + "@inquirer/core": "^10.1.4", + "@inquirer/type": "^3.0.2" }, "engines": { "node": ">=18" @@ -10826,9 +11034,9 @@ } }, "node_modules/msw/node_modules/@inquirer/type": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-3.0.0.tgz", - "integrity": "sha512-YYykfbw/lefC7yKj7nanzQXILM7r3suIvyFlCcMskc99axmsSewXWkAfXKwMbgxL76iAFVmRwmYdwNZNc8gjog==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-3.0.2.tgz", + "integrity": "sha512-ZhQ4TvhwHZF+lGhQ2O/rsjo80XoZR5/5qhOY3t6FJuX5XBg5Be8YzYTvaUGJnc12AUGI2nr4QSUE4PhKSigx7g==", "dev": true, "license": "MIT", "engines": { @@ -10839,14 +11047,14 @@ } }, "node_modules/msw/node_modules/@types/node": { - "version": "22.9.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.9.0.tgz", - "integrity": "sha512-vuyHg81vvWA1Z1ELfvLko2c8f34gyA0zaic0+Rllc5lbCnbSyuvb2Oxpm6TAUAC/2xZN3QGqxBNggD1nNR2AfQ==", + "version": "22.10.7", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.7.tgz", + "integrity": "sha512-V09KvXxFiutGp6B7XkpaDXlNadZxrzajcY50EuoLIpQ6WWYCSvf19lVIazzfIzQvhUN2HjX12spLojTnhuKlGg==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "undici-types": "~6.19.8" + "undici-types": "~6.20.0" } }, "node_modules/msw/node_modules/path-to-regexp": { @@ -10871,6 +11079,7 @@ "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", "dev": true, + "license": "MIT", "dependencies": { "any-promise": "^1.0.0", "object-assign": "^4.0.1", @@ -10881,6 +11090,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/nano-time/-/nano-time-1.0.0.tgz", "integrity": "sha512-flnngywOoQ0lLQOTRNexn2gGSNuM9bKj9RZAWSzhQ+UJYaAFG9bac4DW9VHjUAzrOaIcajHybCTHe/bkvozQqA==", + "license": "ISC", "dependencies": { "big-integer": "^1.6.16" } @@ -10907,28 +11117,39 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/natural-compare-lite": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/negotiator": { "version": "0.6.3", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } }, + "node_modules/node-addon-api": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.1.tgz", + "integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==", + "license": "MIT", + "optional": true + }, "node_modules/node-fetch": { "version": "2.7.0", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", "dev": true, + "license": "MIT", "dependencies": { "whatwg-url": "^5.0.0" }, @@ -10948,34 +11169,39 @@ "version": "0.0.3", "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/node-fetch/node_modules/webidl-conversions": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", - "dev": true + "dev": true, + "license": "BSD-2-Clause" }, "node_modules/node-fetch/node_modules/whatwg-url": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", "dev": true, + "license": "MIT", "dependencies": { "tr46": "~0.0.3", "webidl-conversions": "^3.0.0" } }, "node_modules/node-releases": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", - "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==" + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz", + "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==", + "license": "MIT" }, "node_modules/normalize-package-data": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "hosted-git-info": "^4.0.1", "is-core-module": "^2.5.0", @@ -10986,26 +11212,12 @@ "node": ">=10" } }, - "node_modules/normalize-package-data/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/normalize-package-data/node_modules/semver": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", - "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, + "license": "ISC", "bin": { "semver": "bin/semver.js" }, @@ -11013,16 +11225,12 @@ "node": ">=10" } }, - "node_modules/normalize-package-data/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, "node_modules/normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -11031,14 +11239,15 @@ "version": "0.1.2", "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", + "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/npm": { - "version": "10.8.0", - "resolved": "https://registry.npmjs.org/npm/-/npm-10.8.0.tgz", - "integrity": "sha512-wh93uRczgp7HDnPMiLXcCkv2hagdJS0zJ9KT/31d0FoXP02+qgN2AOwpaW85fxRWkinl2rELfPw+CjBXW48/jQ==", + "version": "10.9.2", + "resolved": "https://registry.npmjs.org/npm/-/npm-10.9.2.tgz", + "integrity": "sha512-iriPEPIkoMYUy3F6f3wwSZAU93E0Eg6cHwIR6jzzOXWSy+SD/rOODEs74cVONHKSx2obXtuUoyidVEhISrisgQ==", "bundleDependencies": [ "@isaacs/string-locale-compare", "@npmcli/arborist", @@ -11110,75 +11319,83 @@ "write-file-atomic" ], "dev": true, + "license": "Artistic-2.0", + "workspaces": [ + "docs", + "smoke-tests", + "mock-globals", + "mock-registry", + "workspaces/*" + ], "dependencies": { "@isaacs/string-locale-compare": "^1.1.0", - "@npmcli/arborist": "^7.5.2", - "@npmcli/config": "^8.3.2", - "@npmcli/fs": "^3.1.1", - "@npmcli/map-workspaces": "^3.0.6", - "@npmcli/package-json": "^5.1.0", - "@npmcli/promise-spawn": "^7.0.2", - "@npmcli/redact": "^2.0.0", - "@npmcli/run-script": "^8.1.0", - "@sigstore/tuf": "^2.3.3", - "abbrev": "^2.0.0", + "@npmcli/arborist": "^8.0.0", + "@npmcli/config": "^9.0.0", + "@npmcli/fs": "^4.0.0", + "@npmcli/map-workspaces": "^4.0.2", + "@npmcli/package-json": "^6.1.0", + "@npmcli/promise-spawn": "^8.0.2", + "@npmcli/redact": "^3.0.0", + "@npmcli/run-script": "^9.0.1", + "@sigstore/tuf": "^3.0.0", + "abbrev": "^3.0.0", "archy": "~1.0.0", - "cacache": "^18.0.3", + "cacache": "^19.0.1", "chalk": "^5.3.0", - "ci-info": "^4.0.0", + "ci-info": "^4.1.0", "cli-columns": "^4.0.0", "fastest-levenshtein": "^1.0.16", "fs-minipass": "^3.0.3", - "glob": "^10.3.15", + "glob": "^10.4.5", "graceful-fs": "^4.2.11", - "hosted-git-info": "^7.0.2", - "ini": "^4.1.2", - "init-package-json": "^6.0.3", - "is-cidr": "^5.0.5", - "json-parse-even-better-errors": "^3.0.2", - "libnpmaccess": "^8.0.6", - "libnpmdiff": "^6.1.2", - "libnpmexec": "^8.1.1", - "libnpmfund": "^5.0.10", - "libnpmhook": "^10.0.5", - "libnpmorg": "^6.0.6", - "libnpmpack": "^7.0.2", - "libnpmpublish": "^9.0.8", - "libnpmsearch": "^7.0.5", - "libnpmteam": "^6.0.5", - "libnpmversion": "^6.0.2", - "make-fetch-happen": "^13.0.1", - "minimatch": "^9.0.4", + "hosted-git-info": "^8.0.2", + "ini": "^5.0.0", + "init-package-json": "^7.0.2", + "is-cidr": "^5.1.0", + "json-parse-even-better-errors": "^4.0.0", + "libnpmaccess": "^9.0.0", + "libnpmdiff": "^7.0.0", + "libnpmexec": "^9.0.0", + "libnpmfund": "^6.0.0", + "libnpmhook": "^11.0.0", + "libnpmorg": "^7.0.0", + "libnpmpack": "^8.0.0", + "libnpmpublish": "^10.0.1", + "libnpmsearch": "^8.0.0", + "libnpmteam": "^7.0.0", + "libnpmversion": "^7.0.0", + "make-fetch-happen": "^14.0.3", + "minimatch": "^9.0.5", "minipass": "^7.1.1", "minipass-pipeline": "^1.2.4", "ms": "^2.1.2", - "node-gyp": "^10.1.0", - "nopt": "^7.2.1", - "normalize-package-data": "^6.0.1", - "npm-audit-report": "^5.0.0", - "npm-install-checks": "^6.3.0", - "npm-package-arg": "^11.0.2", - "npm-pick-manifest": "^9.0.1", - "npm-profile": "^10.0.0", - "npm-registry-fetch": "^17.0.1", - "npm-user-validate": "^2.0.1", + "node-gyp": "^11.0.0", + "nopt": "^8.0.0", + "normalize-package-data": "^7.0.0", + "npm-audit-report": "^6.0.0", + "npm-install-checks": "^7.1.1", + "npm-package-arg": "^12.0.0", + "npm-pick-manifest": "^10.0.0", + "npm-profile": "^11.0.1", + "npm-registry-fetch": "^18.0.2", + "npm-user-validate": "^3.0.0", "p-map": "^4.0.0", - "pacote": "^18.0.6", - "parse-conflict-json": "^3.0.1", - "proc-log": "^4.2.0", + "pacote": "^19.0.1", + "parse-conflict-json": "^4.0.0", + "proc-log": "^5.0.0", "qrcode-terminal": "^0.12.0", - "read": "^3.0.1", - "semver": "^7.6.2", + "read": "^4.0.0", + "semver": "^7.6.3", "spdx-expression-parse": "^4.0.0", - "ssri": "^10.0.6", + "ssri": "^12.0.0", "supports-color": "^9.4.0", "tar": "^6.2.1", "text-table": "~0.2.0", "tiny-relative-date": "^1.3.0", "treeverse": "^3.0.0", - "validate-npm-package-name": "^5.0.1", - "which": "^4.0.0", - "write-file-atomic": "^5.0.1" + "validate-npm-package-name": "^6.0.0", + "which": "^5.0.0", + "write-file-atomic": "^6.0.0" }, "bin": { "npm": "bin/npm-cli.js", @@ -11193,6 +11410,7 @@ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", "dev": true, + "license": "MIT", "dependencies": { "path-key": "^3.0.0" }, @@ -11218,7 +11436,7 @@ } }, "node_modules/npm/node_modules/@isaacs/cliui/node_modules/ansi-regex": { - "version": "6.0.1", + "version": "6.1.0", "dev": true, "inBundle": true, "license": "MIT", @@ -11267,6 +11485,18 @@ "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, + "node_modules/npm/node_modules/@isaacs/fs-minipass": { + "version": "4.0.1", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "minipass": "^7.0.4" + }, + "engines": { + "node": ">=18.0.0" + } + }, "node_modules/npm/node_modules/@isaacs/string-locale-compare": { "version": "1.1.0", "dev": true, @@ -11274,7 +11504,7 @@ "license": "ISC" }, "node_modules/npm/node_modules/@npmcli/agent": { - "version": "2.2.2", + "version": "3.0.0", "dev": true, "inBundle": true, "license": "ISC", @@ -11286,48 +11516,48 @@ "socks-proxy-agent": "^8.0.3" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/npm/node_modules/@npmcli/arborist": { - "version": "7.5.2", + "version": "8.0.0", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { "@isaacs/string-locale-compare": "^1.1.0", - "@npmcli/fs": "^3.1.1", - "@npmcli/installed-package-contents": "^2.1.0", - "@npmcli/map-workspaces": "^3.0.2", - "@npmcli/metavuln-calculator": "^7.1.1", - "@npmcli/name-from-folder": "^2.0.0", - "@npmcli/node-gyp": "^3.0.0", - "@npmcli/package-json": "^5.1.0", - "@npmcli/query": "^3.1.0", - "@npmcli/redact": "^2.0.0", - "@npmcli/run-script": "^8.1.0", - "bin-links": "^4.0.4", - "cacache": "^18.0.3", + "@npmcli/fs": "^4.0.0", + "@npmcli/installed-package-contents": "^3.0.0", + "@npmcli/map-workspaces": "^4.0.1", + "@npmcli/metavuln-calculator": "^8.0.0", + "@npmcli/name-from-folder": "^3.0.0", + "@npmcli/node-gyp": "^4.0.0", + "@npmcli/package-json": "^6.0.1", + "@npmcli/query": "^4.0.0", + "@npmcli/redact": "^3.0.0", + "@npmcli/run-script": "^9.0.1", + "bin-links": "^5.0.0", + "cacache": "^19.0.1", "common-ancestor-path": "^1.0.1", - "hosted-git-info": "^7.0.2", - "json-parse-even-better-errors": "^3.0.2", + "hosted-git-info": "^8.0.0", + "json-parse-even-better-errors": "^4.0.0", "json-stringify-nice": "^1.1.4", "lru-cache": "^10.2.2", "minimatch": "^9.0.4", - "nopt": "^7.2.1", - "npm-install-checks": "^6.2.0", - "npm-package-arg": "^11.0.2", - "npm-pick-manifest": "^9.0.1", - "npm-registry-fetch": "^17.0.1", - "pacote": "^18.0.6", - "parse-conflict-json": "^3.0.0", - "proc-log": "^4.2.0", - "proggy": "^2.0.0", + "nopt": "^8.0.0", + "npm-install-checks": "^7.1.0", + "npm-package-arg": "^12.0.0", + "npm-pick-manifest": "^10.0.0", + "npm-registry-fetch": "^18.0.1", + "pacote": "^19.0.0", + "parse-conflict-json": "^4.0.0", + "proc-log": "^5.0.0", + "proggy": "^3.0.0", "promise-all-reject-late": "^1.0.0", "promise-call-limit": "^3.0.1", - "read-package-json-fast": "^3.0.2", + "read-package-json-fast": "^4.0.0", "semver": "^7.3.7", - "ssri": "^10.0.6", + "ssri": "^12.0.0", "treeverse": "^3.0.0", "walk-up-path": "^3.0.1" }, @@ -11335,30 +11565,30 @@ "arborist": "bin/index.js" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/npm/node_modules/@npmcli/config": { - "version": "8.3.2", + "version": "9.0.0", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "@npmcli/map-workspaces": "^3.0.2", + "@npmcli/map-workspaces": "^4.0.1", + "@npmcli/package-json": "^6.0.1", "ci-info": "^4.0.0", - "ini": "^4.1.2", - "nopt": "^7.2.1", - "proc-log": "^4.2.0", - "read-package-json-fast": "^3.0.2", + "ini": "^5.0.0", + "nopt": "^8.0.0", + "proc-log": "^5.0.0", "semver": "^7.3.5", "walk-up-path": "^3.0.1" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/npm/node_modules/@npmcli/fs": { - "version": "3.1.1", + "version": "4.0.0", "dev": true, "inBundle": true, "license": "ISC", @@ -11366,159 +11596,191 @@ "semver": "^7.3.5" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/npm/node_modules/@npmcli/git": { - "version": "5.0.7", + "version": "6.0.1", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "@npmcli/promise-spawn": "^7.0.0", + "@npmcli/promise-spawn": "^8.0.0", + "ini": "^5.0.0", "lru-cache": "^10.0.1", - "npm-pick-manifest": "^9.0.0", - "proc-log": "^4.0.0", + "npm-pick-manifest": "^10.0.0", + "proc-log": "^5.0.0", "promise-inflight": "^1.0.1", "promise-retry": "^2.0.1", "semver": "^7.3.5", - "which": "^4.0.0" + "which": "^5.0.0" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/npm/node_modules/@npmcli/installed-package-contents": { - "version": "2.1.0", + "version": "3.0.0", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "npm-bundled": "^3.0.0", - "npm-normalize-package-bin": "^3.0.0" + "npm-bundled": "^4.0.0", + "npm-normalize-package-bin": "^4.0.0" }, "bin": { "installed-package-contents": "bin/index.js" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/npm/node_modules/@npmcli/map-workspaces": { - "version": "3.0.6", + "version": "4.0.2", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "@npmcli/name-from-folder": "^2.0.0", + "@npmcli/name-from-folder": "^3.0.0", + "@npmcli/package-json": "^6.0.0", "glob": "^10.2.2", - "minimatch": "^9.0.0", - "read-package-json-fast": "^3.0.0" + "minimatch": "^9.0.0" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/npm/node_modules/@npmcli/metavuln-calculator": { - "version": "7.1.1", + "version": "8.0.1", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "cacache": "^18.0.0", - "json-parse-even-better-errors": "^3.0.0", - "pacote": "^18.0.0", - "proc-log": "^4.1.0", + "cacache": "^19.0.0", + "json-parse-even-better-errors": "^4.0.0", + "pacote": "^20.0.0", + "proc-log": "^5.0.0", "semver": "^7.3.5" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/@npmcli/metavuln-calculator/node_modules/pacote": { + "version": "20.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/git": "^6.0.0", + "@npmcli/installed-package-contents": "^3.0.0", + "@npmcli/package-json": "^6.0.0", + "@npmcli/promise-spawn": "^8.0.0", + "@npmcli/run-script": "^9.0.0", + "cacache": "^19.0.0", + "fs-minipass": "^3.0.0", + "minipass": "^7.0.2", + "npm-package-arg": "^12.0.0", + "npm-packlist": "^9.0.0", + "npm-pick-manifest": "^10.0.0", + "npm-registry-fetch": "^18.0.0", + "proc-log": "^5.0.0", + "promise-retry": "^2.0.1", + "sigstore": "^3.0.0", + "ssri": "^12.0.0", + "tar": "^6.1.11" + }, + "bin": { + "pacote": "bin/index.js" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/npm/node_modules/@npmcli/name-from-folder": { - "version": "2.0.0", + "version": "3.0.0", "dev": true, "inBundle": true, "license": "ISC", "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/npm/node_modules/@npmcli/node-gyp": { - "version": "3.0.0", + "version": "4.0.0", "dev": true, "inBundle": true, "license": "ISC", "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/npm/node_modules/@npmcli/package-json": { - "version": "5.1.0", + "version": "6.1.0", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "@npmcli/git": "^5.0.0", + "@npmcli/git": "^6.0.0", "glob": "^10.2.2", - "hosted-git-info": "^7.0.0", - "json-parse-even-better-errors": "^3.0.0", - "normalize-package-data": "^6.0.0", - "proc-log": "^4.0.0", + "hosted-git-info": "^8.0.0", + "json-parse-even-better-errors": "^4.0.0", + "normalize-package-data": "^7.0.0", + "proc-log": "^5.0.0", "semver": "^7.5.3" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/npm/node_modules/@npmcli/promise-spawn": { - "version": "7.0.2", + "version": "8.0.2", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "which": "^4.0.0" + "which": "^5.0.0" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/npm/node_modules/@npmcli/query": { - "version": "3.1.0", + "version": "4.0.0", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "postcss-selector-parser": "^6.0.10" + "postcss-selector-parser": "^6.1.2" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/npm/node_modules/@npmcli/redact": { - "version": "2.0.0", + "version": "3.0.0", "dev": true, "inBundle": true, "license": "ISC", "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/npm/node_modules/@npmcli/run-script": { - "version": "8.1.0", + "version": "9.0.2", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "@npmcli/node-gyp": "^3.0.0", - "@npmcli/package-json": "^5.0.0", - "@npmcli/promise-spawn": "^7.0.0", - "node-gyp": "^10.0.0", - "proc-log": "^4.0.0", - "which": "^4.0.0" + "@npmcli/node-gyp": "^4.0.0", + "@npmcli/package-json": "^6.0.0", + "@npmcli/promise-spawn": "^8.0.0", + "node-gyp": "^11.0.0", + "proc-log": "^5.0.0", + "which": "^5.0.0" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/npm/node_modules/@pkgjs/parseargs": { @@ -11531,27 +11793,6 @@ "node": ">=14" } }, - "node_modules/npm/node_modules/@sigstore/bundle": { - "version": "2.3.1", - "dev": true, - "inBundle": true, - "license": "Apache-2.0", - "dependencies": { - "@sigstore/protobuf-specs": "^0.3.1" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/@sigstore/core": { - "version": "1.1.0", - "dev": true, - "inBundle": true, - "license": "Apache-2.0", - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, "node_modules/npm/node_modules/@sigstore/protobuf-specs": { "version": "0.3.2", "dev": true, @@ -11561,48 +11802,17 @@ "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/npm/node_modules/@sigstore/sign": { - "version": "2.3.1", - "dev": true, - "inBundle": true, - "license": "Apache-2.0", - "dependencies": { - "@sigstore/bundle": "^2.3.0", - "@sigstore/core": "^1.0.0", - "@sigstore/protobuf-specs": "^0.3.1", - "make-fetch-happen": "^13.0.1", - "proc-log": "^4.2.0", - "promise-retry": "^2.0.1" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, "node_modules/npm/node_modules/@sigstore/tuf": { - "version": "2.3.3", - "dev": true, - "inBundle": true, - "license": "Apache-2.0", - "dependencies": { - "@sigstore/protobuf-specs": "^0.3.0", - "tuf-js": "^2.2.1" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/@sigstore/verify": { - "version": "1.2.0", + "version": "3.0.0", "dev": true, "inBundle": true, "license": "Apache-2.0", "dependencies": { - "@sigstore/bundle": "^2.3.1", - "@sigstore/core": "^1.1.0", - "@sigstore/protobuf-specs": "^0.3.1" + "@sigstore/protobuf-specs": "^0.3.2", + "tuf-js": "^3.0.1" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/npm/node_modules/@tufjs/canonical-json": { @@ -11614,26 +11824,13 @@ "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/npm/node_modules/@tufjs/models": { - "version": "2.0.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "@tufjs/canonical-json": "2.0.0", - "minimatch": "^9.0.4" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, "node_modules/npm/node_modules/abbrev": { - "version": "2.0.0", + "version": "3.0.0", "dev": true, "inBundle": true, "license": "ISC", "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/npm/node_modules/agent-base": { @@ -11701,62 +11898,138 @@ "license": "MIT" }, "node_modules/npm/node_modules/bin-links": { - "version": "4.0.4", + "version": "5.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "cmd-shim": "^7.0.0", + "npm-normalize-package-bin": "^4.0.0", + "proc-log": "^5.0.0", + "read-cmd-shim": "^5.0.0", + "write-file-atomic": "^6.0.0" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/binary-extensions": { + "version": "2.3.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm/node_modules/brace-expansion": { + "version": "2.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/npm/node_modules/cacache": { + "version": "19.0.1", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "cmd-shim": "^6.0.0", - "npm-normalize-package-bin": "^3.0.0", - "read-cmd-shim": "^4.0.0", - "write-file-atomic": "^5.0.0" + "@npmcli/fs": "^4.0.0", + "fs-minipass": "^3.0.0", + "glob": "^10.2.2", + "lru-cache": "^10.0.1", + "minipass": "^7.0.3", + "minipass-collect": "^2.0.1", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "p-map": "^7.0.2", + "ssri": "^12.0.0", + "tar": "^7.4.3", + "unique-filename": "^4.0.0" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/cacache/node_modules/chownr": { + "version": "3.0.0", + "dev": true, + "inBundle": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=18" + } + }, + "node_modules/npm/node_modules/cacache/node_modules/minizlib": { + "version": "3.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "minipass": "^7.0.4", + "rimraf": "^5.0.5" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/npm/node_modules/cacache/node_modules/mkdirp": { + "version": "3.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "bin": { + "mkdirp": "dist/cjs/src/bin.js" + }, + "engines": { + "node": ">=10" }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/npm/node_modules/binary-extensions": { - "version": "2.3.0", + "node_modules/npm/node_modules/cacache/node_modules/p-map": { + "version": "7.0.2", "dev": true, "inBundle": true, "license": "MIT", "engines": { - "node": ">=8" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/npm/node_modules/brace-expansion": { - "version": "2.0.1", + "node_modules/npm/node_modules/cacache/node_modules/tar": { + "version": "7.4.3", "dev": true, "inBundle": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "balanced-match": "^1.0.0" + "@isaacs/fs-minipass": "^4.0.0", + "chownr": "^3.0.0", + "minipass": "^7.1.2", + "minizlib": "^3.0.1", + "mkdirp": "^3.0.1", + "yallist": "^5.0.0" + }, + "engines": { + "node": ">=18" } }, - "node_modules/npm/node_modules/cacache": { - "version": "18.0.3", + "node_modules/npm/node_modules/cacache/node_modules/yallist": { + "version": "5.0.0", "dev": true, "inBundle": true, - "license": "ISC", - "dependencies": { - "@npmcli/fs": "^3.1.0", - "fs-minipass": "^3.0.0", - "glob": "^10.2.2", - "lru-cache": "^10.0.1", - "minipass": "^7.0.3", - "minipass-collect": "^2.0.1", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "p-map": "^4.0.0", - "ssri": "^10.0.0", - "tar": "^6.1.11", - "unique-filename": "^3.0.0" - }, + "license": "BlueOak-1.0.0", "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": ">=18" } }, "node_modules/npm/node_modules/chalk": { @@ -11781,7 +12054,7 @@ } }, "node_modules/npm/node_modules/ci-info": { - "version": "4.0.0", + "version": "4.1.0", "dev": true, "funding": [ { @@ -11796,7 +12069,7 @@ } }, "node_modules/npm/node_modules/cidr-regex": { - "version": "4.0.5", + "version": "4.1.1", "dev": true, "inBundle": true, "license": "BSD-2-Clause", @@ -11830,12 +12103,12 @@ } }, "node_modules/npm/node_modules/cmd-shim": { - "version": "6.0.3", + "version": "7.0.0", "dev": true, "inBundle": true, "license": "ISC", "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/npm/node_modules/color-convert": { @@ -11863,7 +12136,7 @@ "license": "ISC" }, "node_modules/npm/node_modules/cross-spawn": { - "version": "7.0.3", + "version": "7.0.6", "dev": true, "inBundle": true, "license": "MIT", @@ -11904,12 +12177,12 @@ } }, "node_modules/npm/node_modules/debug": { - "version": "4.3.4", + "version": "4.3.7", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { - "ms": "2.1.2" + "ms": "^2.1.3" }, "engines": { "node": ">=6.0" @@ -11920,12 +12193,6 @@ } } }, - "node_modules/npm/node_modules/debug/node_modules/ms": { - "version": "2.1.2", - "dev": true, - "inBundle": true, - "license": "MIT" - }, "node_modules/npm/node_modules/diff": { "version": "5.2.0", "dev": true, @@ -11988,7 +12255,7 @@ } }, "node_modules/npm/node_modules/foreground-child": { - "version": "3.1.1", + "version": "3.3.0", "dev": true, "inBundle": true, "license": "ISC", @@ -12015,33 +12282,22 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/npm/node_modules/function-bind": { - "version": "1.1.2", - "dev": true, - "inBundle": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/npm/node_modules/glob": { - "version": "10.3.15", + "version": "10.4.5", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { "foreground-child": "^3.1.0", - "jackspeak": "^2.3.6", - "minimatch": "^9.0.1", - "minipass": "^7.0.4", - "path-scurry": "^1.11.0" + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" }, "bin": { "glob": "dist/esm/bin.mjs" }, - "engines": { - "node": ">=16 || 14 >=14.18" - }, "funding": { "url": "https://github.com/sponsors/isaacs" } @@ -12052,20 +12308,8 @@ "inBundle": true, "license": "ISC" }, - "node_modules/npm/node_modules/hasown": { - "version": "2.0.2", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, "node_modules/npm/node_modules/hosted-git-info": { - "version": "7.0.2", + "version": "8.0.2", "dev": true, "inBundle": true, "license": "ISC", @@ -12073,7 +12317,7 @@ "lru-cache": "^10.0.1" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/npm/node_modules/http-cache-semantics": { @@ -12096,7 +12340,7 @@ } }, "node_modules/npm/node_modules/https-proxy-agent": { - "version": "7.0.4", + "version": "7.0.5", "dev": true, "inBundle": true, "license": "MIT", @@ -12122,7 +12366,7 @@ } }, "node_modules/npm/node_modules/ignore-walk": { - "version": "6.0.5", + "version": "7.0.0", "dev": true, "inBundle": true, "license": "ISC", @@ -12130,7 +12374,7 @@ "minimatch": "^9.0.0" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/npm/node_modules/imurmurhash": { @@ -12152,30 +12396,30 @@ } }, "node_modules/npm/node_modules/ini": { - "version": "4.1.2", + "version": "5.0.0", "dev": true, "inBundle": true, "license": "ISC", "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/npm/node_modules/init-package-json": { - "version": "6.0.3", + "version": "7.0.2", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "@npmcli/package-json": "^5.0.0", - "npm-package-arg": "^11.0.0", - "promzard": "^1.0.0", - "read": "^3.0.1", + "@npmcli/package-json": "^6.0.0", + "npm-package-arg": "^12.0.0", + "promzard": "^2.0.0", + "read": "^4.0.0", "semver": "^7.3.5", "validate-npm-package-license": "^3.0.4", - "validate-npm-package-name": "^5.0.0" + "validate-npm-package-name": "^6.0.0" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/npm/node_modules/ip-address": { @@ -12204,29 +12448,17 @@ } }, "node_modules/npm/node_modules/is-cidr": { - "version": "5.0.5", + "version": "5.1.0", "dev": true, "inBundle": true, "license": "BSD-2-Clause", "dependencies": { - "cidr-regex": "^4.0.4" + "cidr-regex": "^4.1.1" }, "engines": { "node": ">=14" } }, - "node_modules/npm/node_modules/is-core-module": { - "version": "2.13.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "hasown": "^2.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/npm/node_modules/is-fullwidth-code-point": { "version": "3.0.0", "dev": true, @@ -12236,12 +12468,6 @@ "node": ">=8" } }, - "node_modules/npm/node_modules/is-lambda": { - "version": "1.0.1", - "dev": true, - "inBundle": true, - "license": "MIT" - }, "node_modules/npm/node_modules/isexe": { "version": "2.0.0", "dev": true, @@ -12249,16 +12475,13 @@ "license": "ISC" }, "node_modules/npm/node_modules/jackspeak": { - "version": "2.3.6", + "version": "3.4.3", "dev": true, "inBundle": true, "license": "BlueOak-1.0.0", "dependencies": { "@isaacs/cliui": "^8.0.2" }, - "engines": { - "node": ">=14" - }, "funding": { "url": "https://github.com/sponsors/isaacs" }, @@ -12273,12 +12496,12 @@ "license": "MIT" }, "node_modules/npm/node_modules/json-parse-even-better-errors": { - "version": "3.0.2", + "version": "4.0.0", "dev": true, "inBundle": true, "license": "MIT", "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/npm/node_modules/json-stringify-nice": { @@ -12312,205 +12535,210 @@ "license": "MIT" }, "node_modules/npm/node_modules/libnpmaccess": { - "version": "8.0.6", + "version": "9.0.0", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "npm-package-arg": "^11.0.2", - "npm-registry-fetch": "^17.0.1" + "npm-package-arg": "^12.0.0", + "npm-registry-fetch": "^18.0.1" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/npm/node_modules/libnpmdiff": { - "version": "6.1.2", + "version": "7.0.0", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "@npmcli/arborist": "^7.5.2", - "@npmcli/installed-package-contents": "^2.1.0", + "@npmcli/arborist": "^8.0.0", + "@npmcli/installed-package-contents": "^3.0.0", "binary-extensions": "^2.3.0", "diff": "^5.1.0", "minimatch": "^9.0.4", - "npm-package-arg": "^11.0.2", - "pacote": "^18.0.6", + "npm-package-arg": "^12.0.0", + "pacote": "^19.0.0", "tar": "^6.2.1" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/npm/node_modules/libnpmexec": { - "version": "8.1.1", + "version": "9.0.0", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "@npmcli/arborist": "^7.5.2", - "@npmcli/run-script": "^8.1.0", + "@npmcli/arborist": "^8.0.0", + "@npmcli/run-script": "^9.0.1", "ci-info": "^4.0.0", - "npm-package-arg": "^11.0.2", - "pacote": "^18.0.6", - "proc-log": "^4.2.0", - "read": "^3.0.1", - "read-package-json-fast": "^3.0.2", + "npm-package-arg": "^12.0.0", + "pacote": "^19.0.0", + "proc-log": "^5.0.0", + "read": "^4.0.0", + "read-package-json-fast": "^4.0.0", "semver": "^7.3.7", "walk-up-path": "^3.0.1" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/npm/node_modules/libnpmfund": { - "version": "5.0.10", + "version": "6.0.0", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "@npmcli/arborist": "^7.5.2" + "@npmcli/arborist": "^8.0.0" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/npm/node_modules/libnpmhook": { - "version": "10.0.5", + "version": "11.0.0", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { "aproba": "^2.0.0", - "npm-registry-fetch": "^17.0.1" + "npm-registry-fetch": "^18.0.1" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/npm/node_modules/libnpmorg": { - "version": "6.0.6", + "version": "7.0.0", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { "aproba": "^2.0.0", - "npm-registry-fetch": "^17.0.1" + "npm-registry-fetch": "^18.0.1" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/npm/node_modules/libnpmpack": { - "version": "7.0.2", + "version": "8.0.0", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "@npmcli/arborist": "^7.5.2", - "@npmcli/run-script": "^8.1.0", - "npm-package-arg": "^11.0.2", - "pacote": "^18.0.6" + "@npmcli/arborist": "^8.0.0", + "@npmcli/run-script": "^9.0.1", + "npm-package-arg": "^12.0.0", + "pacote": "^19.0.0" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/npm/node_modules/libnpmpublish": { - "version": "9.0.8", + "version": "10.0.1", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { "ci-info": "^4.0.0", - "normalize-package-data": "^6.0.1", - "npm-package-arg": "^11.0.2", - "npm-registry-fetch": "^17.0.1", - "proc-log": "^4.2.0", + "normalize-package-data": "^7.0.0", + "npm-package-arg": "^12.0.0", + "npm-registry-fetch": "^18.0.1", + "proc-log": "^5.0.0", "semver": "^7.3.7", - "sigstore": "^2.2.0", - "ssri": "^10.0.6" + "sigstore": "^3.0.0", + "ssri": "^12.0.0" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/npm/node_modules/libnpmsearch": { - "version": "7.0.5", + "version": "8.0.0", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "npm-registry-fetch": "^17.0.1" + "npm-registry-fetch": "^18.0.1" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/npm/node_modules/libnpmteam": { - "version": "6.0.5", + "version": "7.0.0", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { "aproba": "^2.0.0", - "npm-registry-fetch": "^17.0.1" + "npm-registry-fetch": "^18.0.1" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/npm/node_modules/libnpmversion": { - "version": "6.0.2", + "version": "7.0.0", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "@npmcli/git": "^5.0.7", - "@npmcli/run-script": "^8.1.0", - "json-parse-even-better-errors": "^3.0.2", - "proc-log": "^4.2.0", + "@npmcli/git": "^6.0.1", + "@npmcli/run-script": "^9.0.1", + "json-parse-even-better-errors": "^4.0.0", + "proc-log": "^5.0.0", "semver": "^7.3.7" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/npm/node_modules/lru-cache": { - "version": "10.2.2", + "version": "10.4.3", "dev": true, "inBundle": true, - "license": "ISC", - "engines": { - "node": "14 || >=16.14" - } + "license": "ISC" }, "node_modules/npm/node_modules/make-fetch-happen": { - "version": "13.0.1", + "version": "14.0.3", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "@npmcli/agent": "^2.0.0", - "cacache": "^18.0.0", + "@npmcli/agent": "^3.0.0", + "cacache": "^19.0.1", "http-cache-semantics": "^4.1.1", - "is-lambda": "^1.0.1", "minipass": "^7.0.2", - "minipass-fetch": "^3.0.0", + "minipass-fetch": "^4.0.0", "minipass-flush": "^1.0.5", "minipass-pipeline": "^1.2.4", - "negotiator": "^0.6.3", - "proc-log": "^4.2.0", + "negotiator": "^1.0.0", + "proc-log": "^5.0.0", "promise-retry": "^2.0.1", - "ssri": "^10.0.0" + "ssri": "^12.0.0" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/make-fetch-happen/node_modules/negotiator": { + "version": "1.0.0", + "dev": true, + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" } }, "node_modules/npm/node_modules/minimatch": { - "version": "9.0.4", + "version": "9.0.5", "dev": true, "inBundle": true, "license": "ISC", @@ -12525,7 +12753,7 @@ } }, "node_modules/npm/node_modules/minipass": { - "version": "7.1.1", + "version": "7.1.2", "dev": true, "inBundle": true, "license": "ISC", @@ -12546,57 +12774,48 @@ } }, "node_modules/npm/node_modules/minipass-fetch": { - "version": "3.0.5", + "version": "4.0.0", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "minipass": "^7.0.3", "minipass-sized": "^1.0.3", - "minizlib": "^2.1.2" + "minizlib": "^3.0.1" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" }, "optionalDependencies": { "encoding": "^0.1.13" } }, - "node_modules/npm/node_modules/minipass-flush": { - "version": "1.0.5", + "node_modules/npm/node_modules/minipass-fetch/node_modules/minizlib": { + "version": "3.0.1", "dev": true, "inBundle": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "minipass": "^3.0.0" + "minipass": "^7.0.4", + "rimraf": "^5.0.5" }, "engines": { - "node": ">= 8" + "node": ">= 18" } }, - "node_modules/npm/node_modules/minipass-flush/node_modules/minipass": { - "version": "3.3.6", + "node_modules/npm/node_modules/minipass-flush": { + "version": "1.0.5", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "yallist": "^4.0.0" + "minipass": "^3.0.0" }, "engines": { - "node": ">=8" - } - }, - "node_modules/npm/node_modules/minipass-json-stream": { - "version": "1.0.1", - "dev": true, - "inBundle": true, - "license": "MIT", - "dependencies": { - "jsonparse": "^1.3.1", - "minipass": "^3.0.0" + "node": ">= 8" } }, - "node_modules/npm/node_modules/minipass-json-stream/node_modules/minipass": { + "node_modules/npm/node_modules/minipass-flush/node_modules/minipass": { "version": "3.3.6", "dev": true, "inBundle": true, @@ -12700,25 +12919,16 @@ "license": "MIT" }, "node_modules/npm/node_modules/mute-stream": { - "version": "1.0.0", + "version": "2.0.0", "dev": true, "inBundle": true, "license": "ISC", "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/npm/node_modules/negotiator": { - "version": "0.6.3", - "dev": true, - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/npm/node_modules/node-gyp": { - "version": "10.1.0", + "version": "11.0.0", "dev": true, "inBundle": true, "license": "MIT", @@ -12727,31 +12937,85 @@ "exponential-backoff": "^3.1.1", "glob": "^10.3.10", "graceful-fs": "^4.2.6", - "make-fetch-happen": "^13.0.0", - "nopt": "^7.0.0", - "proc-log": "^3.0.0", + "make-fetch-happen": "^14.0.3", + "nopt": "^8.0.0", + "proc-log": "^5.0.0", "semver": "^7.3.5", - "tar": "^6.1.2", - "which": "^4.0.0" + "tar": "^7.4.3", + "which": "^5.0.0" }, "bin": { "node-gyp": "bin/node-gyp.js" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/node-gyp/node_modules/chownr": { + "version": "3.0.0", + "dev": true, + "inBundle": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=18" + } + }, + "node_modules/npm/node_modules/node-gyp/node_modules/minizlib": { + "version": "3.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "minipass": "^7.0.4", + "rimraf": "^5.0.5" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/npm/node_modules/node-gyp/node_modules/mkdirp": { + "version": "3.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "bin": { + "mkdirp": "dist/cjs/src/bin.js" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/npm/node_modules/node-gyp/node_modules/tar": { + "version": "7.4.3", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "@isaacs/fs-minipass": "^4.0.0", + "chownr": "^3.0.0", + "minipass": "^7.1.2", + "minizlib": "^3.0.1", + "mkdirp": "^3.0.1", + "yallist": "^5.0.0" + }, + "engines": { + "node": ">=18" } }, - "node_modules/npm/node_modules/node-gyp/node_modules/proc-log": { - "version": "3.0.0", + "node_modules/npm/node_modules/node-gyp/node_modules/yallist": { + "version": "5.0.0", "dev": true, "inBundle": true, - "license": "ISC", + "license": "BlueOak-1.0.0", "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">=18" } }, "node_modules/npm/node_modules/nopt": { - "version": "7.2.1", + "version": "8.0.0", "dev": true, "inBundle": true, "license": "ISC", @@ -12761,48 +13025,56 @@ "bin": { "nopt": "bin/nopt.js" }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/nopt/node_modules/abbrev": { + "version": "2.0.0", + "dev": true, + "inBundle": true, + "license": "ISC", "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/npm/node_modules/normalize-package-data": { - "version": "6.0.1", + "version": "7.0.0", "dev": true, "inBundle": true, "license": "BSD-2-Clause", "dependencies": { - "hosted-git-info": "^7.0.0", - "is-core-module": "^2.8.1", + "hosted-git-info": "^8.0.0", "semver": "^7.3.5", "validate-npm-package-license": "^3.0.4" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/npm/node_modules/npm-audit-report": { - "version": "5.0.0", + "version": "6.0.0", "dev": true, "inBundle": true, "license": "ISC", "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/npm/node_modules/npm-bundled": { - "version": "3.0.1", + "version": "4.0.0", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "npm-normalize-package-bin": "^3.0.0" + "npm-normalize-package-bin": "^4.0.0" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/npm/node_modules/npm-install-checks": { - "version": "6.3.0", + "version": "7.1.1", "dev": true, "inBundle": true, "license": "BSD-2-Clause", @@ -12810,99 +13082,112 @@ "semver": "^7.1.1" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/npm/node_modules/npm-normalize-package-bin": { - "version": "3.0.1", + "version": "4.0.0", "dev": true, "inBundle": true, "license": "ISC", "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/npm/node_modules/npm-package-arg": { - "version": "11.0.2", + "version": "12.0.0", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "hosted-git-info": "^7.0.0", - "proc-log": "^4.0.0", + "hosted-git-info": "^8.0.0", + "proc-log": "^5.0.0", "semver": "^7.3.5", - "validate-npm-package-name": "^5.0.0" + "validate-npm-package-name": "^6.0.0" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/npm/node_modules/npm-packlist": { - "version": "8.0.2", + "version": "9.0.0", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "ignore-walk": "^6.0.4" + "ignore-walk": "^7.0.0" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/npm/node_modules/npm-pick-manifest": { - "version": "9.0.1", + "version": "10.0.0", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "npm-install-checks": "^6.0.0", - "npm-normalize-package-bin": "^3.0.0", - "npm-package-arg": "^11.0.0", + "npm-install-checks": "^7.1.0", + "npm-normalize-package-bin": "^4.0.0", + "npm-package-arg": "^12.0.0", "semver": "^7.3.5" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/npm/node_modules/npm-profile": { - "version": "10.0.0", + "version": "11.0.1", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "npm-registry-fetch": "^17.0.1", - "proc-log": "^4.0.0" + "npm-registry-fetch": "^18.0.0", + "proc-log": "^5.0.0" }, "engines": { - "node": ">=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/npm/node_modules/npm-registry-fetch": { - "version": "17.0.1", + "version": "18.0.2", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "@npmcli/redact": "^2.0.0", - "make-fetch-happen": "^13.0.0", + "@npmcli/redact": "^3.0.0", + "jsonparse": "^1.3.1", + "make-fetch-happen": "^14.0.0", "minipass": "^7.0.2", - "minipass-fetch": "^3.0.0", - "minipass-json-stream": "^1.0.1", - "minizlib": "^2.1.2", - "npm-package-arg": "^11.0.0", - "proc-log": "^4.0.0" + "minipass-fetch": "^4.0.0", + "minizlib": "^3.0.1", + "npm-package-arg": "^12.0.0", + "proc-log": "^5.0.0" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/npm-registry-fetch/node_modules/minizlib": { + "version": "3.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "minipass": "^7.0.4", + "rimraf": "^5.0.5" + }, + "engines": { + "node": ">= 18" } }, "node_modules/npm/node_modules/npm-user-validate": { - "version": "2.0.1", + "version": "3.0.0", "dev": true, "inBundle": true, "license": "BSD-2-Clause", "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/npm/node_modules/p-map": { @@ -12920,49 +13205,55 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/npm/node_modules/package-json-from-dist": { + "version": "1.0.1", + "dev": true, + "inBundle": true, + "license": "BlueOak-1.0.0" + }, "node_modules/npm/node_modules/pacote": { - "version": "18.0.6", + "version": "19.0.1", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "@npmcli/git": "^5.0.0", - "@npmcli/installed-package-contents": "^2.0.1", - "@npmcli/package-json": "^5.1.0", - "@npmcli/promise-spawn": "^7.0.0", - "@npmcli/run-script": "^8.0.0", - "cacache": "^18.0.0", + "@npmcli/git": "^6.0.0", + "@npmcli/installed-package-contents": "^3.0.0", + "@npmcli/package-json": "^6.0.0", + "@npmcli/promise-spawn": "^8.0.0", + "@npmcli/run-script": "^9.0.0", + "cacache": "^19.0.0", "fs-minipass": "^3.0.0", "minipass": "^7.0.2", - "npm-package-arg": "^11.0.0", - "npm-packlist": "^8.0.0", - "npm-pick-manifest": "^9.0.0", - "npm-registry-fetch": "^17.0.0", - "proc-log": "^4.0.0", + "npm-package-arg": "^12.0.0", + "npm-packlist": "^9.0.0", + "npm-pick-manifest": "^10.0.0", + "npm-registry-fetch": "^18.0.0", + "proc-log": "^5.0.0", "promise-retry": "^2.0.1", - "sigstore": "^2.2.0", - "ssri": "^10.0.0", + "sigstore": "^3.0.0", + "ssri": "^12.0.0", "tar": "^6.1.11" }, "bin": { "pacote": "bin/index.js" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/npm/node_modules/parse-conflict-json": { - "version": "3.0.1", + "version": "4.0.0", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "json-parse-even-better-errors": "^3.0.0", + "json-parse-even-better-errors": "^4.0.0", "just-diff": "^6.0.0", "just-diff-apply": "^5.2.0" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/npm/node_modules/path-key": { @@ -12991,7 +13282,7 @@ } }, "node_modules/npm/node_modules/postcss-selector-parser": { - "version": "6.0.16", + "version": "6.1.2", "dev": true, "inBundle": true, "license": "MIT", @@ -13004,21 +13295,21 @@ } }, "node_modules/npm/node_modules/proc-log": { - "version": "4.2.0", + "version": "5.0.0", "dev": true, "inBundle": true, "license": "ISC", "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/npm/node_modules/proggy": { - "version": "2.0.0", + "version": "3.0.0", "dev": true, "inBundle": true, "license": "ISC", "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/npm/node_modules/promise-all-reject-late": { @@ -13031,7 +13322,7 @@ } }, "node_modules/npm/node_modules/promise-call-limit": { - "version": "3.0.1", + "version": "3.0.2", "dev": true, "inBundle": true, "license": "ISC", @@ -13059,15 +13350,15 @@ } }, "node_modules/npm/node_modules/promzard": { - "version": "1.0.2", + "version": "2.0.0", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "read": "^3.0.1" + "read": "^4.0.0" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/npm/node_modules/qrcode-terminal": { @@ -13079,37 +13370,37 @@ } }, "node_modules/npm/node_modules/read": { - "version": "3.0.1", + "version": "4.0.0", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "mute-stream": "^1.0.0" + "mute-stream": "^2.0.0" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/npm/node_modules/read-cmd-shim": { - "version": "4.0.0", + "version": "5.0.0", "dev": true, "inBundle": true, "license": "ISC", "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/npm/node_modules/read-package-json-fast": { - "version": "3.0.2", + "version": "4.0.0", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "json-parse-even-better-errors": "^3.0.0", - "npm-normalize-package-bin": "^3.0.0" + "json-parse-even-better-errors": "^4.0.0", + "npm-normalize-package-bin": "^4.0.0" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/npm/node_modules/retry": { @@ -13121,6 +13412,21 @@ "node": ">= 4" } }, + "node_modules/npm/node_modules/rimraf": { + "version": "5.0.10", + "dev": true, + "inBundle": true, + "license": "ISC", + "dependencies": { + "glob": "^10.3.7" + }, + "bin": { + "rimraf": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/npm/node_modules/safer-buffer": { "version": "2.1.2", "dev": true, @@ -13129,7 +13435,7 @@ "optional": true }, "node_modules/npm/node_modules/semver": { - "version": "7.6.2", + "version": "7.6.3", "dev": true, "inBundle": true, "license": "ISC", @@ -13174,20 +13480,72 @@ } }, "node_modules/npm/node_modules/sigstore": { - "version": "2.3.0", + "version": "3.0.0", "dev": true, "inBundle": true, "license": "Apache-2.0", "dependencies": { - "@sigstore/bundle": "^2.3.1", - "@sigstore/core": "^1.0.0", - "@sigstore/protobuf-specs": "^0.3.1", - "@sigstore/sign": "^2.3.0", - "@sigstore/tuf": "^2.3.1", - "@sigstore/verify": "^1.2.0" + "@sigstore/bundle": "^3.0.0", + "@sigstore/core": "^2.0.0", + "@sigstore/protobuf-specs": "^0.3.2", + "@sigstore/sign": "^3.0.0", + "@sigstore/tuf": "^3.0.0", + "@sigstore/verify": "^2.0.0" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/sigstore/node_modules/@sigstore/bundle": { + "version": "3.0.0", + "dev": true, + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "@sigstore/protobuf-specs": "^0.3.2" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/sigstore/node_modules/@sigstore/core": { + "version": "2.0.0", + "dev": true, + "inBundle": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/sigstore/node_modules/@sigstore/sign": { + "version": "3.0.0", + "dev": true, + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "@sigstore/bundle": "^3.0.0", + "@sigstore/core": "^2.0.0", + "@sigstore/protobuf-specs": "^0.3.2", + "make-fetch-happen": "^14.0.1", + "proc-log": "^5.0.0", + "promise-retry": "^2.0.1" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/sigstore/node_modules/@sigstore/verify": { + "version": "2.0.0", + "dev": true, + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "@sigstore/bundle": "^3.0.0", + "@sigstore/core": "^2.0.0", + "@sigstore/protobuf-specs": "^0.3.2" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/npm/node_modules/smart-buffer": { @@ -13215,14 +13573,14 @@ } }, "node_modules/npm/node_modules/socks-proxy-agent": { - "version": "8.0.3", + "version": "8.0.4", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { "agent-base": "^7.1.1", "debug": "^4.3.4", - "socks": "^2.7.1" + "socks": "^2.8.3" }, "engines": { "node": ">= 14" @@ -13265,7 +13623,7 @@ } }, "node_modules/npm/node_modules/spdx-license-ids": { - "version": "3.0.17", + "version": "3.0.20", "dev": true, "inBundle": true, "license": "CC0-1.0" @@ -13277,7 +13635,7 @@ "license": "BSD-3-Clause" }, "node_modules/npm/node_modules/ssri": { - "version": "10.0.6", + "version": "12.0.0", "dev": true, "inBundle": true, "license": "ISC", @@ -13285,7 +13643,7 @@ "minipass": "^7.0.3" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/npm/node_modules/string-width": { @@ -13426,33 +13784,46 @@ } }, "node_modules/npm/node_modules/tuf-js": { - "version": "2.2.1", + "version": "3.0.1", "dev": true, "inBundle": true, "license": "MIT", "dependencies": { - "@tufjs/models": "2.0.1", - "debug": "^4.3.4", - "make-fetch-happen": "^13.0.1" + "@tufjs/models": "3.0.1", + "debug": "^4.3.6", + "make-fetch-happen": "^14.0.1" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" + } + }, + "node_modules/npm/node_modules/tuf-js/node_modules/@tufjs/models": { + "version": "3.0.1", + "dev": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "@tufjs/canonical-json": "2.0.0", + "minimatch": "^9.0.5" + }, + "engines": { + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/npm/node_modules/unique-filename": { - "version": "3.0.0", + "version": "4.0.0", "dev": true, "inBundle": true, "license": "ISC", "dependencies": { - "unique-slug": "^4.0.0" + "unique-slug": "^5.0.0" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/npm/node_modules/unique-slug": { - "version": "4.0.0", + "version": "5.0.0", "dev": true, "inBundle": true, "license": "ISC", @@ -13460,7 +13831,7 @@ "imurmurhash": "^0.1.4" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/npm/node_modules/util-deprecate": { @@ -13490,12 +13861,12 @@ } }, "node_modules/npm/node_modules/validate-npm-package-name": { - "version": "5.0.1", + "version": "6.0.0", "dev": true, "inBundle": true, "license": "ISC", "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/npm/node_modules/walk-up-path": { @@ -13505,7 +13876,7 @@ "license": "ISC" }, "node_modules/npm/node_modules/which": { - "version": "4.0.0", + "version": "5.0.0", "dev": true, "inBundle": true, "license": "ISC", @@ -13516,7 +13887,7 @@ "node-which": "bin/which.js" }, "engines": { - "node": "^16.13.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/npm/node_modules/which/node_modules/isexe": { @@ -13579,7 +13950,7 @@ } }, "node_modules/npm/node_modules/wrap-ansi/node_modules/ansi-regex": { - "version": "6.0.1", + "version": "6.1.0", "dev": true, "inBundle": true, "license": "MIT", @@ -13629,7 +14000,7 @@ } }, "node_modules/npm/node_modules/write-file-atomic": { - "version": "5.0.1", + "version": "6.0.0", "dev": true, "inBundle": true, "license": "ISC", @@ -13638,7 +14009,7 @@ "signal-exit": "^4.0.1" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^18.17.0 || >=20.5.0" } }, "node_modules/npm/node_modules/yallist": { @@ -13651,6 +14022,7 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "license": "BSD-2-Clause", "dependencies": { "boolbase": "^1.0.0" }, @@ -13659,15 +14031,17 @@ } }, "node_modules/nwsapi": { - "version": "2.2.9", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.9.tgz", - "integrity": "sha512-2f3F0SEEer8bBu0dsNCFF50N0cTThV1nWFYcEYFZttdW0lDAoybv9cQoK7X7/68Z89S7FoRrVjP1LPX4XRf9vg==", - "dev": true + "version": "2.2.16", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.16.tgz", + "integrity": "sha512-F1I/bimDpj3ncaNDhfyMWuFqmQDBwDB0Fogc2qpL3BWvkQteFD/8BzWuIRl83rq0DXfm8SGt/HFhLXZyljTXcQ==", + "dev": true, + "license": "MIT" }, "node_modules/object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -13677,15 +14051,20 @@ "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", "dev": true, + "license": "MIT", "engines": { "node": ">= 6" } }, "node_modules/object-inspect": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", - "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", + "version": "1.13.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.3.tgz", + "integrity": "sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA==", "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -13695,19 +14074,23 @@ "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" } }, "node_modules/object.assign": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", - "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz", + "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.5", + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", "define-properties": "^1.2.1", - "has-symbols": "^1.0.3", + "es-object-atoms": "^1.0.0", + "has-symbols": "^1.1.0", "object-keys": "^1.1.1" }, "engines": { @@ -13722,6 +14105,7 @@ "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.8.tgz", "integrity": "sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", @@ -13736,6 +14120,7 @@ "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", @@ -13754,6 +14139,7 @@ "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz", "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", @@ -13763,30 +14149,15 @@ "node": ">= 0.4" } }, - "node_modules/object.hasown": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.4.tgz", - "integrity": "sha512-FZ9LZt9/RHzGySlBARE3VF+gE26TxR38SdmqOqliuTnl9wrKulaQs+4dee1V+Io8VfxqzAfHu6YuRgUy8OHoTg==", - "dev": true, - "dependencies": { - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/object.values": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.0.tgz", - "integrity": "sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.1.tgz", + "integrity": "sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", "define-properties": "^1.2.1", "es-object-atoms": "^1.0.0" }, @@ -13800,13 +14171,15 @@ "node_modules/oblivious-set": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/oblivious-set/-/oblivious-set-1.0.0.tgz", - "integrity": "sha512-z+pI07qxo4c2CulUHCDf9lcqDlMSo72N/4rLUpRXf6fu+q8vjt8y0xS+Tlf8NTJDdTXHbdeO1n3MlbctwEoXZw==" + "integrity": "sha512-z+pI07qxo4c2CulUHCDf9lcqDlMSo72N/4rLUpRXf6fu+q8vjt8y0xS+Tlf8NTJDdTXHbdeO1n3MlbctwEoXZw==", + "license": "MIT" }, "node_modules/on-headers": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8" } @@ -13815,6 +14188,7 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "license": "ISC", "dependencies": { "wrappy": "1" } @@ -13824,6 +14198,7 @@ "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", "dev": true, + "license": "MIT", "dependencies": { "mimic-fn": "^2.1.0" }, @@ -13839,6 +14214,7 @@ "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", "dev": true, + "license": "MIT", "dependencies": { "deep-is": "^0.1.3", "fast-levenshtein": "^2.0.6", @@ -13851,18 +14227,37 @@ "node": ">= 0.8.0" } }, - "node_modules/outvariant": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/outvariant/-/outvariant-1.4.3.tgz", - "integrity": "sha512-+Sl2UErvtsoajRDKCE5/dBz4DIvHXQQnAxtQTF04OJxY0+DyZXSo5P5Bb7XYWOh81syohlYL24hbDwxedPUJCA==", - "dev": true, - "license": "MIT" - }, + "node_modules/outvariant": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/outvariant/-/outvariant-1.4.3.tgz", + "integrity": "sha512-+Sl2UErvtsoajRDKCE5/dBz4DIvHXQQnAxtQTF04OJxY0+DyZXSo5P5Bb7XYWOh81syohlYL24hbDwxedPUJCA==", + "dev": true, + "license": "MIT" + }, + "node_modules/own-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz", + "integrity": "sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.2.6", + "object-keys": "^1.1.1", + "safe-push-apply": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/p-limit": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, + "license": "MIT", "dependencies": { "yocto-queue": "^0.1.0" }, @@ -13878,6 +14273,7 @@ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "dev": true, + "license": "MIT", "dependencies": { "p-limit": "^3.0.2" }, @@ -13893,15 +14289,24 @@ "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } }, + "node_modules/package-json-from-dist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", + "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", + "dev": true, + "license": "BlueOak-1.0.0" + }, "node_modules/parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", "dev": true, + "license": "MIT", "dependencies": { "callsites": "^3.0.0" }, @@ -13914,6 +14319,7 @@ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/code-frame": "^7.0.0", "error-ex": "^1.3.1", @@ -13928,12 +14334,13 @@ } }, "node_modules/parse5": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", - "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.2.1.tgz", + "integrity": "sha512-BuBYQYlv1ckiPdQi/ohiivi9Sagc9JG+Ozs0r7b/0iK3sKmrb0b9FdWdBbOdx6hBCM/F9Ir82ofnBhtZOjCRPQ==", "dev": true, + "license": "MIT", "dependencies": { - "entities": "^4.4.0" + "entities": "^4.5.0" }, "funding": { "url": "https://github.com/inikulin/parse5?sponsor=1" @@ -13944,6 +14351,7 @@ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -13952,6 +14360,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -13960,13 +14369,15 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", "integrity": "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==", - "dev": true + "dev": true, + "license": "(WTFPL OR MIT)" }, "node_modules/path-key": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -13975,37 +14386,38 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/path-scurry": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.2.tgz", - "integrity": "sha512-7xTavNy5RQXnsjANvVvMkEjvloOinkAjv/Z6Ildz9v2RinZ4SBKTWFOVRbaF8p0vpHnyjV/UwNDdKuUv6M5qcA==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", "dev": true, + "license": "BlueOak-1.0.0", "dependencies": { "lru-cache": "^10.2.0", "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" }, "engines": { - "node": ">=16 || 14 >=14.17" + "node": ">=16 || 14 >=14.18" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, "node_modules/path-scurry/node_modules/lru-cache": { - "version": "10.2.2", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.2.tgz", - "integrity": "sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==", + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", "dev": true, - "engines": { - "node": "14 || >=16.14" - } + "license": "ISC" }, "node_modules/path-to-regexp": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.1.0.tgz", - "integrity": "sha512-Bqn3vc8CMHty6zuD+tG23s6v2kwxslHEhTj4eYaVKGIEB+YX/2wd0/rgXLFD9G9id9KCtbVy/3ZgmvZjpa0UdQ==", + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.2.0.tgz", + "integrity": "sha512-TdrF7fW9Rphjq4RjrW0Kp2AW0Ahwu9sRGTkS6bvDi0SCwZlEZYmcfDbEsTz8RVk0EHIS/Vd1bv3JhG+1xZuAyQ==", + "license": "MIT", "engines": { "node": ">=16" } @@ -14015,6 +14427,7 @@ "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -14023,28 +14436,33 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz", "integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/pathval": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", "dev": true, + "license": "MIT", "engines": { "node": "*" } }, "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "license": "ISC" }, "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", + "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=8.6" + "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/jonschlinkert" @@ -14055,6 +14473,7 @@ "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -14064,34 +14483,44 @@ "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 6" } }, "node_modules/pkg-types": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.1.0.tgz", - "integrity": "sha512-/RpmvKdxKf8uILTtoOhAgf30wYbP2Qw+L9p3Rvshx1JZVX+XQNZQFjlbmGHEGIm4CkVPlSn+NXmIM8+9oWQaSA==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.3.1.tgz", + "integrity": "sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==", "dev": true, + "license": "MIT", "dependencies": { - "confbox": "^0.1.7", - "mlly": "^1.6.1", - "pathe": "^1.1.2" + "confbox": "^0.1.8", + "mlly": "^1.7.4", + "pathe": "^2.0.1" } }, + "node_modules/pkg-types/node_modules/pathe": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.2.tgz", + "integrity": "sha512-15Ztpk+nov8DR524R4BF7uEuzESgzUEAV4Ah7CUMNGXdE5ELuvxElxGXndBl32vMSsWa1jpNf22Z+Er3sKwq+w==", + "dev": true, + "license": "MIT" + }, "node_modules/possible-typed-array-names": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" } }, "node_modules/postcss": { - "version": "8.4.38", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.38.tgz", - "integrity": "sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==", + "version": "8.5.1", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.1.tgz", + "integrity": "sha512-6oz2beyjc5VMn/KV1pPw8fliQkhBXrVn1Z3TVyqZxU8kZpzEKhBdmCFqI6ZbmGtamQvQGuU1sgPTk8ZrXDD7jQ==", "funding": [ { "type": "opencollective", @@ -14106,10 +14535,11 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { - "nanoid": "^3.3.7", - "picocolors": "^1.0.0", - "source-map-js": "^1.2.0" + "nanoid": "^3.3.8", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" }, "engines": { "node": "^10 || ^12 || >=14" @@ -14129,6 +14559,7 @@ "url": "https://opencollective.com/csstools" } ], + "license": "MIT", "dependencies": { "postcss-selector-parser": "^6.0.13" }, @@ -14143,6 +14574,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/postcss-clamp/-/postcss-clamp-4.1.0.tgz", "integrity": "sha512-ry4b1Llo/9zz+PKC+030KUnPITTJAHeOwjfAyyB60eT0AorGLdzp52s31OsPRHRf8NchkgFoG2y6fCfn1IV1Ow==", + "license": "MIT", "dependencies": { "postcss-value-parser": "^4.2.0" }, @@ -14167,6 +14599,7 @@ "url": "https://opencollective.com/csstools" } ], + "license": "CC0-1.0", "dependencies": { "@csstools/postcss-progressive-custom-properties": "^2.3.0", "postcss-value-parser": "^4.2.0" @@ -14192,6 +14625,7 @@ "url": "https://opencollective.com/csstools" } ], + "license": "MIT", "dependencies": { "@csstools/utilities": "^1.0.0", "postcss-value-parser": "^4.2.0" @@ -14207,6 +14641,7 @@ "version": "8.0.2", "resolved": "https://registry.npmjs.org/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-8.0.2.tgz", "integrity": "sha512-xWf/JmAxVoB5bltHpXk+uGRoGFwu4WDAR7210el+iyvTdqiKpDhtcT8N3edXMoVJY0WHFMrKMUieql/wRNiXkw==", + "license": "CC0-1.0", "dependencies": { "postcss-value-parser": "^4.2.0" }, @@ -14235,6 +14670,7 @@ "url": "https://opencollective.com/csstools" } ], + "license": "MIT", "dependencies": { "@csstools/cascade-layer-name-parser": "^1.0.2", "@csstools/css-parser-algorithms": "^2.2.0", @@ -14249,9 +14685,9 @@ } }, "node_modules/postcss-custom-properties": { - "version": "13.3.8", - "resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-13.3.8.tgz", - "integrity": "sha512-OP9yj4yXxYOiW2n2TRpnE7C0yePvBiZb72S22mZVNzZEObdTYFjNaX6oZO4R4E8Ie9RmC/Jxw8EKYSbLrC1EFA==", + "version": "13.3.12", + "resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-13.3.12.tgz", + "integrity": "sha512-oPn/OVqONB2ZLNqN185LDyaVByELAA/u3l2CS2TS16x2j2XsmV4kd8U49+TMxmUsEU9d8fB/I10E6U7kB0L1BA==", "funding": [ { "type": "github", @@ -14262,10 +14698,11 @@ "url": "https://opencollective.com/csstools" } ], + "license": "MIT", "dependencies": { - "@csstools/cascade-layer-name-parser": "^1.0.9", - "@csstools/css-parser-algorithms": "^2.6.1", - "@csstools/css-tokenizer": "^2.2.4", + "@csstools/cascade-layer-name-parser": "^1.0.13", + "@csstools/css-parser-algorithms": "^2.7.1", + "@csstools/css-tokenizer": "^2.4.1", "@csstools/utilities": "^1.0.0", "postcss-value-parser": "^4.2.0" }, @@ -14277,9 +14714,9 @@ } }, "node_modules/postcss-custom-selectors": { - "version": "7.1.8", - "resolved": "https://registry.npmjs.org/postcss-custom-selectors/-/postcss-custom-selectors-7.1.8.tgz", - "integrity": "sha512-fqDkGSEsO7+oQaqdRdR8nwwqH+N2uk6LE/2g4myVJJYz/Ly418lHKEleKTdV/GzjBjFcG4n0dbfuH/Pd2BE8YA==", + "version": "7.1.12", + "resolved": "https://registry.npmjs.org/postcss-custom-selectors/-/postcss-custom-selectors-7.1.12.tgz", + "integrity": "sha512-ctIoprBMJwByYMGjXG0F7IT2iMF2hnamQ+aWZETyBM0aAlyaYdVZTeUkk8RB+9h9wP+NdN3f01lfvKl2ZSqC0g==", "funding": [ { "type": "github", @@ -14290,11 +14727,12 @@ "url": "https://opencollective.com/csstools" } ], + "license": "MIT", "dependencies": { - "@csstools/cascade-layer-name-parser": "^1.0.9", - "@csstools/css-parser-algorithms": "^2.6.1", - "@csstools/css-tokenizer": "^2.2.4", - "postcss-selector-parser": "^6.0.13" + "@csstools/cascade-layer-name-parser": "^1.0.13", + "@csstools/css-parser-algorithms": "^2.7.1", + "@csstools/css-tokenizer": "^2.4.1", + "postcss-selector-parser": "^6.1.0" }, "engines": { "node": "^14 || ^16 || >=18" @@ -14307,6 +14745,7 @@ "version": "7.0.2", "resolved": "https://registry.npmjs.org/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-7.0.2.tgz", "integrity": "sha512-cMnslilYxBf9k3qejnovrUONZx1rXeUZJw06fgIUBzABJe3D2LiLL5WAER7Imt3nrkaIgG05XZBztueLEf5P8w==", + "license": "CC0-1.0", "dependencies": { "postcss-selector-parser": "^6.0.10" }, @@ -14335,6 +14774,7 @@ "url": "https://opencollective.com/csstools" } ], + "license": "CC0-1.0", "dependencies": { "@csstools/postcss-progressive-custom-properties": "^2.3.0", "postcss-value-parser": "^4.2.0" @@ -14350,6 +14790,7 @@ "version": "5.0.2", "resolved": "https://registry.npmjs.org/postcss-flexbugs-fixes/-/postcss-flexbugs-fixes-5.0.2.tgz", "integrity": "sha512-18f9voByak7bTktR2QgDveglpn9DTbBWPUzSOe9g0N4WR/2eSt6Vrcbf0hmspvMI6YWGywz6B9f7jzpFNJJgnQ==", + "license": "MIT", "peerDependencies": { "postcss": "^8.1.4" } @@ -14358,6 +14799,7 @@ "version": "8.0.2", "resolved": "https://registry.npmjs.org/postcss-focus-visible/-/postcss-focus-visible-8.0.2.tgz", "integrity": "sha512-f/Vd+EC/GaKElknU59esVcRYr/Y3t1ZAQyL4u2xSOgkDy4bMCmG7VP5cGvj3+BTLNE9ETfEuz2nnt4qkZwTTeA==", + "license": "CC0-1.0", "dependencies": { "postcss-selector-parser": "^6.0.10" }, @@ -14376,6 +14818,7 @@ "version": "7.0.2", "resolved": "https://registry.npmjs.org/postcss-focus-within/-/postcss-focus-within-7.0.2.tgz", "integrity": "sha512-AHAJ89UQBcqBvFgQJE9XasGuwMNkKsGj4D/f9Uk60jFmEBHpAL14DrnSk3Rj+SwZTr/WUG+mh+Rvf8fid/346w==", + "license": "CC0-1.0", "dependencies": { "postcss-selector-parser": "^6.0.10" }, @@ -14394,6 +14837,7 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/postcss-font-variant/-/postcss-font-variant-5.0.0.tgz", "integrity": "sha512-1fmkBaCALD72CK2a9i468mA/+tr9/1cBxRRMXOUaZqO43oWPR5imcyPjXwuv7PXbCid4ndlP5zWhidQVVa3hmA==", + "license": "MIT", "peerDependencies": { "postcss": "^8.1.0" } @@ -14402,6 +14846,7 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/postcss-gap-properties/-/postcss-gap-properties-4.0.1.tgz", "integrity": "sha512-V5OuQGw4lBumPlwHWk/PRfMKjaq/LTGR4WDTemIMCaMevArVfCCA9wBJiL1VjDAd+rzuCIlkRoRvDsSiAaZ4Fg==", + "license": "CC0-1.0", "engines": { "node": "^14 || ^16 || >=18" }, @@ -14417,6 +14862,7 @@ "version": "5.0.2", "resolved": "https://registry.npmjs.org/postcss-image-set-function/-/postcss-image-set-function-5.0.2.tgz", "integrity": "sha512-Sszjwo0ubETX0Fi5MvpYzsONwrsjeabjMoc5YqHvURFItXgIu3HdCjcVuVKGMPGzKRhgaknmdM5uVWInWPJmeg==", + "license": "CC0-1.0", "dependencies": { "postcss-value-parser": "^4.2.0" }, @@ -14436,6 +14882,7 @@ "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz", "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==", "dev": true, + "license": "MIT", "dependencies": { "postcss-value-parser": "^4.0.0", "read-cache": "^1.0.0", @@ -14452,6 +14899,7 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/postcss-initial/-/postcss-initial-4.0.1.tgz", "integrity": "sha512-0ueD7rPqX8Pn1xJIjay0AZeIuDoF+V+VvMt/uOnn+4ezUKhZM/NokDeP6DwMNyIoYByuN/94IQnt5FEkaN59xQ==", + "license": "MIT", "peerDependencies": { "postcss": "^8.0.0" } @@ -14461,6 +14909,7 @@ "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz", "integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==", "dev": true, + "license": "MIT", "dependencies": { "camelcase-css": "^2.0.1" }, @@ -14489,6 +14938,7 @@ "url": "https://opencollective.com/csstools" } ], + "license": "CC0-1.0", "dependencies": { "@csstools/css-color-parser": "^1.2.0", "@csstools/css-parser-algorithms": "^2.1.1", @@ -14517,6 +14967,7 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { "lilconfig": "^3.0.0", "yaml": "^2.3.4" @@ -14537,23 +14988,12 @@ } } }, - "node_modules/postcss-load-config/node_modules/lilconfig": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.1.tgz", - "integrity": "sha512-O18pf7nyvHTckunPWCV1XUNXU1piu01y2b7ATJ0ppkUkk8ocqVWBrYjJBCwHDjD/ZWcfyrA0P4gKhzWGi5EINQ==", - "dev": true, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/antonk52" - } - }, "node_modules/postcss-load-config/node_modules/yaml": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.4.2.tgz", - "integrity": "sha512-B3VqDZ+JAg1nZpaEmWtTXUlBneoGx6CPM9b0TENK6aoSu5t73dItudwdgmi6tHlIZZId4dZ9skcAQ2UbcyAeVA==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.7.0.tgz", + "integrity": "sha512-+hSoy/QHluxmC9kCIJyL/uyFmLmc+e5CFR5Wa+bpIhIj85LVb9ZH2nVnqrHoSvKogwODv0ClqZkmiSSaIH5LTA==", "dev": true, + "license": "ISC", "bin": { "yaml": "bin.mjs" }, @@ -14575,6 +15015,7 @@ "url": "https://opencollective.com/csstools" } ], + "license": "CC0-1.0", "dependencies": { "postcss-value-parser": "^4.2.0" }, @@ -14589,23 +15030,31 @@ "version": "0.2.3", "resolved": "https://registry.npmjs.org/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz", "integrity": "sha512-3sOlxmbKcSHMjlUXQZKQ06jOswE7oVkXPxmZdoB1r5l0q6gTFTQSHxNxOrCccElbW7dxNytifNEo8qidX2Vsig==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/postcss-nested": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.0.1.tgz", - "integrity": "sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.2.0.tgz", + "integrity": "sha512-HQbt28KulC5AJzG+cZtj9kvKB93CFCdLvog1WFLf1D+xmMvPGlBstkpTEZfK5+AN9hfJocyBFCNiqyS48bpgzQ==", "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", "dependencies": { - "postcss-selector-parser": "^6.0.11" + "postcss-selector-parser": "^6.1.1" }, "engines": { "node": ">=12.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, "peerDependencies": { "postcss": "^8.2.14" } @@ -14624,6 +15073,7 @@ "url": "https://opencollective.com/csstools" } ], + "license": "CC0-1.0", "dependencies": { "@csstools/selector-specificity": "^2.0.0", "postcss-selector-parser": "^6.0.10" @@ -14649,6 +15099,7 @@ "url": "https://liberapay.com/mrcgrtz" } ], + "license": "MIT", "engines": { "node": "^14 || ^16 || >=18" }, @@ -14660,6 +15111,7 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/postcss-overflow-shorthand/-/postcss-overflow-shorthand-4.0.1.tgz", "integrity": "sha512-HQZ0qi/9iSYHW4w3ogNqVNr2J49DHJAl7r8O2p0Meip38jsdnRPgiDW7r/LlLrrMBMe3KHkvNtAV2UmRVxzLIg==", + "license": "CC0-1.0", "dependencies": { "postcss-value-parser": "^4.2.0" }, @@ -14678,6 +15130,7 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/postcss-page-break/-/postcss-page-break-3.0.4.tgz", "integrity": "sha512-1JGu8oCjVXLa9q9rFTo4MbeeA5FMe00/9C7lN4va606Rdb+HkxXtXsmEDrIraQ11fGz/WvKWa8gMuCKkrXpTsQ==", + "license": "MIT", "peerDependencies": { "postcss": "^8" } @@ -14686,6 +15139,7 @@ "version": "8.0.1", "resolved": "https://registry.npmjs.org/postcss-place/-/postcss-place-8.0.1.tgz", "integrity": "sha512-Ow2LedN8sL4pq8ubukO77phSVt4QyCm35ZGCYXKvRFayAwcpgB0sjNJglDoTuRdUL32q/ZC1VkPBo0AOEr4Uiw==", + "license": "CC0-1.0", "dependencies": { "postcss-value-parser": "^4.2.0" }, @@ -14714,6 +15168,7 @@ "url": "https://opencollective.com/csstools" } ], + "license": "CC0-1.0", "dependencies": { "@csstools/postcss-cascade-layers": "^3.0.1", "@csstools/postcss-color-function": "^2.2.3", @@ -14783,6 +15238,7 @@ "version": "8.0.2", "resolved": "https://registry.npmjs.org/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-8.0.2.tgz", "integrity": "sha512-FYTIuRE07jZ2CW8POvctRgArQJ43yxhr5vLmImdKUvjFCkR09kh8pIdlCwdx/jbFm7MiW4QP58L4oOUv3grQYA==", + "license": "CC0-1.0", "dependencies": { "postcss-selector-parser": "^6.0.10" }, @@ -14801,21 +15257,24 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-4.0.0.tgz", "integrity": "sha512-KmF7SBPphT4gPPcKZc7aDkweHiKEEO8cla/GjcBK+ckKxiZslIu3C4GCRW3DNfL0o7yW7kMQu9xlZ1kXRXLXtw==", + "license": "MIT", "peerDependencies": { "postcss": "^8.0.3" } }, "node_modules/postcss-resolve-nested-selector": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.1.tgz", - "integrity": "sha512-HvExULSwLqHLgUy1rl3ANIqCsvMS0WHss2UOsXhXnQaZ9VCc2oBvIpXrl00IUFT5ZDITME0o6oiXeiHr2SAIfw==", - "dev": true + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/postcss-resolve-nested-selector/-/postcss-resolve-nested-selector-0.1.6.tgz", + "integrity": "sha512-0sglIs9Wmkzbr8lQwEyIzlDOOC9bGmfVKcJTaxv3vMmd3uo4o4DerC3En0bnmgceeql9BfC8hRkp7cg0fjdVqw==", + "dev": true, + "license": "MIT" }, "node_modules/postcss-safe-parser": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-6.0.0.tgz", "integrity": "sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=12.0" }, @@ -14846,6 +15305,7 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "engines": { "node": ">=12.0" }, @@ -14867,6 +15327,7 @@ "url": "https://opencollective.com/csstools" } ], + "license": "MIT", "dependencies": { "postcss-selector-parser": "^6.0.13" }, @@ -14878,9 +15339,10 @@ } }, "node_modules/postcss-selector-parser": { - "version": "6.0.16", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.16.tgz", - "integrity": "sha512-A0RVJrX+IUkVZbW3ClroRWurercFhieevHB38sr2+l9eUClMqome3LmEmnhlNy+5Mr2EYN6B2Kaw9wYdd+VHiw==", + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", + "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", + "license": "MIT", "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -14892,13 +15354,15 @@ "node_modules/postcss-value-parser": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", - "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==" + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "license": "MIT" }, "node_modules/prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8.0" } @@ -14908,6 +15372,7 @@ "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", "dev": true, + "license": "MIT", "bin": { "prettier": "bin-prettier.js" }, @@ -14923,6 +15388,7 @@ "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", "dev": true, + "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1", "ansi-styles": "^5.0.0", @@ -14937,6 +15403,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, @@ -14948,6 +15415,7 @@ "version": "15.8.1", "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "license": "MIT", "dependencies": { "loose-envify": "^1.4.0", "object-assign": "^4.1.1", @@ -14957,14 +15425,16 @@ "node_modules/prop-types/node_modules/react-is": { "version": "16.13.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "license": "MIT" }, "node_modules/protobufjs": { - "version": "7.2.6", - "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.2.6.tgz", - "integrity": "sha512-dgJaEDDL6x8ASUZ1YqWciTRrdOuYNzoOf27oHNfdyvKqHr5i0FV7FSLU+aIeFjyFgVxrpTOtQUi0BLLBymZaBw==", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.4.0.tgz", + "integrity": "sha512-mRUWCc3KUU4w1jU8sGxICXH/gNS94DvI1gxqDvBzhj1JpcsimQkYiOJfwsPUykUI5ZaspFbSgmBLER8IrQ3tqw==", "dev": true, "hasInstallScript": true, + "license": "BSD-3-Clause", "peer": true, "dependencies": { "@protobufjs/aspromise": "^1.1.2", @@ -14985,10 +15455,11 @@ } }, "node_modules/protobufjs-cli": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/protobufjs-cli/-/protobufjs-cli-1.1.2.tgz", - "integrity": "sha512-8ivXWxT39gZN4mm4ArQyJrRgnIwZqffBWoLDsE21TmMcKI3XwJMV4lEF2WU02C4JAtgYYc2SfJIltelD8to35g==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/protobufjs-cli/-/protobufjs-cli-1.1.3.tgz", + "integrity": "sha512-MqD10lqF+FMsOayFiNOdOGNlXc4iKDCf0ZQPkPR+gizYh9gqUeGTWulABUCdI+N67w5RfJ6xhgX4J8pa8qmMXQ==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "chalk": "^4.0.0", "escodegen": "^1.13.0", @@ -15017,6 +15488,7 @@ "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "esprima": "^4.0.1", "estraverse": "^4.2.0", @@ -15039,6 +15511,7 @@ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", "dev": true, + "license": "BSD-2-Clause", "engines": { "node": ">=4.0" } @@ -15048,6 +15521,7 @@ "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", "dev": true, + "license": "MIT", "dependencies": { "prelude-ls": "~1.1.2", "type-check": "~0.3.2" @@ -15056,23 +15530,12 @@ "node": ">= 0.8.0" } }, - "node_modules/protobufjs-cli/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/protobufjs-cli/node_modules/optionator": { "version": "0.8.3", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", "dev": true, + "license": "MIT", "dependencies": { "deep-is": "~0.1.3", "fast-levenshtein": "~2.0.6", @@ -15095,13 +15558,11 @@ } }, "node_modules/protobufjs-cli/node_modules/semver": { - "version": "7.6.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", - "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, + "license": "ISC", "bin": { "semver": "bin/semver.js" }, @@ -15109,20 +15570,12 @@ "node": ">=10" } }, - "node_modules/protobufjs-cli/node_modules/tmp": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.3.tgz", - "integrity": "sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w==", - "dev": true, - "engines": { - "node": ">=14.14" - } - }, "node_modules/protobufjs-cli/node_modules/type-check": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", "dev": true, + "license": "MIT", "dependencies": { "prelude-ls": "~1.1.2" }, @@ -15130,37 +15583,54 @@ "node": ">= 0.8.0" } }, - "node_modules/protobufjs-cli/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, "node_modules/psl": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", - "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", - "dev": true + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.15.0.tgz", + "integrity": "sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w==", + "dev": true, + "license": "MIT", + "dependencies": { + "punycode": "^2.3.1" + }, + "funding": { + "url": "https://github.com/sponsors/lupomontero" + } }, "node_modules/pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.2.tgz", + "integrity": "sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==", + "license": "MIT", "dependencies": { "end-of-stream": "^1.1.0", "once": "^1.3.1" } }, "node_modules/punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==", - "dev": true + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/punycode.js": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode.js/-/punycode.js-2.3.1.tgz", + "integrity": "sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } }, "node_modules/query-string": { "version": "7.1.3", "resolved": "https://registry.npmjs.org/query-string/-/query-string-7.1.3.tgz", "integrity": "sha512-hh2WYhq4fi8+b+/2Kg9CEge4fDPvHS534aOOvOZeQ3+Vf2mCFsaFBYj0i+iXcAq6I9Vzp5fjMFBlONvayDC1qg==", + "license": "MIT", "dependencies": { "decode-uri-component": "^0.2.2", "filter-obj": "^1.1.0", @@ -15178,7 +15648,8 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/queue-microtask": { "version": "1.2.3", @@ -15198,13 +15669,15 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "license": "MIT" }, "node_modules/quick-lru": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -15214,6 +15687,7 @@ "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", "integrity": "sha512-kA5WQoNVo4t9lNx2kQNFCxKeBl5IbbSNBl1M/tLkw9WCn+hxNBAW5Qh8gdhs63CJnhjJ2zQWFoqPJP2sK1AV5A==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -15223,6 +15697,7 @@ "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", "dev": true, + "license": "(BSD-2-Clause OR MIT OR Apache-2.0)", "dependencies": { "deep-extend": "^0.6.0", "ini": "~1.3.0", @@ -15238,6 +15713,7 @@ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -15246,6 +15722,7 @@ "version": "17.0.2", "resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz", "integrity": "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==", + "license": "MIT", "dependencies": { "loose-envify": "^1.1.0", "object-assign": "^4.1.1" @@ -15270,6 +15747,7 @@ "version": "17.0.2", "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz", "integrity": "sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==", + "license": "MIT", "dependencies": { "loose-envify": "^1.1.0", "object-assign": "^4.1.1", @@ -15284,6 +15762,7 @@ "resolved": "https://registry.npmjs.org/react-error-boundary/-/react-error-boundary-3.1.4.tgz", "integrity": "sha512-uM9uPzZJTF6wRQORmSrvOIgt4lJ9MC1sNgEOj2XGsDTRE4kmpWxg7ENK9EWNKJRMAOY9z0MuF4yIfl6gp4sotA==", "dev": true, + "license": "MIT", "dependencies": { "@babel/runtime": "^7.12.5" }, @@ -15300,6 +15779,7 @@ "resolved": "https://registry.npmjs.org/react-flow-renderer/-/react-flow-renderer-10.3.17.tgz", "integrity": "sha512-bywiqVErlh5kCDqw3x0an5Ur3mT9j9CwJsDwmhmz4i1IgYM1a0SPqqEhClvjX+s5pU4nHjmVaGXWK96pwsiGcQ==", "deprecated": "react-flow-renderer has been renamed to reactflow, please use this package from now on https://reactflow.dev/docs/guides/migrate-to-v11/", + "license": "MIT", "dependencies": { "@babel/runtime": "^7.18.9", "@types/d3": "^7.4.0", @@ -15321,7 +15801,8 @@ "node_modules/react-is": { "version": "17.0.2", "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==" + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "license": "MIT" }, "node_modules/react-json-tree": { "version": "0.19.0", @@ -15341,6 +15822,7 @@ "version": "3.39.3", "resolved": "https://registry.npmjs.org/react-query/-/react-query-3.39.3.tgz", "integrity": "sha512-nLfLz7GiohKTJDuT4us4X3h/8unOh+00MLb2yJoGTPjxKs2bc1iDhkNx2bd5MKklXnOD3NrVZ+J2UXujA5In4g==", + "license": "MIT", "dependencies": { "@babel/runtime": "^7.5.5", "broadcast-channel": "^3.4.1", @@ -15367,6 +15849,7 @@ "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.2.tgz", "integrity": "sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -15375,12 +15858,13 @@ "version": "5.3.4", "resolved": "https://registry.npmjs.org/react-router/-/react-router-5.3.4.tgz", "integrity": "sha512-Ys9K+ppnJah3QuaRiLxk+jDWOR1MekYQrlytiXxC1RyfbdsZkS5pvKAzCCr031xHixZwpnsYNT5xysdFHQaYsA==", + "license": "MIT", "dependencies": { "@babel/runtime": "^7.12.13", "history": "^4.9.0", "hoist-non-react-statics": "^3.1.0", "loose-envify": "^1.3.1", - "path-to-regexp": "^1.9.0", + "path-to-regexp": "^1.7.0", "prop-types": "^15.6.2", "react-is": "^16.6.0", "tiny-invariant": "^1.0.2", @@ -15394,6 +15878,7 @@ "version": "5.3.4", "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-5.3.4.tgz", "integrity": "sha512-m4EqFMHv/Ih4kpcBCONHbkT68KoAeHN4p3lAGoNryfHi0dMy0kCzEZakiKRsvg5wHZ/JLrLW8o8KomWiz/qbYQ==", + "license": "MIT", "dependencies": { "@babel/runtime": "^7.12.13", "history": "^4.9.0", @@ -15411,6 +15896,7 @@ "version": "4.10.1", "resolved": "https://registry.npmjs.org/history/-/history-4.10.1.tgz", "integrity": "sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew==", + "license": "MIT", "dependencies": { "@babel/runtime": "^7.1.2", "loose-envify": "^1.2.0", @@ -15424,6 +15910,7 @@ "version": "4.10.1", "resolved": "https://registry.npmjs.org/history/-/history-4.10.1.tgz", "integrity": "sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew==", + "license": "MIT", "dependencies": { "@babel/runtime": "^7.1.2", "loose-envify": "^1.2.0", @@ -15436,12 +15923,14 @@ "node_modules/react-router/node_modules/isarray": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==" + "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", + "license": "MIT" }, "node_modules/react-router/node_modules/path-to-regexp": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.9.0.tgz", "integrity": "sha512-xIp7/apCFJuUHdDLWe8O1HIkb0kQrOMb/0u6FXQjemHn/ii5LrIzU6bdECnsiTF/GjZkMEKg1xdiZwNqDYlZ6g==", + "license": "MIT", "dependencies": { "isarray": "0.0.1" } @@ -15449,12 +15938,14 @@ "node_modules/react-router/node_modules/react-is": { "version": "16.13.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "license": "MIT" }, "node_modules/react-tiny-popover": { "version": "6.0.10", "resolved": "https://registry.npmjs.org/react-tiny-popover/-/react-tiny-popover-6.0.10.tgz", "integrity": "sha512-ECMucd701SxWHGa+2YuVvccCxxTjmhomcD0ZYTF+Qmi5qNAj8pdlExFN+k+p1G78QTYIGPGNLocxRb9f6cZ0Mw==", + "license": "MIT", "peerDependencies": { "react": "^16.8.0 || ^17.0.0", "react-dom": "^16.8.0 || ^17.0.0" @@ -15464,6 +15955,7 @@ "version": "8.2.0", "resolved": "https://registry.npmjs.org/react-toastify/-/react-toastify-8.2.0.tgz", "integrity": "sha512-Pg2Ju7NngAamarFvLwqrFomJ57u/Ay6i6zfLurt/qPynWkAkOthu6vxfqYpJCyNhHRhR4hu7+bySSeWWJu6PAg==", + "license": "MIT", "dependencies": { "clsx": "^1.1.1" }, @@ -15477,6 +15969,7 @@ "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", "dev": true, + "license": "MIT", "dependencies": { "pify": "^2.3.0" } @@ -15486,6 +15979,7 @@ "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", "dev": true, + "license": "MIT", "dependencies": { "@types/normalize-package-data": "^2.4.0", "normalize-package-data": "^2.5.0", @@ -15501,6 +15995,7 @@ "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", "dev": true, + "license": "MIT", "dependencies": { "find-up": "^4.1.0", "read-pkg": "^5.2.0", @@ -15518,6 +16013,7 @@ "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, + "license": "MIT", "dependencies": { "locate-path": "^5.0.0", "path-exists": "^4.0.0" @@ -15531,6 +16027,7 @@ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, + "license": "MIT", "dependencies": { "p-locate": "^4.1.0" }, @@ -15543,6 +16040,7 @@ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, + "license": "MIT", "dependencies": { "p-try": "^2.0.0" }, @@ -15558,6 +16056,7 @@ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, + "license": "MIT", "dependencies": { "p-limit": "^2.2.0" }, @@ -15570,6 +16069,7 @@ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", "dev": true, + "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=8" } @@ -15578,13 +16078,15 @@ "version": "2.8.9", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/read-pkg/node_modules/normalize-package-data": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "hosted-git-info": "^2.1.4", "resolve": "^1.10.0", @@ -15597,6 +16099,7 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver" } @@ -15606,19 +16109,22 @@ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", "dev": true, + "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=8" } }, "node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dependencies": { - "picomatch": "^2.2.1" - }, + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.1.tgz", + "integrity": "sha512-h80JrZu/MHUZCyHu5ciuoI0+WxsCxzxJTILn6Fs8rxSnFPh+UVHYfeIxK1nVGugMqkfC4vJcBOYbkfkwYK0+gw==", + "license": "MIT", "engines": { - "node": ">=8.10.0" + "node": ">= 14.18.0" + }, + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" } }, "node_modules/redent": { @@ -15626,6 +16132,7 @@ "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", "dev": true, + "license": "MIT", "dependencies": { "indent-string": "^4.0.0", "strip-indent": "^3.0.0" @@ -15635,18 +16142,20 @@ } }, "node_modules/reflect.getprototypeof": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.6.tgz", - "integrity": "sha512-fmfw4XgoDke3kdI6h4xcUz1dG8uaiv5q9gcEwLS4Pnth2kxT+GZ7YehS1JTMGBQmtV7Y4GFGbs2re2NqhdozUg==", + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz", + "integrity": "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", + "call-bind": "^1.0.8", "define-properties": "^1.2.1", - "es-abstract": "^1.23.1", + "es-abstract": "^1.23.9", "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.4", - "globalthis": "^1.0.3", - "which-builtin-type": "^1.1.3" + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.7", + "get-proto": "^1.0.1", + "which-builtin-type": "^1.2.1" }, "engines": { "node": ">= 0.4" @@ -15659,13 +16168,15 @@ "version": "1.4.2", "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/regenerate-unicode-properties": { - "version": "10.1.1", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz", - "integrity": "sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==", + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.0.tgz", + "integrity": "sha512-DqHn3DwbmmPVzeKj9woBadqmXxLvQoQIwu7nopMc72ztvxVmVk2SBhSnx67zuye5TP+lJsb/TBQsjLKhnDf3MA==", "dev": true, + "license": "MIT", "dependencies": { "regenerate": "^1.4.2" }, @@ -15676,27 +16187,32 @@ "node_modules/regenerator-runtime": { "version": "0.14.1", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", - "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==" + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", + "license": "MIT" }, "node_modules/regenerator-transform": { "version": "0.15.2", "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz", "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==", "dev": true, + "license": "MIT", "dependencies": { "@babel/runtime": "^7.8.4" } }, "node_modules/regexp.prototype.flags": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz", - "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==", + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz", + "integrity": "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.6", + "call-bind": "^1.0.8", "define-properties": "^1.2.1", "es-errors": "^1.3.0", - "set-function-name": "^2.0.1" + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "set-function-name": "^2.0.2" }, "engines": { "node": ">= 0.4" @@ -15706,15 +16222,16 @@ } }, "node_modules/regexpu-core": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz", - "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.2.0.tgz", + "integrity": "sha512-H66BPQMrv+V16t8xtmq+UC0CBpiTBA60V8ibS1QVReIp8T1z8hwFxqcGzm9K6lgsN7sB5edVH8a+ze6Fqm4weA==", "dev": true, + "license": "MIT", "dependencies": { - "@babel/regjsgen": "^0.8.0", "regenerate": "^1.4.2", - "regenerate-unicode-properties": "^10.1.0", - "regjsparser": "^0.9.1", + "regenerate-unicode-properties": "^10.2.0", + "regjsgen": "^0.8.0", + "regjsparser": "^0.12.0", "unicode-match-property-ecmascript": "^2.0.0", "unicode-match-property-value-ecmascript": "^2.1.0" }, @@ -15727,6 +16244,7 @@ "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.3.2.tgz", "integrity": "sha512-JL39c60XlzCVgNrO+qq68FoNb56w/m7JYvGR2jT5iR1xBrUA3Mfx5Twk5rqTThPmQKMWydGmq8oFtDlxfrmxnQ==", "dev": true, + "license": "MIT", "dependencies": { "rc": "^1.1.6", "safe-buffer": "^5.0.1" @@ -15737,6 +16255,7 @@ "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz", "integrity": "sha512-ZbgR5aZEdf4UKZVBPYIgaglBmSF2Hi94s2PcIHhRGFjKYu+chjJdYfHn4rt3hB6eCKLJ8giVIIfgMa1ehDfZKA==", "dev": true, + "license": "MIT", "dependencies": { "rc": "^1.0.1" }, @@ -15744,37 +16263,51 @@ "node": ">=0.10.0" } }, + "node_modules/regjsgen": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.8.0.tgz", + "integrity": "sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==", + "dev": true, + "license": "MIT" + }, "node_modules/regjsparser": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", - "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.12.0.tgz", + "integrity": "sha512-cnE+y8bz4NhMjISKbgeVJtqNbtf5QpjZP+Bslo+UqkIt9QPnX9q095eiRRASJG1/tz6dlNr6Z5NsBiWYokp6EQ==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "jsesc": "~0.5.0" + "jsesc": "~3.0.2" }, "bin": { "regjsparser": "bin/parser" } }, "node_modules/regjsparser/node_modules/jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz", + "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==", "dev": true, + "license": "MIT", "bin": { "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" } }, "node_modules/remove-accents": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/remove-accents/-/remove-accents-0.5.0.tgz", - "integrity": "sha512-8g3/Otx1eJaVD12e31UbJj1YzdtVvzH85HV7t+9MJYk/u3XmkOUJ5Ys9wQrf9PCPK8+xn4ymzqYCiZl6QWKn+A==" + "integrity": "sha512-8g3/Otx1eJaVD12e31UbJj1YzdtVvzH85HV7t+9MJYk/u3XmkOUJ5Ys9wQrf9PCPK8+xn4ymzqYCiZl6QWKn+A==", + "license": "MIT" }, "node_modules/require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -15784,6 +16317,7 @@ "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -15792,30 +16326,36 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/requizzle": { "version": "0.2.4", "resolved": "https://registry.npmjs.org/requizzle/-/requizzle-0.2.4.tgz", "integrity": "sha512-JRrFk1D4OQ4SqovXOgdav+K8EAhSB/LJZqCz8tbX0KObcdeM15Ss59ozWMBWmmINMagCwmqn4ZNryUGpBsl6Jw==", "dev": true, + "license": "MIT", "dependencies": { "lodash": "^4.17.21" } }, "node_modules/resolve": { - "version": "1.22.8", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", - "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "version": "1.22.10", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", + "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", "dev": true, + "license": "MIT", "dependencies": { - "is-core-module": "^2.13.0", + "is-core-module": "^2.16.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, "bin": { "resolve": "bin/resolve" }, + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -15825,6 +16365,7 @@ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } @@ -15832,13 +16373,15 @@ "node_modules/resolve-pathname": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/resolve-pathname/-/resolve-pathname-3.0.0.tgz", - "integrity": "sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng==" + "integrity": "sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng==", + "license": "MIT" }, "node_modules/reusify": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", "dev": true, + "license": "MIT", "engines": { "iojs": ">=1.0.0", "node": ">=0.10.0" @@ -15848,6 +16391,8 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", + "license": "ISC", "dependencies": { "glob": "^7.1.3" }, @@ -15862,6 +16407,8 @@ "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -15880,7 +16427,8 @@ "node_modules/robust-predicates": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.2.tgz", - "integrity": "sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==" + "integrity": "sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==", + "license": "Unlicense" }, "node_modules/rollup": { "version": "3.29.5", @@ -15903,7 +16451,8 @@ "version": "0.6.0", "resolved": "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.6.0.tgz", "integrity": "sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/run-parallel": { "version": "1.2.0", @@ -15924,6 +16473,7 @@ "url": "https://feross.org/support" } ], + "license": "MIT", "dependencies": { "queue-microtask": "^1.2.2" } @@ -15931,17 +16481,20 @@ "node_modules/rw": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz", - "integrity": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==" + "integrity": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==", + "license": "BSD-3-Clause" }, "node_modules/safe-array-concat": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz", - "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz", + "integrity": "sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", - "get-intrinsic": "^1.2.4", - "has-symbols": "^1.0.3", + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", + "has-symbols": "^1.1.0", "isarray": "^2.0.5" }, "engines": { @@ -15955,17 +16508,36 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true + "dev": true, + "license": "MIT" + }, + "node_modules/safe-push-apply": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-push-apply/-/safe-push-apply-1.0.0.tgz", + "integrity": "sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/safe-regex-test": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", - "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", + "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.6", + "call-bound": "^1.0.2", "es-errors": "^1.3.0", - "is-regex": "^1.1.4" + "is-regex": "^1.2.1" }, "engines": { "node": ">= 0.4" @@ -15977,15 +16549,17 @@ "node_modules/safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "license": "MIT" }, "node_modules/sass": { - "version": "1.75.0", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.75.0.tgz", - "integrity": "sha512-ShMYi3WkrDWxExyxSZPst4/okE9ts46xZmJDSawJQrnte7M1V9fScVB+uNXOVKRBt0PggHOwoZcn8mYX4trnBw==", + "version": "1.83.4", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.83.4.tgz", + "integrity": "sha512-B1bozCeNQiOgDcLd33e2Cs2U60wZwjUUXzh900ZyQF5qUasvMdDZYbQ566LJu7cqR+sAHlAfO6RMkaID5s6qpA==", + "license": "MIT", "dependencies": { - "chokidar": ">=3.0.0 <4.0.0", - "immutable": "^4.0.0", + "chokidar": "^4.0.0", + "immutable": "^5.0.2", "source-map-js": ">=0.6.2 <2.0.0" }, "bin": { @@ -15993,6 +16567,9 @@ }, "engines": { "node": ">=14.0.0" + }, + "optionalDependencies": { + "@parcel/watcher": "^2.4.1" } }, "node_modules/saxes": { @@ -16000,6 +16577,7 @@ "resolved": "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz", "integrity": "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==", "dev": true, + "license": "ISC", "dependencies": { "xmlchars": "^2.2.0" }, @@ -16011,6 +16589,7 @@ "version": "0.20.2", "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz", "integrity": "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==", + "license": "MIT", "dependencies": { "loose-envify": "^1.1.0", "object-assign": "^4.1.1" @@ -16021,15 +16600,17 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver.js" } }, "node_modules/serve": { - "version": "14.2.3", - "resolved": "https://registry.npmjs.org/serve/-/serve-14.2.3.tgz", - "integrity": "sha512-VqUFMC7K3LDGeGnJM9h56D3XGKb6KGgOw0cVNtA26yYXHCcpxf3xwCTUaQoWlVS7i8Jdh3GjQkOB23qsXyjoyQ==", + "version": "14.2.4", + "resolved": "https://registry.npmjs.org/serve/-/serve-14.2.4.tgz", + "integrity": "sha512-qy1S34PJ/fcY8gjVGszDB3EXiPSk5FKhUa7tQe0UPRddxRidc2V6cNHPNewbE1D7MAkgLuWEt3Vw56vYy73tzQ==", "dev": true, + "license": "MIT", "dependencies": { "@zeit/schemas": "2.36.0", "ajv": "8.12.0", @@ -16040,7 +16621,7 @@ "clipboardy": "3.0.0", "compression": "1.7.4", "is-port-reachable": "4.0.0", - "serve-handler": "6.1.5", + "serve-handler": "6.1.6", "update-check": "1.5.4" }, "bin": { @@ -16051,18 +16632,18 @@ } }, "node_modules/serve-handler": { - "version": "6.1.5", - "resolved": "https://registry.npmjs.org/serve-handler/-/serve-handler-6.1.5.tgz", - "integrity": "sha512-ijPFle6Hwe8zfmBxJdE+5fta53fdIY0lHISJvuikXB3VYFafRjMRpOffSPvCYsbKyBA7pvy9oYr/BT1O3EArlg==", + "version": "6.1.6", + "resolved": "https://registry.npmjs.org/serve-handler/-/serve-handler-6.1.6.tgz", + "integrity": "sha512-x5RL9Y2p5+Sh3D38Fh9i/iQ5ZK+e4xuXRd/pGbM4D13tgo/MGwbttUk8emytcr1YYzBYs+apnUngBDFYfpjPuQ==", "dev": true, + "license": "MIT", "dependencies": { "bytes": "3.0.0", "content-disposition": "0.5.2", - "fast-url-parser": "1.1.3", "mime-types": "2.1.18", "minimatch": "3.1.2", "path-is-inside": "1.0.2", - "path-to-regexp": "^3.3.0", + "path-to-regexp": "3.3.0", "range-parser": "1.2.0" } }, @@ -16071,6 +16652,7 @@ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.33.0.tgz", "integrity": "sha512-BHJ/EKruNIqJf/QahvxwQZXKygOQ256myeN/Ew+THcAa5q+PjyTTMMeNQC4DZw5AwfvelsUrA6B67NKMqXDbzQ==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -16080,6 +16662,7 @@ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.18.tgz", "integrity": "sha512-lc/aahn+t4/SWV/qcmumYjymLsWfN3ELhpmVuUFjgsORruuZPVSwAQryq+HHGvO/SI2KVX26bx+En+zhM8g8hQ==", "dev": true, + "license": "MIT", "dependencies": { "mime-db": "~1.33.0" }, @@ -16091,13 +16674,15 @@ "version": "3.3.0", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-3.3.0.tgz", "integrity": "sha512-qyCH421YQPS2WFDxDjftfc1ZR5WKQzVzqsp4n9M2kQhVOo/ByahFoUNJfl58kOcEGfQ//7weFTDhm+ss8Ecxgw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/serve/node_modules/ajv": { "version": "8.12.0", "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", "dev": true, + "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", "json-schema-traverse": "^1.0.0", @@ -16114,6 +16699,7 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.0.1.tgz", "integrity": "sha512-Fo07WOYGqMfCWHOzSXOt2CxDbC6skS/jO9ynEcmpANMoPrD+W1r1K6Vx7iNm+AQmETU1Xr2t+n8nzkV9t6xh3w==", "dev": true, + "license": "MIT", "engines": { "node": "^12.17.0 || ^14.13 || >=16.0.0" }, @@ -16125,13 +16711,15 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/set-function-length": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", "dev": true, + "license": "MIT", "dependencies": { "define-data-property": "^1.1.4", "es-errors": "^1.3.0", @@ -16149,6 +16737,7 @@ "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", "dev": true, + "license": "MIT", "dependencies": { "define-data-property": "^1.1.4", "es-errors": "^1.3.0", @@ -16159,11 +16748,27 @@ "node": ">= 0.4" } }, + "node_modules/set-proto": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/set-proto/-/set-proto-1.0.0.tgz", + "integrity": "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==", + "dev": true, + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dev": true, + "license": "MIT", "dependencies": { "shebang-regex": "^3.0.0" }, @@ -16176,20 +16781,79 @@ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/side-channel": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", - "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.4", - "object-inspect": "^1.13.1" + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-list": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", + "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" }, "engines": { "node": ">= 0.4" @@ -16202,13 +16866,15 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz", "integrity": "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/signal-exit": { "version": "3.0.7", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/simple-swizzle": { "version": "0.2.2", @@ -16229,6 +16895,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "license": "MIT", "engines": { "node": ">=8" } @@ -16238,6 +16905,7 @@ "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", "astral-regex": "^2.0.0", @@ -16255,14 +16923,16 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } }, "node_modules/source-map-js": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", - "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } @@ -16272,6 +16942,7 @@ "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", "dev": true, + "license": "Apache-2.0", "dependencies": { "spdx-expression-parse": "^3.0.0", "spdx-license-ids": "^3.0.0" @@ -16281,28 +16952,32 @@ "version": "2.5.0", "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==", - "dev": true + "dev": true, + "license": "CC-BY-3.0" }, "node_modules/spdx-expression-parse": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", "dev": true, + "license": "MIT", "dependencies": { "spdx-exceptions": "^2.1.0", "spdx-license-ids": "^3.0.0" } }, "node_modules/spdx-license-ids": { - "version": "3.0.17", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.17.tgz", - "integrity": "sha512-sh8PWc/ftMqAAdFiBu6Fy6JUOYjqDJBJvIhpfDMyHrr0Rbp5liZqd4TjtQ/RgfLjKFZb+LMx5hpml5qOWy0qvg==", - "dev": true + "version": "3.0.21", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.21.tgz", + "integrity": "sha512-Bvg/8F5XephndSK3JffaRqdT+gyhfqIPwDHpX80tJrF8QQRYMo8sNMeaZ2Dp5+jhwKnUmIOyFFQfHRkjJm5nXg==", + "dev": true, + "license": "CC0-1.0" }, "node_modules/split-on-first": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/split-on-first/-/split-on-first-1.1.0.tgz", "integrity": "sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==", + "license": "MIT", "engines": { "node": ">=6" } @@ -16311,6 +16986,7 @@ "version": "2.0.10", "resolved": "https://registry.npmjs.org/stack-generator/-/stack-generator-2.0.10.tgz", "integrity": "sha512-mwnua/hkqM6pF4k8SnmZ2zfETsRUpWXREfA/goT8SLCV4iOFa4bzOX2nDipWAZFPTjLvQB82f5yaodMVhK0yJQ==", + "license": "MIT", "dependencies": { "stackframe": "^1.3.4" } @@ -16319,6 +16995,7 @@ "version": "2.0.6", "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", + "license": "MIT", "dependencies": { "escape-string-regexp": "^2.0.0" }, @@ -16330,6 +17007,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "license": "MIT", "engines": { "node": ">=8" } @@ -16338,12 +17016,14 @@ "version": "0.0.2", "resolved": "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz", "integrity": "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/stackframe": { "version": "1.3.4", "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz", - "integrity": "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==" + "integrity": "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==", + "license": "MIT" }, "node_modules/statuses": { "version": "2.0.1", @@ -16356,10 +17036,11 @@ } }, "node_modules/std-env": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.7.0.tgz", - "integrity": "sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==", - "dev": true + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.8.0.tgz", + "integrity": "sha512-Bc3YwwCB+OzldMxOXJIIvC6cPRWr/LxOp48CdQTOkPyk/t4JWWJbrilwBd7RJzKV8QW7tJkcgAmeuLLJugl5/w==", + "dev": true, + "license": "MIT" }, "node_modules/strict-event-emitter": { "version": "0.5.1", @@ -16372,6 +17053,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz", "integrity": "sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ==", + "license": "MIT", "engines": { "node": ">=4" } @@ -16380,20 +17062,25 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/string-natural-compare/-/string-natural-compare-3.0.1.tgz", "integrity": "sha512-n3sPwynL1nwKi3WJ6AIsClwBMa0zTi54fn2oLU6ndfTSIO05xaznjSf15PcBZU6FNWbmN5Q6cxT4V5hGvB4taw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", "dev": true, + "license": "MIT", "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" }, "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/string-width-cjs": { @@ -16402,6 +17089,7 @@ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, + "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -16415,32 +17103,73 @@ "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true + "dev": true, + "license": "MIT" }, - "node_modules/string-width/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true + "node_modules/string-width/node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } }, - "node_modules/string.prototype.matchall": { - "version": "4.0.11", - "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.11.tgz", - "integrity": "sha512-NUdh0aDavY2og7IbBPenWqR9exH+E26Sv8e0/eTe1tltDGZL+GtBkDAnnyBtmekfK6/Dq3MkcGtzXFEd1LQrtg==", + "node_modules/string-width/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/string.prototype.includes": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/string.prototype.includes/-/string.prototype.includes-2.0.1.tgz", + "integrity": "sha512-o7+c9bW6zpAdJHTtujeePODAhkuicdAryFsfVKwA+wGw89wJ4GTY484WTucM9hLtDEOpOvI+aHnzqnC5lHp4Rg==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", + "es-abstract": "^1.23.3" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/string.prototype.matchall": { + "version": "4.0.12", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.12.tgz", + "integrity": "sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.6", "es-errors": "^1.3.0", "es-object-atoms": "^1.0.0", - "get-intrinsic": "^1.2.4", - "gopd": "^1.0.1", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.7", - "regexp.prototype.flags": "^1.5.2", + "get-intrinsic": "^1.2.6", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "internal-slot": "^1.1.0", + "regexp.prototype.flags": "^1.5.3", "set-function-name": "^2.0.2", - "side-channel": "^1.0.6" + "side-channel": "^1.1.0" }, "engines": { "node": ">= 0.4" @@ -16449,16 +17178,31 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/string.prototype.repeat": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/string.prototype.repeat/-/string.prototype.repeat-1.0.0.tgz", + "integrity": "sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, "node_modules/string.prototype.trim": { - "version": "1.2.9", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz", - "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==", + "version": "1.2.10", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz", + "integrity": "sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "define-data-property": "^1.1.4", "define-properties": "^1.2.1", - "es-abstract": "^1.23.0", - "es-object-atoms": "^1.0.0" + "es-abstract": "^1.23.5", + "es-object-atoms": "^1.0.0", + "has-property-descriptors": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -16468,15 +17212,20 @@ } }, "node_modules/string.prototype.trimend": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz", - "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==", + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz", + "integrity": "sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", "define-properties": "^1.2.1", "es-object-atoms": "^1.0.0" }, + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -16486,6 +17235,7 @@ "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1", @@ -16503,6 +17253,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, + "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" }, @@ -16516,6 +17267,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, + "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" }, @@ -16528,6 +17280,7 @@ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } @@ -16537,6 +17290,7 @@ "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -16546,6 +17300,7 @@ "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", "dev": true, + "license": "MIT", "dependencies": { "min-indent": "^1.0.0" }, @@ -16558,6 +17313,7 @@ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" }, @@ -16570,6 +17326,7 @@ "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-1.3.0.tgz", "integrity": "sha512-PugKzOsyXpArk0yWmUwqOZecSO0GH0bPoctLcqNDH9J04pVW3lflYE0ujElBGTloevcxF5MofAOZ7C5l2b+wLg==", "dev": true, + "license": "MIT", "dependencies": { "acorn": "^8.10.0" }, @@ -16581,13 +17338,15 @@ "version": "0.1.0", "resolved": "https://registry.npmjs.org/style-search/-/style-search-0.1.0.tgz", "integrity": "sha512-Dj1Okke1C3uKKwQcetra4jSuk0DqbzbYtXipzFlFMZtowbF1x7BKJwB9AayVMyFARvU8EDrZdcax4At/452cAg==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/stylelint": { "version": "14.16.1", "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-14.16.1.tgz", "integrity": "sha512-ErlzR/T3hhbV+a925/gbfc3f3Fep9/bnspMiJPorfGEmcBbXdS+oo6LrVtoUZ/w9fqD6o6k7PtUlCOsCRdjX/A==", "dev": true, + "license": "MIT", "dependencies": { "@csstools/selector-specificity": "^2.0.2", "balanced-match": "^2.0.0", @@ -16644,6 +17403,7 @@ "resolved": "https://registry.npmjs.org/stylelint-config-prettier/-/stylelint-config-prettier-9.0.5.tgz", "integrity": "sha512-U44lELgLZhbAD/xy/vncZ2Pq8sh2TnpiPvo38Ifg9+zeioR+LAkHu0i6YORIOxFafZoVg0xqQwex6e6F25S5XA==", "dev": true, + "license": "MIT", "bin": { "stylelint-config-prettier": "bin/check.js", "stylelint-config-prettier-check": "bin/check.js" @@ -16660,6 +17420,7 @@ "resolved": "https://registry.npmjs.org/stylelint-config-recommended/-/stylelint-config-recommended-6.0.0.tgz", "integrity": "sha512-ZorSSdyMcxWpROYUvLEMm0vSZud2uB7tX1hzBZwvVY9SV/uly4AvvJPPhCcymZL3fcQhEQG5AELmrxWqtmzacw==", "dev": true, + "license": "MIT", "peerDependencies": { "stylelint": "^14.0.0" } @@ -16669,6 +17430,7 @@ "resolved": "https://registry.npmjs.org/stylelint-config-recommended-scss/-/stylelint-config-recommended-scss-5.0.2.tgz", "integrity": "sha512-b14BSZjcwW0hqbzm9b0S/ScN2+3CO3O4vcMNOw2KGf8lfVSwJ4p5TbNEXKwKl1+0FMtgRXZj6DqVUe/7nGnuBg==", "dev": true, + "license": "MIT", "dependencies": { "postcss-scss": "^4.0.2", "stylelint-config-recommended": "^6.0.0", @@ -16683,6 +17445,7 @@ "resolved": "https://registry.npmjs.org/stylelint-config-standard/-/stylelint-config-standard-24.0.0.tgz", "integrity": "sha512-+RtU7fbNT+VlNbdXJvnjc3USNPZRiRVp/d2DxOF/vBDDTi0kH5RX2Ny6errdtZJH3boO+bmqIYEllEmok4jiuw==", "dev": true, + "license": "MIT", "dependencies": { "stylelint-config-recommended": "^6.0.0" }, @@ -16695,6 +17458,7 @@ "resolved": "https://registry.npmjs.org/stylelint-config-standard-scss/-/stylelint-config-standard-scss-3.0.0.tgz", "integrity": "sha512-zt3ZbzIbllN1iCmc94e4pDxqpkzeR6CJo5DDXzltshuXr+82B8ylHyMMARNnUYrZH80B7wgY7UkKTYCFM0UUyw==", "dev": true, + "license": "MIT", "dependencies": { "stylelint-config-recommended-scss": "^5.0.2", "stylelint-config-standard": "^24.0.0" @@ -16708,6 +17472,7 @@ "resolved": "https://registry.npmjs.org/stylelint-scss/-/stylelint-scss-4.7.0.tgz", "integrity": "sha512-TSUgIeS0H3jqDZnby1UO1Qv3poi1N8wUYIJY6D1tuUq2MN3lwp/rITVo0wD+1SWTmRm0tNmGO0b7nKInnqF6Hg==", "dev": true, + "license": "MIT", "dependencies": { "postcss-media-query-parser": "^0.2.3", "postcss-resolve-nested-selector": "^0.1.1", @@ -16722,13 +17487,37 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-2.0.0.tgz", "integrity": "sha512-1ugUSr8BHXRnK23KfuYS+gVMC3LB8QGH9W1iGtDPsNWoQbgtXSExkBu2aDR4epiGWZOjZsj6lDl/N/AqqTC3UA==", - "dev": true + "dev": true, + "license": "MIT" + }, + "node_modules/stylelint/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" }, "node_modules/stylelint/node_modules/resolve-from": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/stylelint/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, "engines": { "node": ">=8" } @@ -16738,6 +17527,7 @@ "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz", "integrity": "sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==", "dev": true, + "license": "MIT", "dependencies": { "@jridgewell/gen-mapping": "^0.3.2", "commander": "^4.0.0", @@ -16760,6 +17550,7 @@ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } @@ -16769,37 +17560,38 @@ "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 6" } }, "node_modules/sucrase/node_modules/glob": { - "version": "10.3.12", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.12.tgz", - "integrity": "sha512-TCNv8vJ+xz4QiqTpfOJA7HvYv+tNIRHKfUWw/q+v2jdgN4ebz+KY9tGx5J4rHP0o84mNP+ApH66HRX8us3Khqg==", + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", "dev": true, + "license": "ISC", "dependencies": { "foreground-child": "^3.1.0", - "jackspeak": "^2.3.6", - "minimatch": "^9.0.1", - "minipass": "^7.0.4", - "path-scurry": "^1.10.2" + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" }, "bin": { "glob": "dist/esm/bin.mjs" }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, "node_modules/sucrase/node_modules/minimatch": { - "version": "9.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", - "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -16814,6 +17606,7 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -16826,6 +17619,7 @@ "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz", "integrity": "sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==", "dev": true, + "license": "MIT", "dependencies": { "has-flag": "^4.0.0", "supports-color": "^7.0.0" @@ -16839,6 +17633,7 @@ "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -16850,7 +17645,8 @@ "version": "2.0.4", "resolved": "https://registry.npmjs.org/svg-parser/-/svg-parser-2.0.4.tgz", "integrity": "sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/svg-tags": { "version": "1.0.0", @@ -16859,9 +17655,10 @@ "dev": true }, "node_modules/svgo": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/svgo/-/svgo-3.2.0.tgz", - "integrity": "sha512-4PP6CMW/V7l/GmKRKzsLR8xxjdHTV4IMvhTnpuHwwBazSIlw5W/5SmPjN8Dwyt7lKbSJrRDgp4t9ph0HgChFBQ==", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-3.3.2.tgz", + "integrity": "sha512-OoohrmuUlBs8B8o6MB2Aevn+pRIH9zDALSR+6hhqVfa6fRwG/Qw9VUMSMW9VNg2CFc/MTIfabtdOVl9ODIJjpw==", + "license": "MIT", "dependencies": { "@trysound/sax": "0.2.0", "commander": "^7.2.0", @@ -16886,13 +17683,15 @@ "version": "3.2.4", "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/table": { - "version": "6.8.2", - "resolved": "https://registry.npmjs.org/table/-/table-6.8.2.tgz", - "integrity": "sha512-w2sfv80nrAh2VCbqR5AK27wswXhqcck2AhfnNW76beQXskGZ1V12GwS//yYVa3d3fcvAip2OUnbDAjW2k3v9fA==", + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/table/-/table-6.9.0.tgz", + "integrity": "sha512-9kY+CygyYM6j02t5YFHbNz2FN5QmYGv9zAjVp4lCDjlCw7amdckXlEt/bjMhUIfj4ThGRE4gCUH5+yGnNuPo5A==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "ajv": "^8.0.1", "lodash.truncate": "^4.4.2", @@ -16905,55 +17704,80 @@ } }, "node_modules/table/node_modules/ajv": { - "version": "8.13.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.13.0.tgz", - "integrity": "sha512-PRA911Blj99jR5RMeTunVbNXMF6Lp4vZXnk5GQjcnUWUTsrXtekg/pnmFFI2u/I36Y/2bITGS30GZCXei6uNkA==", + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", "dev": true, + "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.4.1" + "require-from-string": "^2.0.2" }, "funding": { "type": "github", "url": "https://github.com/sponsors/epoberezkin" } }, + "node_modules/table/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, "node_modules/table/node_modules/json-schema-traverse": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true + "dev": true, + "license": "MIT" + }, + "node_modules/table/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } }, "node_modules/tailwindcss": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.3.tgz", - "integrity": "sha512-U7sxQk/n397Bmx4JHbJx/iSOOv5G+II3f1kpLpY2QeUv5DcPdcTsYLlusZfq1NthHS1c1cZoyFmmkex1rzke0A==", + "version": "3.4.17", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.17.tgz", + "integrity": "sha512-w33E2aCvSDP0tW9RZuNXadXlkHXqFzSkQew/aIa2i/Sj8fThxwovwlXHSPXTbAHwEIhBFXAedUhP2tueAKP8Og==", "dev": true, + "license": "MIT", "dependencies": { "@alloc/quick-lru": "^5.2.0", "arg": "^5.0.2", - "chokidar": "^3.5.3", + "chokidar": "^3.6.0", "didyoumean": "^1.2.2", "dlv": "^1.1.3", - "fast-glob": "^3.3.0", + "fast-glob": "^3.3.2", "glob-parent": "^6.0.2", "is-glob": "^4.0.3", - "jiti": "^1.21.0", - "lilconfig": "^2.1.0", - "micromatch": "^4.0.5", + "jiti": "^1.21.6", + "lilconfig": "^3.1.3", + "micromatch": "^4.0.8", "normalize-path": "^3.0.0", "object-hash": "^3.0.0", - "picocolors": "^1.0.0", - "postcss": "^8.4.23", + "picocolors": "^1.1.1", + "postcss": "^8.4.47", "postcss-import": "^15.1.0", "postcss-js": "^4.0.1", - "postcss-load-config": "^4.0.1", - "postcss-nested": "^6.0.1", - "postcss-selector-parser": "^6.0.11", - "resolve": "^1.22.2", - "sucrase": "^3.32.0" + "postcss-load-config": "^4.0.2", + "postcss-nested": "^6.2.0", + "postcss-selector-parser": "^6.1.2", + "resolve": "^1.22.8", + "sucrase": "^3.35.0" }, "bin": { "tailwind": "lib/cli.js", @@ -16963,17 +17787,83 @@ "node": ">=14.0.0" } }, + "node_modules/tailwindcss/node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/tailwindcss/node_modules/chokidar/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/tailwindcss/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/tailwindcss/node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, "node_modules/text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/thenify": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", "dev": true, + "license": "MIT", "dependencies": { "any-promise": "^1.0.0" } @@ -16983,6 +17873,7 @@ "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", "dev": true, + "license": "MIT", "dependencies": { "thenify": ">= 3.1.0 < 4" }, @@ -16993,24 +17884,28 @@ "node_modules/tiny-invariant": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.3.tgz", - "integrity": "sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==" + "integrity": "sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==", + "license": "MIT" }, "node_modules/tiny-warning": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz", - "integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==" + "integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==", + "license": "MIT" }, "node_modules/tinybench": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.8.0.tgz", - "integrity": "sha512-1/eK7zUnIklz4JUUlL+658n58XO2hHLQfSk1Zf2LKieUjxidN16eKFEoDEfjHc3ohofSSqK3X5yO6VGb6iW8Lw==", - "dev": true + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.9.0.tgz", + "integrity": "sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==", + "dev": true, + "license": "MIT" }, "node_modules/tinypool": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-0.4.0.tgz", "integrity": "sha512-2ksntHOKf893wSAH4z/+JbPpi92esw8Gn9N2deXX+B0EO92hexAVI9GIZZPx7P5aYo5KULfeOSt3kMOmSOy6uA==", "dev": true, + "license": "MIT", "engines": { "node": ">=14.0.0" } @@ -17020,17 +17915,19 @@ "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-1.1.1.tgz", "integrity": "sha512-UVq5AXt/gQlti7oxoIg5oi/9r0WpF7DGEVwXgqWSMmyN16+e3tl5lIvTaOpJ3TAtu5xFzWccFRM4R5NaWHF+4g==", "dev": true, + "license": "MIT", "engines": { "node": ">=14.0.0" } }, - "node_modules/to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "node_modules/tmp": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.3.tgz", + "integrity": "sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w==", "dev": true, + "license": "MIT", "engines": { - "node": ">=4" + "node": ">=14.14" } }, "node_modules/to-regex-range": { @@ -17050,6 +17947,7 @@ "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.4.tgz", "integrity": "sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "psl": "^1.1.33", "punycode": "^2.1.1", @@ -17060,20 +17958,12 @@ "node": ">=6" } }, - "node_modules/tough-cookie/node_modules/punycode": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", - "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, "node_modules/tr46": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/tr46/-/tr46-4.1.1.tgz", "integrity": "sha512-2lv/66T7e5yNyhAAC4NaKe5nVavzuGJQVVtRYLyQ2OI8tsJ61PMLlelehb0wi2Hx6+hT/OJUWZcw8MjlSRnxvw==", "dev": true, + "license": "MIT", "dependencies": { "punycode": "^2.3.0" }, @@ -17081,20 +17971,12 @@ "node": ">=14" } }, - "node_modules/tr46/node_modules/punycode": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", - "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, "node_modules/trim-newlines": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz", "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -17103,13 +17985,15 @@ "version": "0.1.13", "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", - "dev": true + "dev": true, + "license": "Apache-2.0" }, "node_modules/tsconfig-paths": { "version": "3.15.0", "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", "dev": true, + "license": "MIT", "dependencies": { "@types/json5": "^0.0.29", "json5": "^1.0.2", @@ -17122,6 +18006,7 @@ "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", "dev": true, + "license": "MIT", "dependencies": { "minimist": "^1.2.0" }, @@ -17130,15 +18015,17 @@ } }, "node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" }, "node_modules/tsutils": { "version": "3.21.0", "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", "dev": true, + "license": "MIT", "dependencies": { "tslib": "^1.8.1" }, @@ -17153,13 +18040,15 @@ "version": "1.14.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true + "dev": true, + "license": "0BSD" }, "node_modules/type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", "dev": true, + "license": "MIT", "dependencies": { "prelude-ls": "^1.2.1" }, @@ -17168,18 +18057,19 @@ } }, "node_modules/type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.1.0.tgz", + "integrity": "sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/type-fest": { - "version": "4.26.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.26.1.tgz", - "integrity": "sha512-yOGpmOAL7CkKe/91I5O3gPICmJNLJ1G4zFYVAsRHg7M64biSnPtRj0WNQt++bRkjYOqjWXrhnUw1utzmVErAdg==", + "version": "4.33.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.33.0.tgz", + "integrity": "sha512-s6zVrxuyKbbAsSAD5ZPTB77q4YIdRctkTbJ2/Dqlinwz+8ooH2gd+YA7VA6Pa93KML9GockVvoxjZ2vHP+mu8g==", "dev": true, "license": "(MIT OR CC0-1.0)", "engines": { @@ -17190,30 +18080,32 @@ } }, "node_modules/typed-array-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz", - "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", + "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", + "call-bound": "^1.0.3", "es-errors": "^1.3.0", - "is-typed-array": "^1.1.13" + "is-typed-array": "^1.1.14" }, "engines": { "node": ">= 0.4" } }, "node_modules/typed-array-byte-length": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz", - "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz", + "integrity": "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", + "call-bind": "^1.0.8", "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-proto": "^1.0.3", - "is-typed-array": "^1.1.13" + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.14" }, "engines": { "node": ">= 0.4" @@ -17223,17 +18115,19 @@ } }, "node_modules/typed-array-byte-offset": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz", - "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz", + "integrity": "sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==", "dev": true, + "license": "MIT", "dependencies": { "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.7", + "call-bind": "^1.0.8", "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-proto": "^1.0.3", - "is-typed-array": "^1.1.13" + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.15", + "reflect.getprototypeof": "^1.0.9" }, "engines": { "node": ">= 0.4" @@ -17243,17 +18137,18 @@ } }, "node_modules/typed-array-length": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.6.tgz", - "integrity": "sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.7.tgz", + "integrity": "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==", "dev": true, + "license": "MIT", "dependencies": { "call-bind": "^1.0.7", "for-each": "^0.3.3", "gopd": "^1.0.1", - "has-proto": "^1.0.3", "is-typed-array": "^1.1.13", - "possible-typed-array-names": "^1.0.0" + "possible-typed-array-names": "^1.0.0", + "reflect.getprototypeof": "^1.0.6" }, "engines": { "node": ">= 0.4" @@ -17263,10 +18158,11 @@ } }, "node_modules/typescript": { - "version": "5.4.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz", - "integrity": "sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==", + "version": "5.7.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.3.tgz", + "integrity": "sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==", "dev": true, + "license": "Apache-2.0", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -17276,22 +18172,25 @@ } }, "node_modules/uc.micro": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz", - "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==", - "dev": true + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-2.1.0.tgz", + "integrity": "sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==", + "dev": true, + "license": "MIT" }, "node_modules/ufo": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.5.3.tgz", - "integrity": "sha512-Y7HYmWaFwPUmkoQCUIAYpKqkOf+SbVj/2fJJZ4RJMCfZp0rTGwRbzQD+HghfnhKOjL9E01okqz+ncJskGYfBNw==", - "dev": true + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.5.4.tgz", + "integrity": "sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==", + "dev": true, + "license": "MIT" }, "node_modules/uglify-js": { - "version": "3.17.4", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz", - "integrity": "sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==", + "version": "3.19.3", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.19.3.tgz", + "integrity": "sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==", "dev": true, + "license": "BSD-2-Clause", "bin": { "uglifyjs": "bin/uglifyjs" }, @@ -17300,39 +18199,45 @@ } }, "node_modules/unbox-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", - "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz", + "integrity": "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", + "call-bound": "^1.0.3", "has-bigints": "^1.0.2", - "has-symbols": "^1.0.3", - "which-boxed-primitive": "^1.0.2" + "has-symbols": "^1.1.0", + "which-boxed-primitive": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/underscore": { - "version": "1.13.6", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.6.tgz", - "integrity": "sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A==", - "dev": true + "version": "1.13.7", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.7.tgz", + "integrity": "sha512-GMXzWtsc57XAtguZgaQViUOzs0KTkk8ojr3/xAxXLITqf/3EMwxC0inyETfDFjH/Krbhuep0HNbbjI9i/q3F3g==", + "dev": true, + "license": "MIT" }, "node_modules/undici-types": { - "version": "6.19.8", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz", - "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==", + "version": "6.20.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", + "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", "dev": true, "license": "MIT", "peer": true }, "node_modules/unicode-canonical-property-names-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", - "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.1.tgz", + "integrity": "sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } @@ -17342,6 +18247,7 @@ "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", "dev": true, + "license": "MIT", "dependencies": { "unicode-canonical-property-names-ecmascript": "^2.0.0", "unicode-property-aliases-ecmascript": "^2.0.0" @@ -17351,10 +18257,11 @@ } }, "node_modules/unicode-match-property-value-ecmascript": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", - "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.2.0.tgz", + "integrity": "sha512-4IehN3V/+kkr5YeSSDDQG8QLqO26XpL2XP3GQtqwlT/QYSECAwFztxVHjlbh0+gjJ3XmNLS0zDsbgs9jWKExLg==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } @@ -17364,6 +18271,7 @@ "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } @@ -17373,6 +18281,7 @@ "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 4.0.0" } @@ -17381,15 +18290,16 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/unload/-/unload-2.2.0.tgz", "integrity": "sha512-B60uB5TNBLtN6/LsgAf3udH9saB5p7gqJwcFfbOEZ8BcBHnGwCf6G/TGiEqkRAxX7zAFIUtzdrXQSdL3Q/wqNA==", + "license": "Apache-2.0", "dependencies": { "@babel/runtime": "^7.6.2", "detect-node": "^2.0.4" } }, "node_modules/update-browserslist-db": { - "version": "1.0.13", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", - "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.2.tgz", + "integrity": "sha512-PPypAm5qvlD7XMZC3BujecnaOxwhrtoFR+Dqkk5Aa/6DssiH0ibKoketaj9w8LP7Bont1rYeoV5plxD7RTEPRg==", "funding": [ { "type": "opencollective", @@ -17404,9 +18314,10 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" + "escalade": "^3.2.0", + "picocolors": "^1.1.1" }, "bin": { "update-browserslist-db": "cli.js" @@ -17420,6 +18331,7 @@ "resolved": "https://registry.npmjs.org/update-check/-/update-check-1.5.4.tgz", "integrity": "sha512-5YHsflzHP4t1G+8WGPlvKbJEbAJGCgw+Em+dGR1KmBUbr1J36SJBqlHLjR7oob7sco5hWHGQVcr9B2poIVDDTQ==", "dev": true, + "license": "MIT", "dependencies": { "registry-auth-token": "3.3.2", "registry-url": "3.1.0" @@ -17430,24 +18342,17 @@ "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "punycode": "^2.1.0" } }, - "node_modules/uri-js/node_modules/punycode": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", - "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, "node_modules/url-parse": { "version": "1.5.10", "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", "dev": true, + "license": "MIT", "dependencies": { "querystringify": "^2.1.1", "requires-port": "^1.0.0" @@ -17456,19 +18361,22 @@ "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "license": "MIT" }, "node_modules/v8-compile-cache": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.4.0.tgz", "integrity": "sha512-ocyWc3bAHBB/guyqJQVI5o4BZkPhznPYUG2ea80Gond/BgNWpap8TOmLSeeQG7bnh2KMISxskdADG59j7zruhw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/validate-npm-package-license": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", "dev": true, + "license": "Apache-2.0", "dependencies": { "spdx-correct": "^3.0.0", "spdx-expression-parse": "^3.0.0" @@ -17477,27 +18385,29 @@ "node_modules/value-equal": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/value-equal/-/value-equal-1.0.1.tgz", - "integrity": "sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw==" + "integrity": "sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw==", + "license": "MIT" }, "node_modules/vary": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.8" } }, "node_modules/vite": { - "version": "4.5.5", - "resolved": "https://registry.npmjs.org/vite/-/vite-4.5.5.tgz", - "integrity": "sha512-ifW3Lb2sMdX+WU91s3R0FyQlAyLxOzCSCP37ujw0+r5POeHPwe6udWVIElKQq8gk3t7b8rkmvqC6IHBpCff4GQ==", + "version": "4.5.9", + "resolved": "https://registry.npmjs.org/vite/-/vite-4.5.9.tgz", + "integrity": "sha512-qK9W4xjgD3gXbC0NmdNFFnVFLMWSNiR3swj957yutwzzN16xF/E7nmtAyp1rT9hviDroQANjE4HK3H4WqWdFtw==", "dev": true, "license": "MIT", "dependencies": { "esbuild": "^0.18.10", "postcss": "^8.4.27", - "rollup": "^3.29.5" + "rollup": "^3.27.1" }, "bin": { "vite": "bin/vite.js" @@ -17549,13 +18459,14 @@ "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-0.29.8.tgz", "integrity": "sha512-b6OtCXfk65L6SElVM20q5G546yu10/kNrhg08afEoWlFRJXFq9/6glsvSVY+aI6YeC1tu2TtAqI2jHEQmOmsFw==", "dev": true, + "license": "MIT", "dependencies": { "cac": "^6.7.14", "debug": "^4.3.4", "mlly": "^1.1.0", "pathe": "^1.1.0", "picocolors": "^1.0.0", - "vite": "^4.5.4" + "vite": "^3.0.0 || ^4.0.0" }, "bin": { "vite-node": "vite-node.mjs" @@ -17572,14 +18483,15 @@ "resolved": "https://registry.npmjs.org/vite-plugin-eslint/-/vite-plugin-eslint-1.8.1.tgz", "integrity": "sha512-PqdMf3Y2fLO9FsNPmMX+//2BF5SF8nEWspZdgl4kSt7UvHDRHVVfHvxsD7ULYzZrJDGRxR81Nq7TOFgwMnUang==", "dev": true, + "license": "MIT", "dependencies": { "@rollup/pluginutils": "^4.2.1", "@types/eslint": "^8.4.5", - "rollup": "^3.29.5" + "rollup": "^2.77.2" }, "peerDependencies": { "eslint": ">=7", - "vite": ">=4.5.4" + "vite": ">=2" } }, "node_modules/vite-plugin-eslint/node_modules/@rollup/pluginutils": { @@ -17587,6 +18499,7 @@ "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.2.1.tgz", "integrity": "sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==", "dev": true, + "license": "MIT", "dependencies": { "estree-walker": "^2.0.1", "picomatch": "^2.2.2" @@ -17595,17 +18508,47 @@ "node": ">= 8.0.0" } }, + "node_modules/vite-plugin-eslint/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/vite-plugin-eslint/node_modules/rollup": { + "version": "2.79.2", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.2.tgz", + "integrity": "sha512-fS6iqSPZDs3dr/y7Od6y5nha8dW1YnbgtsyotCVvoFGKbERG++CVRFv1meyGDE1SNItQA8BrnCw7ScdAhRJ3XQ==", + "dev": true, + "license": "MIT", + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=10.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, "node_modules/vite-plugin-svgr": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/vite-plugin-svgr/-/vite-plugin-svgr-2.4.0.tgz", "integrity": "sha512-q+mJJol6ThvqkkJvvVFEndI4EaKIjSI0I3jNFgSoC9fXAz1M7kYTVUin8fhUsFojFDKZ9VHKtX6NXNaOLpbsHA==", "dev": true, + "license": "MIT", "dependencies": { "@rollup/pluginutils": "^5.0.2", "@svgr/core": "^6.5.1" }, "peerDependencies": { - "vite": "^4.5.4" + "vite": "^2.6.0 || 3 || 4" } }, "node_modules/vitest": { @@ -17613,6 +18556,7 @@ "resolved": "https://registry.npmjs.org/vitest/-/vitest-0.29.8.tgz", "integrity": "sha512-JIAVi2GK5cvA6awGpH0HvH/gEG9PZ0a/WoxdiV3PmqK+3CjQMf8c+J/Vhv4mdZ2nRyXFw66sAg6qz7VNkaHfDQ==", "dev": true, + "license": "MIT", "dependencies": { "@types/chai": "^4.3.4", "@types/chai-subset": "^1.3.3", @@ -17635,7 +18579,7 @@ "tinybench": "^2.3.1", "tinypool": "^0.4.0", "tinyspy": "^1.0.2", - "vite": "^4.5.4", + "vite": "^3.0.0 || ^4.0.0", "vite-node": "0.29.8", "why-is-node-running": "^2.2.2" }, @@ -17690,6 +18634,7 @@ "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-4.0.0.tgz", "integrity": "sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==", "dev": true, + "license": "MIT", "dependencies": { "xml-name-validator": "^4.0.0" }, @@ -17700,13 +18645,15 @@ "node_modules/web-vitals": { "version": "3.5.2", "resolved": "https://registry.npmjs.org/web-vitals/-/web-vitals-3.5.2.tgz", - "integrity": "sha512-c0rhqNcHXRkY/ogGDJQxZ9Im9D19hDihbzSQJrsioex+KnFgmMzBiy57Z1EjkhX/+OjyBpclDCzz2ITtjokFmg==" + "integrity": "sha512-c0rhqNcHXRkY/ogGDJQxZ9Im9D19hDihbzSQJrsioex+KnFgmMzBiy57Z1EjkhX/+OjyBpclDCzz2ITtjokFmg==", + "license": "Apache-2.0" }, "node_modules/webidl-conversions": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", "dev": true, + "license": "BSD-2-Clause", "engines": { "node": ">=12" } @@ -17716,6 +18663,7 @@ "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz", "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==", "dev": true, + "license": "MIT", "dependencies": { "iconv-lite": "0.6.3" }, @@ -17723,23 +18671,12 @@ "node": ">=12" } }, - "node_modules/whatwg-encoding/node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "dev": true, - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/whatwg-mimetype": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz", "integrity": "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" } @@ -17749,6 +18686,7 @@ "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-12.0.1.tgz", "integrity": "sha512-Ed/LrqB8EPlGxjS+TrsXcpUond1mhccS3pchLhzSgPCnTimUCKj3IZE75pAs5m6heB2U2TMerKFUXheyHY+VDQ==", "dev": true, + "license": "MIT", "dependencies": { "tr46": "^4.1.1", "webidl-conversions": "^7.0.0" @@ -17762,6 +18700,7 @@ "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, + "license": "ISC", "dependencies": { "isexe": "^2.0.0" }, @@ -17773,39 +18712,45 @@ } }, "node_modules/which-boxed-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", - "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz", + "integrity": "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==", "dev": true, + "license": "MIT", "dependencies": { - "is-bigint": "^1.0.1", - "is-boolean-object": "^1.1.0", - "is-number-object": "^1.0.4", - "is-string": "^1.0.5", - "is-symbol": "^1.0.3" + "is-bigint": "^1.1.0", + "is-boolean-object": "^1.2.1", + "is-number-object": "^1.1.1", + "is-string": "^1.1.1", + "is-symbol": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/which-builtin-type": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.1.3.tgz", - "integrity": "sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.1.tgz", + "integrity": "sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==", "dev": true, + "license": "MIT", "dependencies": { - "function.prototype.name": "^1.1.5", - "has-tostringtag": "^1.0.0", + "call-bound": "^1.0.2", + "function.prototype.name": "^1.1.6", + "has-tostringtag": "^1.0.2", "is-async-function": "^2.0.0", - "is-date-object": "^1.0.5", - "is-finalizationregistry": "^1.0.2", + "is-date-object": "^1.1.0", + "is-finalizationregistry": "^1.1.0", "is-generator-function": "^1.0.10", - "is-regex": "^1.1.4", + "is-regex": "^1.2.1", "is-weakref": "^1.0.2", "isarray": "^2.0.5", - "which-boxed-primitive": "^1.0.2", - "which-collection": "^1.0.1", - "which-typed-array": "^1.1.9" + "which-boxed-primitive": "^1.1.0", + "which-collection": "^1.0.2", + "which-typed-array": "^1.1.16" }, "engines": { "node": ">= 0.4" @@ -17819,6 +18764,7 @@ "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", "dev": true, + "license": "MIT", "dependencies": { "is-map": "^2.0.3", "is-set": "^2.0.3", @@ -17833,15 +18779,17 @@ } }, "node_modules/which-typed-array": { - "version": "1.1.15", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", - "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", + "version": "1.1.18", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.18.tgz", + "integrity": "sha512-qEcY+KJYlWyLH9vNbsr6/5j59AXk5ni5aakf8ldzBvGde6Iz4sxZGkJyWSAueTG7QhOvNRYb1lDdFmL5Td0QKA==", "dev": true, + "license": "MIT", "dependencies": { "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", "for-each": "^0.3.3", - "gopd": "^1.0.1", + "gopd": "^1.2.0", "has-tostringtag": "^1.0.2" }, "engines": { @@ -17852,10 +18800,11 @@ } }, "node_modules/why-is-node-running": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.2.2.tgz", - "integrity": "sha512-6tSwToZxTOcotxHeA+qGCq1mVzKR3CwcJGmVcY+QE8SHy6TnpFnh8PAvPNHYr7EcuVeG0QSMxtYCuO1ta/G/oA==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.3.0.tgz", + "integrity": "sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==", "dev": true, + "license": "MIT", "dependencies": { "siginfo": "^2.0.0", "stackback": "0.0.2" @@ -17872,6 +18821,7 @@ "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-4.0.1.tgz", "integrity": "sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig==", "dev": true, + "license": "MIT", "dependencies": { "string-width": "^5.0.1" }, @@ -17882,102 +18832,129 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/widest-line/node_modules/ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", "dev": true, + "license": "MIT", "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" + "node": ">=0.10.0" } }, - "node_modules/widest-line/node_modules/string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", "dev": true, + "license": "MIT", "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", "strip-ansi": "^7.0.1" }, "engines": { "node": ">=12" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/widest-line/node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dev": true, + "license": "MIT", "dependencies": { - "ansi-regex": "^6.0.1" + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" }, "engines": { - "node": ">=12" + "node": ">=10" }, "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/word-wrap": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", - "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "dev": true, - "engines": { - "node": ">=0.10.0" - } + "license": "MIT" }, - "node_modules/wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "node_modules/wrap-ansi-cjs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, "license": "MIT", "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" }, "engines": { "node": ">=8" } }, - "node_modules/wrap-ansi-cjs": { - "name": "wrap-ansi", - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "node_modules/wrap-ansi/node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", "dev": true, + "license": "MIT", "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" + "ansi-regex": "^6.0.1" }, "engines": { - "node": ">=10" + "node": ">=12" }, "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "license": "ISC" }, "node_modules/write-file-atomic": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", "dev": true, + "license": "ISC", "dependencies": { "imurmurhash": "^0.1.4", "signal-exit": "^3.0.7" @@ -17991,6 +18968,7 @@ "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", "dev": true, + "license": "MIT", "engines": { "node": ">=10.0.0" }, @@ -18012,6 +18990,7 @@ "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz", "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==", "dev": true, + "license": "Apache-2.0", "engines": { "node": ">=12" } @@ -18020,19 +18999,22 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/xmlcreate": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/xmlcreate/-/xmlcreate-2.0.4.tgz", "integrity": "sha512-nquOebG4sngPmGPICTS5EnxqhKbCmz5Ox5hsszI2T6U5qdrJizBc+0ilYSEjTSzU0yZcmvppztXe/5Al5fUwdg==", - "dev": true + "dev": true, + "license": "Apache-2.0" }, "node_modules/y18n": { "version": "5.0.8", "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", "dev": true, + "license": "ISC", "engines": { "node": ">=10" } @@ -18041,13 +19023,15 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/yaml": { "version": "1.10.2", "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", "dev": true, + "license": "ISC", "engines": { "node": ">= 6" } @@ -18057,6 +19041,7 @@ "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", "dev": true, + "license": "MIT", "dependencies": { "cliui": "^8.0.1", "escalade": "^3.1.1", @@ -18075,15 +19060,39 @@ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", "dev": true, + "license": "ISC", "engines": { "node": ">=10" } }, + "node_modules/yargs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/yargs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/yargs/node_modules/yargs-parser": { "version": "21.1.1", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", "dev": true, + "license": "ISC", "engines": { "node": ">=12" } @@ -18093,6 +19102,7 @@ "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" }, @@ -18117,6 +19127,7 @@ "version": "3.7.2", "resolved": "https://registry.npmjs.org/zustand/-/zustand-3.7.2.tgz", "integrity": "sha512-PIJDIZKtokhof+9+60cpockVOq05sJzHCriyvaLBmEJixseQ1a5Kdov6fWZfWOu5SK9c+FhH1jU0tntLxRJYMA==", + "license": "MIT", "engines": { "node": ">=12.7.0" }, diff --git a/web/vtadmin/package.json b/web/vtadmin/package.json index 3d850fd1cc9..be7b819ede9 100644 --- a/web/vtadmin/package.json +++ b/web/vtadmin/package.json @@ -3,8 +3,8 @@ "version": "0.1.0", "private": true, "engines": { - "node": ">=20.12.0", - "npm": ">=10.5.0" + "node": ">=22.13.0", + "npm": ">=10.9.2" }, "dependencies": { "@bugsnag/js": "^7.20.0", @@ -17,7 +17,6 @@ "d3": "^7.9.0", "dayjs": "^1.11.7", "downshift": "^7.2.0", - "highcharts-react-official": "^3.1.0", "history": "^5.3.0", "lodash-es": "^4.17.21", "path-to-regexp": "^8.1.0", @@ -75,7 +74,7 @@ ] }, "devDependencies": { - "@rollup/plugin-commonjs": "^24.0.1", + "@rollup/plugin-commonjs": "^28.0.2", "@testing-library/jest-dom": "^5.11.9", "@testing-library/react": "^11.2.5", "@testing-library/react-hooks": "^5.0.3", @@ -91,17 +90,17 @@ "i": "^0.3.7", "jsdom": "^21.1.1", "msw": "^2.5.2", - "npm": "^10.8.0", + "npm": "^10.9.2", "postcss": "^8.4.31", "prettier": "^2.2.1", - "protobufjs-cli": "^1.1.1", + "protobufjs-cli": "^1.1.3", "serve": "^14.2.0", "stylelint": "^14.4.0", "stylelint-config-prettier": "^9.0.3", "stylelint-config-standard-scss": "^3.0.0", "tailwindcss": "^3.0.18", "typescript": "^5.0.2", - "vite": "^4.5.3", + "vite": "^4.5.6", "vite-plugin-eslint": "^1.8.1", "vite-plugin-svgr": "^2.4.0", "vitest": "^0.29.8" diff --git a/web/vtadmin/src/api/http.ts b/web/vtadmin/src/api/http.ts index 674df961ef0..846f929ec52 100644 --- a/web/vtadmin/src/api/http.ts +++ b/web/vtadmin/src/api/http.ts @@ -636,6 +636,22 @@ export const fetchVTExplain = async ({ cluster, return pb.VTExplainResponse.create(result); }; +export const fetchVExplain = async ({ cluster_id, keyspace, sql }: R) => { + // As an easy enhancement for later, we can also validate the request parameters on the front-end + // instead of defaulting to '', to save a round trip. + const req = new URLSearchParams(); + req.append('cluster_id', cluster_id || ''); + req.append('keyspace', keyspace || ''); + req.append('sql', sql || ''); + + const { result } = await vtfetch(`/api/vexplain?${req}`); + + const err = pb.VExplainResponse.verify(result); + if (err) throw Error(err); + + return pb.VExplainResponse.create(result); +}; + export interface ValidateKeyspaceParams { clusterID: string; keyspace: string; diff --git a/web/vtadmin/src/components/App.tsx b/web/vtadmin/src/components/App.tsx index fd0f772ae19..e9f4bbb1844 100644 --- a/web/vtadmin/src/components/App.tsx +++ b/web/vtadmin/src/components/App.tsx @@ -30,6 +30,7 @@ import { Stream } from './routes/stream/Stream'; import { Workflows } from './routes/Workflows'; import { Workflow } from './routes/workflow/Workflow'; import { VTExplain } from './routes/VTExplain'; +import { VExplain } from './routes/VExplain'; import { Keyspace } from './routes/keyspace/Keyspace'; import { Tablet } from './routes/tablet/Tablet'; import { Backups } from './routes/Backups'; @@ -113,6 +114,10 @@ export const App = () => { + + + + diff --git a/web/vtadmin/src/components/NavRail.tsx b/web/vtadmin/src/components/NavRail.tsx index b30cd165684..c5e0c528bdd 100644 --- a/web/vtadmin/src/components/NavRail.tsx +++ b/web/vtadmin/src/components/NavRail.tsx @@ -77,6 +77,9 @@ export const NavRail = () => {
  • +
  • + +
  • diff --git a/web/vtadmin/src/components/dataTable/SortedDataTable.test.tsx b/web/vtadmin/src/components/dataTable/SortedDataTable.test.tsx new file mode 100755 index 00000000000..554a7e2040d --- /dev/null +++ b/web/vtadmin/src/components/dataTable/SortedDataTable.test.tsx @@ -0,0 +1,60 @@ +/** + * Copyright 2025 The Vitess Authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { describe, expect, it } from 'vitest'; +import { JSX } from 'react/jsx-runtime'; +import { SortedDataTable } from './SortedDataTable'; +import { fireEvent, render, screen } from '@testing-library/react'; +import { MemoryRouter } from 'react-router-dom'; + +describe('SortedDataTable', () => { + it('SortedDataTable renders successfully', () => { + const columnProps = [ + { display: 'col1', accessor: 'col1' }, + { display:
    col2
    , accessor: 'a_col2' }, + ]; + const testData = [ + { col1: 'dcol1', a_col2: '20' }, + { col1: 'dcol11', a_col2: '10' }, + ]; + + render( + + { + return ( + + {item.col1} {item.col2} + + ); + }); + }} + /> + + ); + expect(screen.getAllByRole('table').length).toBe(1); + expect(screen.getAllByRole('row').length).toBe(3); + expect(screen.getAllByRole('columnheader').length).toBe(2); + + // Check onClick on column + const column1 = screen.getByText('col1'); + fireEvent.click(column1); + // dependency on vite-jest to check useState sortColumn if col1 gets set. + }); +}); diff --git a/web/vtadmin/src/components/dataTable/SortedDataTable.tsx b/web/vtadmin/src/components/dataTable/SortedDataTable.tsx new file mode 100644 index 00000000000..a8766aa9ee3 --- /dev/null +++ b/web/vtadmin/src/components/dataTable/SortedDataTable.tsx @@ -0,0 +1,170 @@ +/** + * Copyright 2025 The Vitess Authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import * as React from 'react'; +import { useLocation } from 'react-router-dom'; + +import { useURLPagination } from '../../hooks/useURLPagination'; +import { useURLQuery } from '../../hooks/useURLQuery'; +import { stringify } from '../../util/queryString'; +import { PaginationNav } from './PaginationNav'; +import { useCallback, useMemo, useState } from 'react'; +import { Icon, Icons } from '../Icon'; + +export interface ColumnProps { + // Coulmn display name string | JSX.Element + display: string | JSX.Element; + // Column data accessor + accessor: string; +} + +interface Props { + // When passing a JSX.Element, note that the column element + // will be rendered *inside* a tag. (Note: I don't love this + // abstraction + we'll likely want to revisit this when we add + // table sorting.) + columns: Array; + data: T[]; + pageSize?: number; + renderRows: (rows: T[]) => JSX.Element[]; + title?: string; + // Pass a unique `pageKey` for each DataTable, in case multiple + // DataTables access the same URL. This will be used to + // access page number from the URL. + pageKey?: string; +} + +type SortOrder = 'asc' | 'desc'; + +// Generally, page sizes of ~100 rows are fine in terms of performance, +// but anything over ~50 feels unwieldy in terms of UX. +const DEFAULT_PAGE_SIZE = 50; + +export const SortedDataTable = ({ + columns, + data, + pageSize = DEFAULT_PAGE_SIZE, + renderRows, + title, + pageKey = '', +}: Props) => { + const { pathname } = useLocation(); + const urlQuery = useURLQuery(); + + const pageQueryKey = `${pageKey}page`; + + const totalPages = Math.ceil(data.length / pageSize); + const { page } = useURLPagination({ totalPages, pageQueryKey }); + + const startIndex = (page - 1) * pageSize; + const endIndex = startIndex + pageSize; + + const startRow = startIndex + 1; + const lastRow = Math.min(data.length, startIndex + pageSize); + + const formatPageLink = (p: number) => ({ + pathname, + search: stringify({ ...urlQuery.query, [pageQueryKey]: p === 1 ? undefined : p }), + }); + + const [sortColumn, setSortColumn] = useState(null); + const [sortOrder, setSortOrder] = useState('asc'); + + const handleSort = useCallback( + (column: any) => { + if (sortColumn === column) { + setSortOrder(sortOrder === 'asc' ? 'desc' : 'asc'); + } else { + setSortColumn(column); + setSortOrder('asc'); + } + }, + [sortColumn, sortOrder] + ); + + const sortedData = useMemo(() => { + if (!sortColumn) return data; + + const compare = (a: { [x: string]: any }, b: { [x: string]: any }) => { + const valueA = a[sortColumn]; + const valueB = b[sortColumn]; + + if (valueA < valueB) { + return sortOrder === 'asc' ? -1 : 1; + } else if (valueA > valueB) { + return sortOrder === 'asc' ? 1 : -1; + } else { + return 0; + } + }; + + return [...data].sort(compare); + }, [data, sortColumn, sortOrder]); + + const dataPage = sortedData.slice(startIndex, endIndex); + + return ( +
    + + {title && } + + + {columns.map((col, cdx) => ( + + ))} + + + {renderRows(dataPage)} +
    {title}
    + + + {!!data.length && ( +

    + Showing {startRow} {lastRow > startRow ? `- ${lastRow}` : null} of {data.length} +

    + )} +
    + ); +}; + +type SortTableHeaderProps = { + col: ColumnProps; + cdx: number; + sortOrder: SortOrder; + sortColumn: null | string; + handleSort: (column: any) => void; +}; + +const SortTableHeader: React.FC = ({ col, cdx, sortOrder, sortColumn, handleSort }) => { + const upFillColor = sortOrder === 'asc' && sortColumn === col.accessor ? 'fill-current' : 'fill-gray-300'; + const downFillColor = sortOrder !== 'asc' && sortColumn === col.accessor ? 'fill-current' : 'fill-gray-300'; + return ( + handleSort(col.accessor)}> +
    +
    {col.display}
    +
    + + +
    +
    + + ); +}; diff --git a/web/vtadmin/src/components/routes/Schemas.tsx b/web/vtadmin/src/components/routes/Schemas.tsx index fff3bb8b2db..5da3870efbc 100644 --- a/web/vtadmin/src/components/routes/Schemas.tsx +++ b/web/vtadmin/src/components/routes/Schemas.tsx @@ -25,7 +25,7 @@ import { formatBytes } from '../../util/formatBytes'; import { getTableDefinitions } from '../../util/tableDefinitions'; import { DataCell } from '../dataTable/DataCell'; import { DataFilter } from '../dataTable/DataFilter'; -import { DataTable } from '../dataTable/DataTable'; +import { ColumnProps, SortedDataTable } from '../dataTable/SortedDataTable'; import { ContentContainer } from '../layout/ContentContainer'; import { WorkspaceHeader } from '../layout/WorkspaceHeader'; import { WorkspaceTitle } from '../layout/WorkspaceTitle'; @@ -33,31 +33,43 @@ import { KeyspaceLink } from '../links/KeyspaceLink'; import { QueryLoadingPlaceholder } from '../placeholders/QueryLoadingPlaceholder'; import { HelpTooltip } from '../tooltip/HelpTooltip'; -const TABLE_COLUMNS = [ - 'Keyspace', - 'Table', -
    - Approx. Size{' '} - - Size is an approximate value derived from INFORMATION_SCHEMA. - - } - /> -
    , -
    - Approx. Rows{' '} - - Row count is an approximate value derived from INFORMATION_SCHEMA - . Actual values may vary by as much as 40% to 50%. - - } - /> -
    , +const TABLE_COLUMNS: Array = [ + { display: 'Keyspace', accessor: 'keyspace' }, + { display: 'Table', accessor: 'table' }, + { + display: ( +
    + Approx. Size{' '} + + Size is an approximate value derived from{' '} + INFORMATION_SCHEMA. + + } + /> +
    + ), + accessor: '_tableSize', + }, + { + display: ( +
    + Approx. Rows{' '} + + Row count is an approximate value derived from{' '} + INFORMATION_SCHEMA. Actual values may vary by as much as + 40% to 50%. + + } + /> +
    + ), + accessor: '_tableRowCount', + }, ]; export const Schemas = () => { @@ -74,6 +86,8 @@ export const Schemas = () => { clusterID: d.cluster?.id, keyspace: d.keyspace, table: d.tableDefinition?.name, + _tableSize: d.tableSize?.data_length || 0, + _tableRowCount: d.tableSize?.row_count || 0, _raw: d, })); @@ -96,13 +110,13 @@ export const Schemas = () => { {href ? {row.table} : row.table} - +
    {formatBytes(row._raw.tableSize?.data_length)}
    {formatBytes(row._raw.tableSize?.data_length, 'B')}
    - {(row._raw.tableSize?.row_count || 0).toLocaleString()} + {(row._raw.tableSize?.row_count || 0).toLocaleString()} ); }); @@ -120,7 +134,7 @@ export const Schemas = () => { placeholder="Filter schemas" value={filter || ''} /> - + diff --git a/web/vtadmin/src/components/routes/VExplain.tsx b/web/vtadmin/src/components/routes/VExplain.tsx new file mode 100644 index 00000000000..06969e63ca3 --- /dev/null +++ b/web/vtadmin/src/components/routes/VExplain.tsx @@ -0,0 +1,153 @@ +/** + * Copyright 2025 The Vitess Authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import React, { useMemo } from 'react'; +import { orderBy } from 'lodash-es'; + +import { vtadmin as pb } from '../../proto/vtadmin'; +import { useKeyspaces, useVExplain } from '../../hooks/api'; +import { Select } from '../inputs/Select'; +import { ContentContainer } from '../layout/ContentContainer'; +import { WorkspaceHeader } from '../layout/WorkspaceHeader'; +import { WorkspaceTitle } from '../layout/WorkspaceTitle'; +import style from './VTExplain.module.scss'; +import { Code } from '../Code'; +import { useDocumentTitle } from '../../hooks/useDocumentTitle'; +import { Label } from '../inputs/Label'; + +export const VExplain = () => { + useDocumentTitle('VExplain'); + + const { data: keyspaces = [] } = useKeyspaces(); + + const [clusterID, updateCluster] = React.useState(null); + const [keyspaceName, updateKeyspace] = React.useState(null); + const [sql, updateSQL] = React.useState(null); + const [vexplainOption, updateVExplainOption] = React.useState('ALL'); + + const fetchVExplainRequestSql = function () { + return 'VEXPLAIN ' + vexplainOption + ' ' + sql; + }; + + const selectedKeyspace = + clusterID && keyspaceName + ? keyspaces?.find((k) => k.cluster?.id === clusterID && k.keyspace?.name === keyspaceName) + : null; + + const { data, error, refetch } = useVExplain( + { cluster_id: clusterID, keyspace: keyspaceName, sql: fetchVExplainRequestSql() }, + { + // Never cache, never refetch. + cacheTime: 0, + enabled: false, + refetchOnWindowFocus: false, + retry: false, + } + ); + + const onChangeKeyspace = (selectedKeyspace: pb.Keyspace | null | undefined) => { + updateCluster(selectedKeyspace?.cluster?.id); + updateKeyspace(selectedKeyspace?.keyspace?.name); + updateSQL(null); + }; + + const onChangeSQL: React.ChangeEventHandler = (e) => { + updateSQL(e.target.value); + }; + + const onSubmit: React.FormEventHandler = (e) => { + e.preventDefault(); + refetch(); + }; + + const VEXPLAIN_OPTIONS = ['ALL', 'PLAN', 'QUERIES', 'TRACE', 'KEYS']; + + const isReadyForSubmit = useMemo(() => { + return ( + typeof keyspaceName !== 'undefined' && + keyspaceName !== null && + keyspaceName !== '' && + typeof sql !== 'undefined' && + sql !== null && + sql !== '' + ); + }, [keyspaceName, sql]); + + return ( +
    + + VExplain + + +
    +
    +
    +